Hi habran and jhonsa!
Using OPTION EVEX:0 still macro LOADSS result in:CPU Disasm
Address Hex dump Command Comments
013C132B |. A1 AC313C01 MOV EAX,DWORD PTR DS:[13C31AC]
013C1330 |. C5F9:6EC8 VMOVD XMM1,EAX
013C1334 |. A1 B0313C01 MOV EAX,DWORD PTR DS:[13C31B0]
013C1339 |. C5F9:6EC0 VMOVD XMM0,EAX
Regards, HSE
Hi HSE,
this is from UASM Extended Manual:
Quote
2.13) OPTION ARCH:{SSE|AVX}
This setting determines which instruction set should be used for any automatically generated code.
This includes prologue, epilogue, invoke as well as the built-in macro library.
For example the LOADSS built-in macro would be coded under SSE as :
mov eax,floatLiteral
movd xmmReg,eax
But under AVX it would use vmovd instead.
This setting is also available through command line switches –archSSE and –archAVX.
The default setting is to use the SSE instruction set.
The currently selected architected is also available through the built-in variable @Arch.
If you're not specifying arch AVX, it should be using MOVD by default. That would be a bug in this case, please confirm.
Just confirmed using AW's test piece, with option ARCH:SSE the correct MOVD is produced. ARCH:AVX is the default so without that option set you will use vmovd/q.