forked from OSchip/llvm-project
AVX-512: added all SKX forms of VPERMW/D/Q instructions.
Added all forms of VPERMPS/PD instrcuctions. Added encoding tests. llvm-svn: 239016
This commit is contained in:
parent
38eb9f46db
commit
4078c75bd4
|
@ -1047,12 +1047,6 @@ multiclass avx512_permil<bits<8> OpcImm, bits<8> OpcVar, X86VectorVTInfo _,
|
|||
EVEX_4V;
|
||||
}
|
||||
}
|
||||
|
||||
defm VPERMQZ : avx512_perm_imm<0x00, "vpermq", X86VPermi, v8i64_info>,
|
||||
EVEX_V512, VEX_W;
|
||||
defm VPERMPDZ : avx512_perm_imm<0x01, "vpermpd", X86VPermi, v8f64_info>,
|
||||
EVEX_V512, VEX_W;
|
||||
|
||||
defm VPERMILPSZ : avx512_permil<0x04, 0x0C, v16f32_info, v16i32_info>,
|
||||
EVEX_V512;
|
||||
defm VPERMILPDZ : avx512_permil<0x05, 0x0D, v8f64_info, v8i64_info>,
|
||||
|
@ -1063,37 +1057,6 @@ def : Pat<(v16i32 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
|||
def : Pat<(v8i64 (X86VPermilpi VR512:$src1, (i8 imm:$imm))),
|
||||
(VPERMILPDZri VR512:$src1, imm:$imm)>;
|
||||
|
||||
// -- VPERM - register form --
|
||||
multiclass avx512_perm<bits<8> opc, string OpcodeStr, RegisterClass RC,
|
||||
PatFrag mem_frag, X86MemOperand x86memop, ValueType OpVT> {
|
||||
|
||||
def rr : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
|
||||
(ins RC:$src1, RC:$src2),
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
|
||||
[(set RC:$dst,
|
||||
(OpVT (X86VPermv RC:$src1, RC:$src2)))]>, EVEX_4V;
|
||||
|
||||
def rm : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
|
||||
(ins RC:$src1, x86memop:$src2),
|
||||
!strconcat(OpcodeStr,
|
||||
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
|
||||
[(set RC:$dst,
|
||||
(OpVT (X86VPermv RC:$src1, (mem_frag addr:$src2))))]>,
|
||||
EVEX_4V;
|
||||
}
|
||||
|
||||
defm VPERMDZ : avx512_perm<0x36, "vpermd", VR512, loadv16i32, i512mem,
|
||||
v16i32>, EVEX_V512, EVEX_CD8<32, CD8VF>;
|
||||
defm VPERMQZ : avx512_perm<0x36, "vpermq", VR512, loadv8i64, i512mem,
|
||||
v8i64>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VF>;
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm VPERMPSZ : avx512_perm<0x16, "vpermps", VR512, loadv16f32, f512mem,
|
||||
v16f32>, EVEX_V512, EVEX_CD8<32, CD8VF>;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm VPERMPDZ : avx512_perm<0x16, "vpermpd", VR512, loadv8f64, f512mem,
|
||||
v8f64>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VF>;
|
||||
|
||||
// -- VPERM2I - 3 source operands form --
|
||||
multiclass avx512_perm_3src<bits<8> opc, string OpcodeStr, RegisterClass RC,
|
||||
PatFrag mem_frag, X86MemOperand x86memop,
|
||||
|
@ -3839,7 +3802,8 @@ multiclass avx512_var_shift<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
|||
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
|
||||
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
|
||||
"$src2, $src1", "$src1, $src2",
|
||||
(_.VT (OpNode _.RC:$src1, (_.LdFrag addr:$src2))),
|
||||
(_.VT (OpNode _.RC:$src1,
|
||||
(_.VT (bitconvert (_.LdFrag addr:$src2))))),
|
||||
SSE_INTSHIFT_ITINS_P.rm>, AVX5128IBase, EVEX_4V,
|
||||
EVEX_CD8<_.EltSize, CD8VF>;
|
||||
}
|
||||
|
@ -3901,6 +3865,54 @@ defm VPSRLV : avx512_var_shift_types<0x45, "vpsrlv", srl>,
|
|||
defm VPRORV : avx512_var_shift_types<0x14, "vprorv", rotr>;
|
||||
defm VPROLV : avx512_var_shift_types<0x15, "vprolv", rotl>;
|
||||
|
||||
//===-------------------------------------------------------------------===//
|
||||
// 1-src variable permutation VPERMW/D/Q
|
||||
//===-------------------------------------------------------------------===//
|
||||
multiclass avx512_vperm_dq_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
||||
AVX512VLVectorVTInfo _> {
|
||||
let Predicates = [HasAVX512] in
|
||||
defm Z : avx512_var_shift<opc, OpcodeStr, OpNode, _.info512>,
|
||||
avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
|
||||
|
||||
let Predicates = [HasAVX512, HasVLX] in
|
||||
defm Z256 : avx512_var_shift<opc, OpcodeStr, OpNode, _.info256>,
|
||||
avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
|
||||
}
|
||||
|
||||
multiclass avx512_vpermi_dq_sizes<bits<8> opc, Format ImmFormR, Format ImmFormM,
|
||||
string OpcodeStr, SDNode OpNode,
|
||||
AVX512VLVectorVTInfo VTInfo> {
|
||||
let Predicates = [HasAVX512] in
|
||||
defm Z: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
|
||||
VTInfo.info512>,
|
||||
avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
|
||||
VTInfo.info512>, EVEX_V512;
|
||||
let Predicates = [HasAVX512, HasVLX] in
|
||||
defm Z256: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
|
||||
VTInfo.info256>,
|
||||
avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
|
||||
VTInfo.info256>, EVEX_V256;
|
||||
}
|
||||
|
||||
|
||||
defm VPERM : avx512_var_shift_w<0x8D, "vpermw", X86VPermv>;
|
||||
|
||||
defm VPERMD : avx512_vperm_dq_sizes<0x36, "vpermd", X86VPermv,
|
||||
avx512vl_i32_info>;
|
||||
defm VPERMQ : avx512_vperm_dq_sizes<0x36, "vpermq", X86VPermv,
|
||||
avx512vl_i64_info>, VEX_W;
|
||||
defm VPERMPS : avx512_vperm_dq_sizes<0x16, "vpermps", X86VPermv,
|
||||
avx512vl_f32_info>;
|
||||
defm VPERMPD : avx512_vperm_dq_sizes<0x16, "vpermpd", X86VPermv,
|
||||
avx512vl_f64_info>, VEX_W;
|
||||
|
||||
defm VPERMQ : avx512_vpermi_dq_sizes<0x00, MRMSrcReg, MRMSrcMem, "vpermq",
|
||||
X86VPermi, avx512vl_i64_info>,
|
||||
EVEX, AVX512AIi8Base, EVEX_CD8<64, CD8VF>, VEX_W;
|
||||
defm VPERMPD : avx512_vpermi_dq_sizes<0x01, MRMSrcReg, MRMSrcMem, "vpermpd",
|
||||
X86VPermi, avx512vl_f64_info>,
|
||||
EVEX, AVX512AIi8Base, EVEX_CD8<64, CD8VF>, VEX_W;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AVX-512 - VPSHUFD, VPSHUFLW, VPSHUFHW
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -8408,3 +8408,347 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2
|
|||
// CHECK: encoding: [0x62,0xf3,0xfd,0x50,0x43,0x9a,0xf8,0xfb,0xff,0xff,0x7b]
|
||||
vshufi64x2 $123, -1032(%rdx){1to8}, %zmm16, %zmm3
|
||||
|
||||
// CHECK: vpermps %zmm24, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0x92,0x6d,0x48,0x16,0xe0]
|
||||
vpermps %zmm24, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps %zmm24, %zmm2, %zmm4 {%k4}
|
||||
// CHECK: encoding: [0x62,0x92,0x6d,0x4c,0x16,0xe0]
|
||||
vpermps %zmm24, %zmm2, %zmm4 {%k4}
|
||||
|
||||
// CHECK: vpermps %zmm24, %zmm2, %zmm4 {%k4} {z}
|
||||
// CHECK: encoding: [0x62,0x92,0x6d,0xcc,0x16,0xe0]
|
||||
vpermps %zmm24, %zmm2, %zmm4 {%k4} {z}
|
||||
|
||||
// CHECK: vpermps (%rcx), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x21]
|
||||
vpermps (%rcx), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps 291(%rax,%r14,8), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xb2,0x6d,0x48,0x16,0xa4,0xf0,0x23,0x01,0x00,0x00]
|
||||
vpermps 291(%rax,%r14,8), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps (%rcx){1to16}, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x21]
|
||||
vpermps (%rcx){1to16}, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps 8128(%rdx), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x62,0x7f]
|
||||
vpermps 8128(%rdx), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps 8192(%rdx), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0xa2,0x00,0x20,0x00,0x00]
|
||||
vpermps 8192(%rdx), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps -8192(%rdx), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0x62,0x80]
|
||||
vpermps -8192(%rdx), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps -8256(%rdx), %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x48,0x16,0xa2,0xc0,0xdf,0xff,0xff]
|
||||
vpermps -8256(%rdx), %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps 508(%rdx){1to16}, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x62,0x7f]
|
||||
vpermps 508(%rdx){1to16}, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps 512(%rdx){1to16}, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0xa2,0x00,0x02,0x00,0x00]
|
||||
vpermps 512(%rdx){1to16}, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps -512(%rdx){1to16}, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0x62,0x80]
|
||||
vpermps -512(%rdx){1to16}, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermps -516(%rdx){1to16}, %zmm2, %zmm4
|
||||
// CHECK: encoding: [0x62,0xf2,0x6d,0x58,0x16,0xa2,0xfc,0xfd,0xff,0xff]
|
||||
vpermps -516(%rdx){1to16}, %zmm2, %zmm4
|
||||
|
||||
// CHECK: vpermq $171, %zmm4, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0xcc,0xab]
|
||||
vpermq $171, %zmm4, %zmm25
|
||||
|
||||
// CHECK: vpermq $171, %zmm4, %zmm25 {%k6}
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x4e,0x00,0xcc,0xab]
|
||||
vpermq $171, %zmm4, %zmm25 {%k6}
|
||||
|
||||
// CHECK: vpermq $171, %zmm4, %zmm25 {%k6} {z}
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0xce,0x00,0xcc,0xab]
|
||||
vpermq $171, %zmm4, %zmm25 {%k6} {z}
|
||||
|
||||
// CHECK: vpermq $123, %zmm4, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0xcc,0x7b]
|
||||
vpermq $123, %zmm4, %zmm25
|
||||
|
||||
// CHECK: vpermq $123, (%rcx), %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x09,0x7b]
|
||||
vpermq $123, (%rcx), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, 291(%rax,%r14,8), %zmm25
|
||||
// CHECK: encoding: [0x62,0x23,0xfd,0x48,0x00,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b]
|
||||
vpermq $123, 291(%rax,%r14,8), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, (%rcx){1to8}, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x09,0x7b]
|
||||
vpermq $123, (%rcx){1to8}, %zmm25
|
||||
|
||||
// CHECK: vpermq $123, 8128(%rdx), %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x4a,0x7f,0x7b]
|
||||
vpermq $123, 8128(%rdx), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, 8192(%rdx), %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x8a,0x00,0x20,0x00,0x00,0x7b]
|
||||
vpermq $123, 8192(%rdx), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, -8192(%rdx), %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x4a,0x80,0x7b]
|
||||
vpermq $123, -8192(%rdx), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, -8256(%rdx), %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x48,0x00,0x8a,0xc0,0xdf,0xff,0xff,0x7b]
|
||||
vpermq $123, -8256(%rdx), %zmm25
|
||||
|
||||
// CHECK: vpermq $123, 1016(%rdx){1to8}, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x4a,0x7f,0x7b]
|
||||
vpermq $123, 1016(%rdx){1to8}, %zmm25
|
||||
|
||||
// CHECK: vpermq $123, 1024(%rdx){1to8}, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x8a,0x00,0x04,0x00,0x00,0x7b]
|
||||
vpermq $123, 1024(%rdx){1to8}, %zmm25
|
||||
|
||||
// CHECK: vpermq $123, -1024(%rdx){1to8}, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x4a,0x80,0x7b]
|
||||
vpermq $123, -1024(%rdx){1to8}, %zmm25
|
||||
|
||||
// CHECK: vpermq $123, -1032(%rdx){1to8}, %zmm25
|
||||
// CHECK: encoding: [0x62,0x63,0xfd,0x58,0x00,0x8a,0xf8,0xfb,0xff,0xff,0x7b]
|
||||
vpermq $123, -1032(%rdx){1to8}, %zmm25
|
||||
|
||||
// CHECK: vpermq %zmm22, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xa2,0xc5,0x40,0x36,0xee]
|
||||
vpermq %zmm22, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq %zmm22, %zmm23, %zmm21 {%k1}
|
||||
// CHECK: encoding: [0x62,0xa2,0xc5,0x41,0x36,0xee]
|
||||
vpermq %zmm22, %zmm23, %zmm21 {%k1}
|
||||
|
||||
// CHECK: vpermq %zmm22, %zmm23, %zmm21 {%k1} {z}
|
||||
// CHECK: encoding: [0x62,0xa2,0xc5,0xc1,0x36,0xee]
|
||||
vpermq %zmm22, %zmm23, %zmm21 {%k1} {z}
|
||||
|
||||
// CHECK: vpermq (%rcx), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x29]
|
||||
vpermq (%rcx), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq 291(%rax,%r14,8), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xa2,0xc5,0x40,0x36,0xac,0xf0,0x23,0x01,0x00,0x00]
|
||||
vpermq 291(%rax,%r14,8), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq (%rcx){1to8}, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x29]
|
||||
vpermq (%rcx){1to8}, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq 8128(%rdx), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x6a,0x7f]
|
||||
vpermq 8128(%rdx), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq 8192(%rdx), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0xaa,0x00,0x20,0x00,0x00]
|
||||
vpermq 8192(%rdx), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq -8192(%rdx), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0x6a,0x80]
|
||||
vpermq -8192(%rdx), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq -8256(%rdx), %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x40,0x36,0xaa,0xc0,0xdf,0xff,0xff]
|
||||
vpermq -8256(%rdx), %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq 1016(%rdx){1to8}, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x6a,0x7f]
|
||||
vpermq 1016(%rdx){1to8}, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq 1024(%rdx){1to8}, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0xaa,0x00,0x04,0x00,0x00]
|
||||
vpermq 1024(%rdx){1to8}, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq -1024(%rdx){1to8}, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0x6a,0x80]
|
||||
vpermq -1024(%rdx){1to8}, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermq -1032(%rdx){1to8}, %zmm23, %zmm21
|
||||
// CHECK: encoding: [0x62,0xe2,0xc5,0x50,0x36,0xaa,0xf8,0xfb,0xff,0xff]
|
||||
vpermq -1032(%rdx){1to8}, %zmm23, %zmm21
|
||||
|
||||
// CHECK: vpermpd %zmm18, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x22,0x95,0x40,0x16,0xd2]
|
||||
vpermpd %zmm18, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd %zmm18, %zmm29, %zmm26 {%k6}
|
||||
// CHECK: encoding: [0x62,0x22,0x95,0x46,0x16,0xd2]
|
||||
vpermpd %zmm18, %zmm29, %zmm26 {%k6}
|
||||
|
||||
// CHECK: vpermpd %zmm18, %zmm29, %zmm26 {%k6} {z}
|
||||
// CHECK: encoding: [0x62,0x22,0x95,0xc6,0x16,0xd2]
|
||||
vpermpd %zmm18, %zmm29, %zmm26 {%k6} {z}
|
||||
|
||||
// CHECK: vpermpd (%rcx), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x11]
|
||||
vpermpd (%rcx), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd 291(%rax,%r14,8), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x22,0x95,0x40,0x16,0x94,0xf0,0x23,0x01,0x00,0x00]
|
||||
vpermpd 291(%rax,%r14,8), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd (%rcx){1to8}, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x11]
|
||||
vpermpd (%rcx){1to8}, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd 8128(%rdx), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x52,0x7f]
|
||||
vpermpd 8128(%rdx), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd 8192(%rdx), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x92,0x00,0x20,0x00,0x00]
|
||||
vpermpd 8192(%rdx), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd -8192(%rdx), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x52,0x80]
|
||||
vpermpd -8192(%rdx), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd -8256(%rdx), %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x40,0x16,0x92,0xc0,0xdf,0xff,0xff]
|
||||
vpermpd -8256(%rdx), %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd 1016(%rdx){1to8}, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x52,0x7f]
|
||||
vpermpd 1016(%rdx){1to8}, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd 1024(%rdx){1to8}, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x92,0x00,0x04,0x00,0x00]
|
||||
vpermpd 1024(%rdx){1to8}, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd -1024(%rdx){1to8}, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x52,0x80]
|
||||
vpermpd -1024(%rdx){1to8}, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd -1032(%rdx){1to8}, %zmm29, %zmm26
|
||||
// CHECK: encoding: [0x62,0x62,0x95,0x50,0x16,0x92,0xf8,0xfb,0xff,0xff]
|
||||
vpermpd -1032(%rdx){1to8}, %zmm29, %zmm26
|
||||
|
||||
// CHECK: vpermpd $171, %zmm27, %zmm3
|
||||
// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x01,0xdb,0xab]
|
||||
vpermpd $0xab, %zmm27, %zmm3
|
||||
|
||||
// CHECK: vpermpd $171, %zmm27, %zmm3 {%k2}
|
||||
// CHECK: encoding: [0x62,0x93,0xfd,0x4a,0x01,0xdb,0xab]
|
||||
vpermpd $0xab, %zmm27, %zmm3 {%k2}
|
||||
|
||||
// CHECK: vpermpd $171, %zmm27, %zmm3 {%k2} {z}
|
||||
// CHECK: encoding: [0x62,0x93,0xfd,0xca,0x01,0xdb,0xab]
|
||||
vpermpd $0xab, %zmm27, %zmm3 {%k2} {z}
|
||||
|
||||
// CHECK: vpermpd $123, %zmm27, %zmm3
|
||||
// CHECK: encoding: [0x62,0x93,0xfd,0x48,0x01,0xdb,0x7b]
|
||||
vpermpd $0x7b, %zmm27, %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, (%rcx), %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x19,0x7b]
|
||||
vpermpd $0x7b, (%rcx), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, 291(%rax,%r14,8), %zmm3
|
||||
// CHECK: encoding: [0x62,0xb3,0xfd,0x48,0x01,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b]
|
||||
vpermpd $0x7b, 291(%rax,%r14,8), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, (%rcx){1to8}, %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x19,0x7b]
|
||||
vpermpd $0x7b, (%rcx){1to8}, %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, 8128(%rdx), %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x5a,0x7f,0x7b]
|
||||
vpermpd $0x7b, 8128(%rdx), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, 8192(%rdx), %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x9a,0x00,0x20,0x00,0x00,0x7b]
|
||||
vpermpd $0x7b, 8192(%rdx), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, -8192(%rdx), %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x5a,0x80,0x7b]
|
||||
vpermpd $0x7b, -8192(%rdx), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, -8256(%rdx), %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x48,0x01,0x9a,0xc0,0xdf,0xff,0xff,0x7b]
|
||||
vpermpd $0x7b, -8256(%rdx), %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, 1016(%rdx){1to8}, %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x5a,0x7f,0x7b]
|
||||
vpermpd $0x7b, 1016(%rdx){1to8}, %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, 1024(%rdx){1to8}, %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x9a,0x00,0x04,0x00,0x00,0x7b]
|
||||
vpermpd $0x7b, 1024(%rdx){1to8}, %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, -1024(%rdx){1to8}, %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x5a,0x80,0x7b]
|
||||
vpermpd $0x7b, -1024(%rdx){1to8}, %zmm3
|
||||
|
||||
// CHECK: vpermpd $123, -1032(%rdx){1to8}, %zmm3
|
||||
// CHECK: encoding: [0x62,0xf3,0xfd,0x58,0x01,0x9a,0xf8,0xfb,0xff,0xff,0x7b]
|
||||
vpermpd $0x7b, -1032(%rdx){1to8}, %zmm3
|
||||
|
||||
// CHECK: vpermd %zmm9, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xc2,0x1d,0x40,0x36,0xf1]
|
||||
vpermd %zmm9, %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd %zmm9, %zmm28, %zmm22 {%k1}
|
||||
// CHECK: encoding: [0x62,0xc2,0x1d,0x41,0x36,0xf1]
|
||||
vpermd %zmm9, %zmm28, %zmm22 {%k1}
|
||||
|
||||
// CHECK: vpermd %zmm9, %zmm28, %zmm22 {%k1} {z}
|
||||
// CHECK: encoding: [0x62,0xc2,0x1d,0xc1,0x36,0xf1]
|
||||
vpermd %zmm9, %zmm28, %zmm22 {%k1} {z}
|
||||
|
||||
// CHECK: vpermd (%rcx), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x31]
|
||||
vpermd (%rcx), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd 291(%rax,%r14,8), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xa2,0x1d,0x40,0x36,0xb4,0xf0,0x23,0x01,0x00,0x00]
|
||||
vpermd 291(%rax,%r14,8), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd (%rcx){1to16}, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x31]
|
||||
vpermd (%rcx){1to16}, %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd 8128(%rdx), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x72,0x7f]
|
||||
vpermd 8128(%rdx), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd 8192(%rdx), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0xb2,0x00,0x20,0x00,0x00]
|
||||
vpermd 8192(%rdx), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd -8192(%rdx), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0x72,0x80]
|
||||
vpermd -8192(%rdx), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd -8256(%rdx), %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x40,0x36,0xb2,0xc0,0xdf,0xff,0xff]
|
||||
vpermd -8256(%rdx), %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd 508(%rdx){1to16}, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x72,0x7f]
|
||||
vpermd 508(%rdx){1to16}, %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd 512(%rdx){1to16}, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0xb2,0x00,0x02,0x00,0x00]
|
||||
vpermd 512(%rdx){1to16}, %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd -512(%rdx){1to16}, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0x72,0x80]
|
||||
vpermd -512(%rdx){1to16}, %zmm28, %zmm22
|
||||
|
||||
// CHECK: vpermd -516(%rdx){1to16}, %zmm28, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0x1d,0x50,0x36,0xb2,0xfc,0xfd,0xff,0xff]
|
||||
vpermd -516(%rdx){1to16}, %zmm28, %zmm22
|
||||
|
||||
|
|
|
@ -3308,3 +3308,38 @@
|
|||
// CHECK: encoding: [0x62,0xe1,0x5d,0x40,0xd9,0xa2,0xc0,0xdf,0xff,0xff]
|
||||
vpsubusw -8256(%rdx), %zmm20, %zmm20
|
||||
|
||||
// CHECK: vpermw %zmm21, %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xa2,0xe5,0x40,0x8d,0xf5]
|
||||
vpermw %zmm21, %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw %zmm21, %zmm19, %zmm22 {%k6}
|
||||
// CHECK: encoding: [0x62,0xa2,0xe5,0x46,0x8d,0xf5]
|
||||
vpermw %zmm21, %zmm19, %zmm22 {%k6}
|
||||
|
||||
// CHECK: vpermw %zmm21, %zmm19, %zmm22 {%k6} {z}
|
||||
// CHECK: encoding: [0x62,0xa2,0xe5,0xc6,0x8d,0xf5]
|
||||
vpermw %zmm21, %zmm19, %zmm22 {%k6} {z}
|
||||
|
||||
// CHECK: vpermw (%rcx), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0x31]
|
||||
vpermw (%rcx), %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw 291(%rax,%r14,8), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xa2,0xe5,0x40,0x8d,0xb4,0xf0,0x23,0x01,0x00,0x00]
|
||||
vpermw 291(%rax,%r14,8), %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw 8128(%rdx), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0x72,0x7f]
|
||||
vpermw 8128(%rdx), %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw 8192(%rdx), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0xb2,0x00,0x20,0x00,0x00]
|
||||
vpermw 8192(%rdx), %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw -8192(%rdx), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0x72,0x80]
|
||||
vpermw -8192(%rdx), %zmm19, %zmm22
|
||||
|
||||
// CHECK: vpermw -8256(%rdx), %zmm19, %zmm22
|
||||
// CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0xb2,0xc0,0xdf,0xff,0xff]
|
||||
vpermw -8256(%rdx), %zmm19, %zmm22
|
||||
|
|
Loading…
Reference in New Issue