(no error appear in Freebasic compilation)
compiler command : "<$fbc>" "<$file>" -arch x86-64
Code: Select all
screenres 800,600,32
dim as single num1(0 to 19),num2(0 to 19),num3(0 to 19)
num1(0)=1.1
num1(1)=3.3
num1(2)=5.5
num1(3)=7.7
num1(4)=9.9
num1(5)=11.1
num1(6)=13.3
num1(7)=15.5 ' end of ymm
num1(8)=17.7 ' out of ymm
num2(0)=2.2
num2(1)=4.4
num2(2)=6.6
num2(3)=8.8
num2(4)=10.0
num2(5)=12.2
num2(6)=14.4
num2(7)=16.6 ' end of ymm
num2(8)=20.0 ' out of ymm
asm
vmovups ymm0,ymmword ptr[num1]
vmovups ymm1,ymmword ptr[num2]
vaddps ymm2,ymm0,ymm1
vmovups ymmword ptr[num3],ymm2
end asm
'asm
' vmovups zmm0,zmmword ptr[num1]
' vmovups zmm1,zmmword ptr[num2]
' vaddps zmm2,zmm0,zmm1
' vmovups zmmword ptr[num3],zmm2
'end asm
?:?" 8 Single float addition test with YMM register"
?
?:? num1(0);" +";num2(0);" =";num3(0);" -> first addition, it's the beginning of YMM register"
?:? num1(1);" +";num2(1);" =";num3(1)
?:? num1(2);" +";num2(2);" =";num3(2)
?:? num1(3);" +";num2(3);" =";num3(3)
?:? num1(4);" +";num2(4);" =";num3(4)
?:? num1(5);" +";num2(5);" =";num3(5)
?:? num1(6);" +";num2(6);" =";num3(6)
?:? num1(7);" +";num2(7);" =";num3(7);" -> last addition because it's the end of YMM register"
?:? num1(8);" +";num2(8);" =";num3(8);" -> no addition because it's outside of YMM register"
sleep