Illegal vgatherdps instruction on a processor supporting AVX2

I am developing a code generator for AVX2 instructions and trying to test it on an AMD A10 8700 processor, which should run AVX2 according to specifications.

However, it crashes with vgatherdps's illegal instruction statement:

vmovdqu     yMM0,  [ r9+  PmainBase +  -256]; LDdqyy;0
lea         r9,    [      PmainBase +  -192];0
vpcmpeqw    ymm8, ymm8, ymm8;0
vgatherdps  YMM0,  [ r9+ yMM0*4 ] ,ymm8;0

The cpuid info says avx2 is on, so VGATHERDPS should be legal.

Any clues?

+4
source share
2 answers

According to Intel instruction manual :

If any pair of indexes, masks, or destination registers are the same, this command raises a UD error.

(ymm0). . , . , .


, .

  • .
  • , , .

. , . , . - , , .

, , .

+3

vmovdqu   yMM4,  [   PmainBase +          -256]; LDdqyy;0
lea r8,[   PmainBase +          -192];0
vpcmpeqw ymm8, ymm8, ymm8;0
vgatherdps  YMM0,[r8+ yMM4*4 ] ,ymm8;0

.

+1

Source: https://habr.com/ru/post/1655047/


All Articles