From: Elena Demikhovsky Date: Mon, 1 Jun 2015 07:17:23 +0000 (+0000) Subject: AVX-512: added all forms of VPSHUFD and VPSHUFHW, VPSHUFLW X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8e12b59b137856f67c3ff04ab391f7a2ca081301;p=oota-llvm.git AVX-512: added all forms of VPSHUFD and VPSHUFHW, VPSHUFLW including encodings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238729 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 7db7fa466de..314732c5b18 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -3401,32 +3401,6 @@ defm VPUNPCKHQDQZ : avx512_unpack_int<0x6D, "vpunpckhqdq", X86Unpckh, v8i64, VR512, loadv8i64, i512mem>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VF>; //===----------------------------------------------------------------------===// -// AVX-512 - PSHUFD -// - -multiclass avx512_pshuf_imm opc, string OpcodeStr, RegisterClass RC, - SDNode OpNode, PatFrag mem_frag, - X86MemOperand x86memop, ValueType OpVT> { - def ri : AVX512Ii8, - EVEX; - def mi : AVX512Ii8, EVEX; -} - -defm VPSHUFDZ : avx512_pshuf_imm<0x70, "vpshufd", VR512, X86PShufd, loadv16i32, - i512mem, v16i32>, PD, EVEX_V512, EVEX_CD8<32, CD8VF>; - -//===----------------------------------------------------------------------===// // AVX-512 Logical Instructions //===----------------------------------------------------------------------===// @@ -3729,14 +3703,14 @@ multiclass avx512_shift_rmi opc, Format ImmFormR, Format ImmFormM, (ins _.RC:$src1, u8imm:$src2), OpcodeStr, "$src2, $src1", "$src1, $src2", (_.VT (OpNode _.RC:$src1, (i8 imm:$src2))), - SSE_INTSHIFT_ITINS_P.rr>, AVX512BIi8Base, EVEX_4V; + SSE_INTSHIFT_ITINS_P.rr>; let mayLoad = 1 in defm mi : AVX512_maskable, AVX512BIi8Base, EVEX_4V; + SSE_INTSHIFT_ITINS_P.rm>; } multiclass avx512_shift_rmbi opc, Format ImmFormM, @@ -3746,7 +3720,7 @@ multiclass avx512_shift_rmbi opc, Format ImmFormM, (ins _.ScalarMemOp:$src1, u8imm:$src2), OpcodeStr, "$src2, ${src1}"##_.BroadcastStr, "${src1}"##_.BroadcastStr##", $src2", (_.VT (OpNode (X86VBroadcast (_.ScalarLdFrag addr:$src1)), (i8 imm:$src2))), - SSE_INTSHIFT_ITINS_P.rm>, AVX512BIi8Base, EVEX_4V, EVEX_B; + SSE_INTSHIFT_ITINS_P.rm>, EVEX_B; } multiclass avx512_shift_rrm opc, string OpcodeStr, SDNode OpNode, @@ -3836,16 +3810,16 @@ multiclass avx512_shift_rmi_dq opcd, bits<8> opcq, } defm VPSRL : avx512_shift_rmi_dq<0x72, 0x73, MRM2r, MRM2m, "vpsrl", X86vsrli>, - avx512_shift_rmi_w<0x71, MRM2r, MRM2m, "vpsrlw", X86vsrli>; + avx512_shift_rmi_w<0x71, MRM2r, MRM2m, "vpsrlw", X86vsrli>, AVX512BIi8Base, EVEX_4V; defm VPSLL : avx512_shift_rmi_dq<0x72, 0x73, MRM6r, MRM6m, "vpsll", X86vshli>, - avx512_shift_rmi_w<0x71, MRM6r, MRM6m, "vpsllw", X86vshli>; + avx512_shift_rmi_w<0x71, MRM6r, MRM6m, "vpsllw", X86vshli>, AVX512BIi8Base, EVEX_4V; defm VPSRA : avx512_shift_rmi_dq<0x72, 0x72, MRM4r, MRM4m, "vpsra", X86vsrai>, - avx512_shift_rmi_w<0x71, MRM4r, MRM4m, "vpsraw", X86vsrai>; + avx512_shift_rmi_w<0x71, MRM4r, MRM4m, "vpsraw", X86vsrai>, AVX512BIi8Base, EVEX_4V; -defm VPROR : avx512_shift_rmi_dq<0x72, 0x72, MRM0r, MRM0m, "vpror", rotr>; -defm VPROL : avx512_shift_rmi_dq<0x72, 0x72, MRM1r, MRM1m, "vprol", rotl>; +defm VPROR : avx512_shift_rmi_dq<0x72, 0x72, MRM0r, MRM0m, "vpror", rotr>, AVX512BIi8Base, EVEX_4V; +defm VPROL : avx512_shift_rmi_dq<0x72, 0x72, MRM1r, MRM1m, "vprol", rotl>, AVX512BIi8Base, EVEX_4V; defm VPSLL : avx512_shift_types<0xF2, 0xF3, 0xF1, "vpsll", X86vshl>; defm VPSRA : avx512_shift_types<0xE2, 0xE2, 0xE1, "vpsra", X86vsra>; @@ -3927,6 +3901,17 @@ 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>; +//===----------------------------------------------------------------------===// +// AVX-512 - VPSHUFD, VPSHUFLW, VPSHUFHW +//===----------------------------------------------------------------------===// + +defm VPSHUFD : avx512_shift_rmi_sizes<0x70, MRMSrcReg, MRMSrcMem, "vpshufd", + X86PShufd, avx512vl_i32_info>, + EVEX, AVX512BIi8Base, EVEX_CD8<32, CD8VF>; +defm VPSHUFH : avx512_shift_rmi_w<0x70, MRMSrcReg, MRMSrcMem, "vpshufhw", + X86PShufhw>, EVEX, AVX512XSIi8Base, VEX_W; +defm VPSHUFL : avx512_shift_rmi_w<0x70, MRMSrcReg, MRMSrcMem, "vpshuflw", + X86PShuflw>, EVEX, AVX512XDIi8Base, VEX_W; //===----------------------------------------------------------------------===// // AVX-512 - MOVDDUP //===----------------------------------------------------------------------===// @@ -5949,7 +5934,7 @@ multiclass expand_by_vec_width opc, X86VectorVTInfo _, (_.LdFrag addr:$src))), _.RC:$src0)))]>, EVEX_K, EVEX_CD8<_.EltSize, CD8VT1>; - + let mayLoad = 1 in def rmkz : AVX5128I opc, X86VectorVTInfo _, (_.VT (bitconvert (_.LdFrag addr:$src))), _.ImmAllZerosV)))]>, EVEX_KZ, EVEX_CD8<_.EltSize, CD8VT1>; - } multiclass expand_by_elt_width opc, string OpcodeStr, diff --git a/lib/Target/X86/X86InstrFormats.td b/lib/Target/X86/X86InstrFormats.td index 331faf2fd0b..e2fa295c023 100644 --- a/lib/Target/X86/X86InstrFormats.td +++ b/lib/Target/X86/X86InstrFormats.td @@ -764,6 +764,14 @@ class AVX512BIi8Base : PD { Domain ExeDomain = SSEPackedInt; ImmType ImmT = Imm8; } +class AVX512XSIi8Base : XS { + Domain ExeDomain = SSEPackedInt; + ImmType ImmT = Imm8; +} +class AVX512XDIi8Base : XD { + Domain ExeDomain = SSEPackedInt; + ImmType ImmT = Imm8; +} class AVX512PSIi8Base : PS { Domain ExeDomain = SSEPackedSingle; ImmType ImmT = Imm8; diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index fe6e943596c..68a661588c1 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -7859,3 +7859,64 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: vfixupimmpd $123, -1032(%rdx){1to8}, %zmm21, %zmm9 // CHECK: encoding: [0x62,0x73,0xd5,0x50,0x54,0x8a,0xf8,0xfb,0xff,0xff,0x7b] vfixupimmpd $0x7b, -1032(%rdx){1to8}, %zmm21, %zmm9 + +// CHECK: vpshufd $171, %zmm25, %zmm19 +// CHECK: encoding: [0x62,0x81,0x7d,0x48,0x70,0xd9,0xab] + vpshufd $171, %zmm25, %zmm19 + +// CHECK: vpshufd $171, %zmm25, %zmm19 {%k6} +// CHECK: encoding: [0x62,0x81,0x7d,0x4e,0x70,0xd9,0xab] + vpshufd $171, %zmm25, %zmm19 {%k6} + +// CHECK: vpshufd $171, %zmm25, %zmm19 {%k6} {z} +// CHECK: encoding: [0x62,0x81,0x7d,0xce,0x70,0xd9,0xab] + vpshufd $171, %zmm25, %zmm19 {%k6} {z} + +// CHECK: vpshufd $123, %zmm25, %zmm19 +// CHECK: encoding: [0x62,0x81,0x7d,0x48,0x70,0xd9,0x7b] + vpshufd $123, %zmm25, %zmm19 + +// CHECK: vpshufd $123, (%rcx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x19,0x7b] + vpshufd $123, (%rcx), %zmm19 + +// CHECK: vpshufd $123, 291(%rax,%r14,8), %zmm19 +// CHECK: encoding: [0x62,0xa1,0x7d,0x48,0x70,0x9c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufd $123, 291(%rax,%r14,8), %zmm19 + +// CHECK: vpshufd $123, (%rcx){1to16}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x19,0x7b] + vpshufd $123, (%rcx){1to16}, %zmm19 + +// CHECK: vpshufd $123, 8128(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x5a,0x7f,0x7b] + vpshufd $123, 8128(%rdx), %zmm19 + +// CHECK: vpshufd $123, 8192(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x9a,0x00,0x20,0x00,0x00,0x7b] + vpshufd $123, 8192(%rdx), %zmm19 + +// CHECK: vpshufd $123, -8192(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x5a,0x80,0x7b] + vpshufd $123, -8192(%rdx), %zmm19 + +// CHECK: vpshufd $123, -8256(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x48,0x70,0x9a,0xc0,0xdf,0xff,0xff,0x7b] + vpshufd $123, -8256(%rdx), %zmm19 + +// CHECK: vpshufd $123, 508(%rdx){1to16}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x5a,0x7f,0x7b] + vpshufd $123, 508(%rdx){1to16}, %zmm19 + +// CHECK: vpshufd $123, 512(%rdx){1to16}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x9a,0x00,0x02,0x00,0x00,0x7b] + vpshufd $123, 512(%rdx){1to16}, %zmm19 + +// CHECK: vpshufd $123, -512(%rdx){1to16}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x5a,0x80,0x7b] + vpshufd $123, -512(%rdx){1to16}, %zmm19 + +// CHECK: vpshufd $123, -516(%rdx){1to16}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x7d,0x58,0x70,0x9a,0xfc,0xfd,0xff,0xff,0x7b] + vpshufd $123, -516(%rdx){1to16}, %zmm19 + diff --git a/test/MC/X86/x86-64-avx512bw_vl.s b/test/MC/X86/x86-64-avx512bw_vl.s index bd16b0ed95c..0ba5e17077b 100644 --- a/test/MC/X86/x86-64-avx512bw_vl.s +++ b/test/MC/X86/x86-64-avx512bw_vl.s @@ -5775,3 +5775,164 @@ // CHECK: vpsubusw -4128(%rdx), %ymm25, %ymm27 // CHECK: encoding: [0x62,0x61,0x35,0x20,0xd9,0x9a,0xe0,0xef,0xff,0xff] vpsubusw -4128(%rdx), %ymm25, %ymm27 + +// CHECK: vpshufhw $171, %xmm19, %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfe,0x08,0x70,0xfb,0xab] + vpshufhw $171, %xmm19, %xmm23 + +// CHECK: vpshufhw $171, %xmm19, %xmm23 {%k7} +// CHECK: encoding: [0x62,0xa1,0xfe,0x0f,0x70,0xfb,0xab] + vpshufhw $171, %xmm19, %xmm23 {%k7} + +// CHECK: vpshufhw $171, %xmm19, %xmm23 {%k7} {z} +// CHECK: encoding: [0x62,0xa1,0xfe,0x8f,0x70,0xfb,0xab] + vpshufhw $171, %xmm19, %xmm23 {%k7} {z} + +// CHECK: vpshufhw $123, %xmm19, %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfe,0x08,0x70,0xfb,0x7b] + vpshufhw $123, %xmm19, %xmm23 + +// CHECK: vpshufhw $123, (%rcx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfe,0x08,0x70,0x39,0x7b] + vpshufhw $123, (%rcx), %xmm23 + +// CHECK: vpshufhw $123, 291(%rax,%r14,8), %xmm23 +// CHECK: encoding: [0x62,0xa1,0xfe,0x08,0x70,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufhw $123, 291(%rax,%r14,8), %xmm23 + +// CHECK: vpshufhw $123, 2032(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfe,0x08,0x70,0x7a,0x7f,0x7b] + vpshufhw $123, 2032(%rdx), %xmm23 + +// CHECK: vpshufhw $123, 2048(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfe,0x08,0x70,0xba,0x00,0x08,0x00,0x00,0x7b] + vpshufhw $123, 2048(%rdx), %xmm23 + +// CHECK: vpshufhw $123, -2048(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfe,0x08,0x70,0x7a,0x80,0x7b] + vpshufhw $123, -2048(%rdx), %xmm23 + +// CHECK: vpshufhw $123, -2064(%rdx), %xmm23 +// CHECK: encoding: [0x62,0xe1,0xfe,0x08,0x70,0xba,0xf0,0xf7,0xff,0xff,0x7b] + vpshufhw $123, -2064(%rdx), %xmm23 + +// CHECK: vpshufhw $171, %ymm17, %ymm29 +// CHECK: encoding: [0x62,0x21,0xfe,0x28,0x70,0xe9,0xab] + vpshufhw $171, %ymm17, %ymm29 + +// CHECK: vpshufhw $171, %ymm17, %ymm29 {%k7} +// CHECK: encoding: [0x62,0x21,0xfe,0x2f,0x70,0xe9,0xab] + vpshufhw $171, %ymm17, %ymm29 {%k7} + +// CHECK: vpshufhw $171, %ymm17, %ymm29 {%k7} {z} +// CHECK: encoding: [0x62,0x21,0xfe,0xaf,0x70,0xe9,0xab] + vpshufhw $171, %ymm17, %ymm29 {%k7} {z} + +// CHECK: vpshufhw $123, %ymm17, %ymm29 +// CHECK: encoding: [0x62,0x21,0xfe,0x28,0x70,0xe9,0x7b] + vpshufhw $123, %ymm17, %ymm29 + +// CHECK: vpshufhw $123, (%rcx), %ymm29 +// CHECK: encoding: [0x62,0x61,0xfe,0x28,0x70,0x29,0x7b] + vpshufhw $123, (%rcx), %ymm29 + +// CHECK: vpshufhw $123, 291(%rax,%r14,8), %ymm29 +// CHECK: encoding: [0x62,0x21,0xfe,0x28,0x70,0xac,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufhw $123, 291(%rax,%r14,8), %ymm29 + +// CHECK: vpshufhw $123, 4064(%rdx), %ymm29 +// CHECK: encoding: [0x62,0x61,0xfe,0x28,0x70,0x6a,0x7f,0x7b] + vpshufhw $123, 4064(%rdx), %ymm29 + +// CHECK: vpshufhw $123, 4096(%rdx), %ymm29 +// CHECK: encoding: [0x62,0x61,0xfe,0x28,0x70,0xaa,0x00,0x10,0x00,0x00,0x7b] + vpshufhw $123, 4096(%rdx), %ymm29 + +// CHECK: vpshufhw $123, -4096(%rdx), %ymm29 +// CHECK: encoding: [0x62,0x61,0xfe,0x28,0x70,0x6a,0x80,0x7b] + vpshufhw $123, -4096(%rdx), %ymm29 + +// CHECK: vpshufhw $123, -4128(%rdx), %ymm29 +// CHECK: encoding: [0x62,0x61,0xfe,0x28,0x70,0xaa,0xe0,0xef,0xff,0xff,0x7b] + vpshufhw $123, -4128(%rdx), %ymm29 + +// CHECK: vpshuflw $171, %xmm27, %xmm30 +// CHECK: encoding: [0x62,0x01,0xff,0x08,0x70,0xf3,0xab] + vpshuflw $171, %xmm27, %xmm30 + +// CHECK: vpshuflw $171, %xmm27, %xmm30 {%k6} +// CHECK: encoding: [0x62,0x01,0xff,0x0e,0x70,0xf3,0xab] + vpshuflw $171, %xmm27, %xmm30 {%k6} + +// CHECK: vpshuflw $171, %xmm27, %xmm30 {%k6} {z} +// CHECK: encoding: [0x62,0x01,0xff,0x8e,0x70,0xf3,0xab] + vpshuflw $171, %xmm27, %xmm30 {%k6} {z} + +// CHECK: vpshuflw $123, %xmm27, %xmm30 +// CHECK: encoding: [0x62,0x01,0xff,0x08,0x70,0xf3,0x7b] + vpshuflw $123, %xmm27, %xmm30 + +// CHECK: vpshuflw $123, (%rcx), %xmm30 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x70,0x31,0x7b] + vpshuflw $123, (%rcx), %xmm30 + +// CHECK: vpshuflw $123, 291(%rax,%r14,8), %xmm30 +// CHECK: encoding: [0x62,0x21,0xff,0x08,0x70,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshuflw $123, 291(%rax,%r14,8), %xmm30 + +// CHECK: vpshuflw $123, 2032(%rdx), %xmm30 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x70,0x72,0x7f,0x7b] + vpshuflw $123, 2032(%rdx), %xmm30 + +// CHECK: vpshuflw $123, 2048(%rdx), %xmm30 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x70,0xb2,0x00,0x08,0x00,0x00,0x7b] + vpshuflw $123, 2048(%rdx), %xmm30 + +// CHECK: vpshuflw $123, -2048(%rdx), %xmm30 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x70,0x72,0x80,0x7b] + vpshuflw $123, -2048(%rdx), %xmm30 + +// CHECK: vpshuflw $123, -2064(%rdx), %xmm30 +// CHECK: encoding: [0x62,0x61,0xff,0x08,0x70,0xb2,0xf0,0xf7,0xff,0xff,0x7b] + vpshuflw $123, -2064(%rdx), %xmm30 + +// CHECK: vpshuflw $171, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x01,0xff,0x28,0x70,0xc9,0xab] + vpshuflw $171, %ymm25, %ymm25 + +// CHECK: vpshuflw $171, %ymm25, %ymm25 {%k5} +// CHECK: encoding: [0x62,0x01,0xff,0x2d,0x70,0xc9,0xab] + vpshuflw $171, %ymm25, %ymm25 {%k5} + +// CHECK: vpshuflw $171, %ymm25, %ymm25 {%k5} {z} +// CHECK: encoding: [0x62,0x01,0xff,0xad,0x70,0xc9,0xab] + vpshuflw $171, %ymm25, %ymm25 {%k5} {z} + +// CHECK: vpshuflw $123, %ymm25, %ymm25 +// CHECK: encoding: [0x62,0x01,0xff,0x28,0x70,0xc9,0x7b] + vpshuflw $123, %ymm25, %ymm25 + +// CHECK: vpshuflw $123, (%rcx), %ymm25 +// CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x09,0x7b] + vpshuflw $123, (%rcx), %ymm25 + +// CHECK: vpshuflw $123, 291(%rax,%r14,8), %ymm25 +// CHECK: encoding: [0x62,0x21,0xff,0x28,0x70,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshuflw $123, 291(%rax,%r14,8), %ymm25 + +// CHECK: vpshuflw $123, 4064(%rdx), %ymm25 +// CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x4a,0x7f,0x7b] + vpshuflw $123, 4064(%rdx), %ymm25 + +// CHECK: vpshuflw $123, 4096(%rdx), %ymm25 +// CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x8a,0x00,0x10,0x00,0x00,0x7b] + vpshuflw $123, 4096(%rdx), %ymm25 + +// CHECK: vpshuflw $123, -4096(%rdx), %ymm25 +// CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x4a,0x80,0x7b] + vpshuflw $123, -4096(%rdx), %ymm25 + +// CHECK: vpshuflw $123, -4128(%rdx), %ymm25 +// CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x8a,0xe0,0xef,0xff,0xff,0x7b] + vpshuflw $123, -4128(%rdx), %ymm25 + diff --git a/test/MC/X86/x86-64-avx512f_vl.s b/test/MC/X86/x86-64-avx512f_vl.s index 137c327ffb0..182f4dac87e 100644 --- a/test/MC/X86/x86-64-avx512f_vl.s +++ b/test/MC/X86/x86-64-avx512f_vl.s @@ -10428,12 +10428,123 @@ vaddpd {rz-sae}, %zmm2, %zmm1, %zmm1 // CHECK: encoding: [0x62,0xe3,0xcd,0x30,0x54,0x92,0xf8,0xfb,0xff,0xff,0x7b] vfixupimmpd $0x7b, -1032(%rdx){1to4}, %ymm22, %ymm18 +// CHECK: vpshufd $171, %xmm23, %xmm17 +// CHECK: encoding: [0x62,0xa1,0x7d,0x08,0x70,0xcf,0xab] + vpshufd $171, %xmm23, %xmm17 +// CHECK: vpshufd $171, %xmm23, %xmm17 {%k1} +// CHECK: encoding: [0x62,0xa1,0x7d,0x09,0x70,0xcf,0xab] + vpshufd $171, %xmm23, %xmm17 {%k1} +// CHECK: vpshufd $171, %xmm23, %xmm17 {%k1} {z} +// CHECK: encoding: [0x62,0xa1,0x7d,0x89,0x70,0xcf,0xab] + vpshufd $171, %xmm23, %xmm17 {%k1} {z} +// CHECK: vpshufd $123, %xmm23, %xmm17 +// CHECK: encoding: [0x62,0xa1,0x7d,0x08,0x70,0xcf,0x7b] + vpshufd $123, %xmm23, %xmm17 +// CHECK: vpshufd $123, (%rcx), %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x70,0x09,0x7b] + vpshufd $123, (%rcx), %xmm17 +// CHECK: vpshufd $123, 291(%rax,%r14,8), %xmm17 +// CHECK: encoding: [0x62,0xa1,0x7d,0x08,0x70,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufd $123, 291(%rax,%r14,8), %xmm17 +// CHECK: vpshufd $123, 2032(%rdx), %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x70,0x4a,0x7f,0x7b] + vpshufd $123, 2032(%rdx), %xmm17 +// CHECK: vpshufd $123, (%rcx){1to4}, %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x70,0x09,0x7b] + vpshufd $123, (%rcx){1to4}, %xmm17 +// CHECK: vpshufd $123, 2048(%rdx), %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x70,0x8a,0x00,0x08,0x00,0x00,0x7b] + vpshufd $123, 2048(%rdx), %xmm17 + +// CHECK: vpshufd $123, -2048(%rdx), %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x70,0x4a,0x80,0x7b] + vpshufd $123, -2048(%rdx), %xmm17 + +// CHECK: vpshufd $123, -2064(%rdx), %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x08,0x70,0x8a,0xf0,0xf7,0xff,0xff,0x7b] + vpshufd $123, -2064(%rdx), %xmm17 + +// CHECK: vpshufd $123, 508(%rdx){1to4}, %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x70,0x4a,0x7f,0x7b] + vpshufd $123, 508(%rdx){1to4}, %xmm17 + +// CHECK: vpshufd $123, 512(%rdx){1to4}, %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x70,0x8a,0x00,0x02,0x00,0x00,0x7b] + vpshufd $123, 512(%rdx){1to4}, %xmm17 + +// CHECK: vpshufd $123, -512(%rdx){1to4}, %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x70,0x4a,0x80,0x7b] + vpshufd $123, -512(%rdx){1to4}, %xmm17 + +// CHECK: vpshufd $123, -516(%rdx){1to4}, %xmm17 +// CHECK: encoding: [0x62,0xe1,0x7d,0x18,0x70,0x8a,0xfc,0xfd,0xff,0xff,0x7b] + vpshufd $123, -516(%rdx){1to4}, %xmm17 + +// CHECK: vpshufd $171, %ymm22, %ymm20 +// CHECK: encoding: [0x62,0xa1,0x7d,0x28,0x70,0xe6,0xab] + vpshufd $171, %ymm22, %ymm20 + +// CHECK: vpshufd $171, %ymm22, %ymm20 {%k2} +// CHECK: encoding: [0x62,0xa1,0x7d,0x2a,0x70,0xe6,0xab] + vpshufd $171, %ymm22, %ymm20 {%k2} + +// CHECK: vpshufd $171, %ymm22, %ymm20 {%k2} {z} +// CHECK: encoding: [0x62,0xa1,0x7d,0xaa,0x70,0xe6,0xab] + vpshufd $171, %ymm22, %ymm20 {%k2} {z} + +// CHECK: vpshufd $123, %ymm22, %ymm20 +// CHECK: encoding: [0x62,0xa1,0x7d,0x28,0x70,0xe6,0x7b] + vpshufd $123, %ymm22, %ymm20 + +// CHECK: vpshufd $123, (%rcx), %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x28,0x70,0x21,0x7b] + vpshufd $123, (%rcx), %ymm20 + +// CHECK: vpshufd $123, 291(%rax,%r14,8), %ymm20 +// CHECK: encoding: [0x62,0xa1,0x7d,0x28,0x70,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpshufd $123, 291(%rax,%r14,8), %ymm20 + +// CHECK: vpshufd $123, (%rcx){1to8}, %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x70,0x21,0x7b] + vpshufd $123, (%rcx){1to8}, %ymm20 + +// CHECK: vpshufd $123, 4064(%rdx), %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x28,0x70,0x62,0x7f,0x7b] + vpshufd $123, 4064(%rdx), %ymm20 + +// CHECK: vpshufd $123, 4096(%rdx), %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x28,0x70,0xa2,0x00,0x10,0x00,0x00,0x7b] + vpshufd $123, 4096(%rdx), %ymm20 + +// CHECK: vpshufd $123, -4096(%rdx), %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x28,0x70,0x62,0x80,0x7b] + vpshufd $123, -4096(%rdx), %ymm20 + +// CHECK: vpshufd $123, -4128(%rdx), %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x28,0x70,0xa2,0xe0,0xef,0xff,0xff,0x7b] + vpshufd $123, -4128(%rdx), %ymm20 + +// CHECK: vpshufd $123, 508(%rdx){1to8}, %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x70,0x62,0x7f,0x7b] + vpshufd $123, 508(%rdx){1to8}, %ymm20 + +// CHECK: vpshufd $123, 512(%rdx){1to8}, %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x70,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpshufd $123, 512(%rdx){1to8}, %ymm20 + +// CHECK: vpshufd $123, -512(%rdx){1to8}, %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x70,0x62,0x80,0x7b] + vpshufd $123, -512(%rdx){1to8}, %ymm20 + +// CHECK: vpshufd $123, -516(%rdx){1to8}, %ymm20 +// CHECK: encoding: [0x62,0xe1,0x7d,0x38,0x70,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpshufd $123, -516(%rdx){1to8}, %ymm20