63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
|
|
if ~ defined AVX_512
|
|
|
|
include 'avx512f.inc'
|
|
|
|
end if
|
|
|
|
iterate <instr,postbyte>, gatherpf0,1 ,gatherpf1,2 ,scatterpf0,5, scatterpf1,6
|
|
|
|
macro v#instr#dps? src*
|
|
AVX_512.parse_k1_vsib_operand@src src
|
|
if @src.type = 'mem' & @src.mask
|
|
if @src.size and not 4 | @src.visize <> 64
|
|
err 'invalid operand size'
|
|
end if
|
|
@src.memsize = 4
|
|
AVX_512.store_instruction@src 64,VEX_66_0F38_W0,EVEX_REQUIRED,0C6h,@src.mask,postbyte,@src.index and 10000b
|
|
else
|
|
err 'invalid combination of operands'
|
|
end if
|
|
end macro
|
|
|
|
macro v#instr#qps? src*
|
|
AVX_512.parse_k1_vsib_operand@src src
|
|
if @src.type = 'mem' & @src.mask
|
|
if @src.size and not 8 | @src.visize <> 64
|
|
err 'invalid operand size'
|
|
end if
|
|
@src.memsize = 4
|
|
AVX_512.store_instruction@src 64,VEX_66_0F38_W0,EVEX_REQUIRED,0C7h,@src.mask,postbyte,@src.index and 10000b
|
|
else
|
|
err 'invalid combination of operands'
|
|
end if
|
|
end macro
|
|
|
|
macro v#instr#dpd? src*
|
|
AVX_512.parse_k1_vsib_operand@src src
|
|
if @src.type = 'mem' & @src.mask
|
|
if @src.size and not 4 | @src.visize <> 32
|
|
err 'invalid operand size'
|
|
end if
|
|
@src.memsize = 8
|
|
AVX_512.store_instruction@src 64,VEX_66_0F38_W1,EVEX_REQUIRED,0C6h,@src.mask,postbyte,@src.index and 10000b
|
|
else
|
|
err 'invalid combination of operands'
|
|
end if
|
|
end macro
|
|
|
|
macro v#instr#qpd? src*
|
|
AVX_512.parse_k1_vsib_operand@src src
|
|
if @src.type = 'mem' & @src.mask
|
|
if @src.size and not 8 | @src.visize <> 64
|
|
err 'invalid operand size'
|
|
end if
|
|
@src.memsize = 8
|
|
AVX_512.store_instruction@src 64,VEX_66_0F38_W1,EVEX_REQUIRED,0C7h,@src.mask,postbyte,@src.index and 10000b
|
|
else
|
|
err 'invalid combination of operands'
|
|
end if
|
|
end macro
|
|
|
|
end iterate
|