Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

Possible issues with VPMOVSXWD (VEX.256)

Eli_H_Intel
Employee
461 Views
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


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

0 Kudos
2 Replies
neni
New Contributor II
461 Views
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
0 Kudos
Brijender_B_Intel
461 Views
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.
0 Kudos
Reply