- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm observing some run-time/compile issues with the use of the VPMOVSXWD instruction.When code is compiled with early ICL11.1.035 (beta)codecompiles fine but get run-time error (Illegal Instruction Excep...).
Now when/if I use ICL11.1.065 or latest 12.0, code fails to compile with the error msg; "Unsupported instruction form in asm instruction vpmovsxwd."
Here ishow I'm using the instruction:
movesi,ptrSrc
vpmovdqa xmm1, [esi]
vpmovsxwd ymm1,xmm1 //<-- yields run-time erroror compiler error
Manualreference use for instruction is:
VPMOVSXWD ymm1, xmm2/m128-- VEX.256.66.0F38 23 /r V/V AVX_1_x Sign extend 8 packed 16-bit integers in the low 16 bytes of xmm2/m128 to 8 packed 32-bit integers in ymm1
I'm observing some run-time/compile issues with the use of the VPMOVSXWD instruction.When code is compiled with early ICL11.1.035 (beta)codecompiles fine but get run-time error (Illegal Instruction Excep...).
Now when/if I use ICL11.1.065 or latest 12.0, code fails to compile with the error msg; "Unsupported instruction form in asm instruction vpmovsxwd."
Here ishow I'm using the instruction:
movesi,ptrSrc
vpmovdqa xmm1, [esi]
vpmovsxwd ymm1,xmm1 //<-- yields run-time erroror compiler error
Manualreference use for instruction is:
VPMOVSXWD ymm1, xmm2/m128-- VEX.256.66.0F38 23 /r V/V AVX_1_x Sign extend 8 packed 16-bit integers in the low 16 bytes of xmm2/m128 to 8 packed 32-bit integers in ymm1
The main question here is why I can compile with earlier version of compiler that has AVX support but code fails at run-time?
Is code failing to compile with latest compiler (11.1.065 or 12.0) due to manner in which ASM is being used (eg. loading xmm1 with double-quad words instead of native 16-bit ints)
or
AVX support for this instruction is now disallowed?
Appreciate your feedback.
Thanks,
Eli
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Don't know which spec you are looking at, but pmovsx instruction is integer instruction and AVX 256 bit is only for FP instruction. so you can't encode it for 256 bits
In short, the instruction format you are trying is not legal, try pmovsxwd xmm1,xmm1
In short, the instruction format you are trying is not legal, try pmovsxwd xmm1,xmm1
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As Neni said this instruction is 128bit only with VEX perfix
vpmovsxwd xmm1, xmm2/m64.
It may have passed earlier version of compilers but latest compiler is right in catching it at compile time.
vpmovsxwd xmm1, xmm2/m64.
It may have passed earlier version of compilers but latest compiler is right in catching it at compile time.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page