Index: lib/Target/X86/X86InstrAVX512.td =================================================================== --- lib/Target/X86/X86InstrAVX512.td +++ lib/Target/X86/X86InstrAVX512.td @@ -6776,3 +6776,93 @@ SSE_INTALU_ITINS_P, HasAVX512>; defm VPUNPCKHQDQ : avx512_binop_rm_vl_q<0x6D, "vpunpckhqdq", X86Unpckh, SSE_INTALU_ITINS_P, HasAVX512>; + +//===----------------------------------------------------------------------===// +// AVX-512 - Extract & Insert Integer Instructions +//===----------------------------------------------------------------------===// + +multiclass avx512_extract_elt_m opc, string OpcodeStr, + X86VectorVTInfo _> { + let mayStore = 1 in + def mr : AVX512Ii8, + EVEX, EVEX_CD8<_.EltSize, CD8VT1>; +} + +multiclass avx512_extract_elt_b opc, string OpcodeStr, + X86VectorVTInfo _> { + let Predicates = [HasBWI] in { + def rr : AVX512Ii8, + EVEX, TAPD; + + defm NAME : avx512_extract_elt_m, TAPD; + } +} + +multiclass avx512_extract_elt_dq opc, string OpcodeStr, + X86VectorVTInfo _, RegisterClass GRC> { + let Predicates = [HasDQI] in { + def rr : AVX512Ii8, + EVEX, TAPD; + + defm NAME : avx512_extract_elt_m, TAPD; + } +} + +defm VPEXTRBZ : avx512_extract_elt_b<0x14, "vpextrb", v16i8x_info>; +defm VPEXTRDZ : avx512_extract_elt_dq<0x16, "vpextrd", v4i32x_info, GR32>; +defm VPEXTRQZ : avx512_extract_elt_dq<0x16, "vpextrq", v2i64x_info, GR64>, VEX_W; + +multiclass avx512_insert_elt_m opc, string OpcodeStr, + X86VectorVTInfo _> { + def rm : AVX512Ii8, + EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>; +} + +multiclass avx512_insert_elt_bw opc, string OpcodeStr, + X86VectorVTInfo _> { + let Predicates = [HasBWI] in { + def rr : AVX512Ii8, EVEX_4V; + + defm NAME : avx512_insert_elt_m; + } +} + +multiclass avx512_insert_elt_dq opc, string OpcodeStr, + X86VectorVTInfo _, RegisterClass GRC> { + let Predicates = [HasDQI] in { + def rr : AVX512Ii8, EVEX_4V; + + defm NAME : avx512_insert_elt_m; + } +} + +defm VPINSRBZ : avx512_insert_elt_bw<0x20, "vpinsrb", v16i8x_info>, TAPD; +defm VPINSRWZ : avx512_insert_elt_bw<0xC4, "vpinsrw", v8i16x_info>, PD; +defm VPINSRDZ : avx512_insert_elt_dq<0x22, "vpinsrd", v4i32x_info, GR32>, TAPD; +defm VPINSRQZ : avx512_insert_elt_dq<0x22, "vpinsrq", v2i64x_info, GR64>, TAPD, VEX_W; Index: test/MC/X86/x86-64-avx512bw.s =================================================================== --- test/MC/X86/x86-64-avx512bw.s +++ test/MC/X86/x86-64-avx512bw.s @@ -4112,3 +4112,119 @@ // CHECK: encoding: [0x62,0x61,0x2d,0x40,0x69,0xb2,0xc0,0xdf,0xff,0xff] vpunpckhwd -8256(%rdx), %zmm26, %zmm30 +// CHECK: vpextrb $171, %xmm17, %rax +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0xc8,0xab] + vpextrb $171, %xmm17, %rax + +// CHECK: vpextrb $123, %xmm17, %rax +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0xc8,0x7b] + vpextrb $123, %xmm17, %rax + +// CHECK: vpextrb $123, %xmm17, %r8 +// CHECK: encoding: [0x62,0xc3,0x7d,0x08,0x14,0xc8,0x7b] + vpextrb $123, %xmm17,%r8 + +// CHECK: vpextrb $123, %xmm17, (%rcx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0x09,0x7b] + vpextrb $123, %xmm17, (%rcx) + +// CHECK: vpextrb $123, %xmm17, 291(%rax,%r14,8) +// CHECK: encoding: [0x62,0xa3,0x7d,0x08,0x14,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpextrb $123, %xmm17, 291(%rax,%r14,8) + +// CHECK: vpextrb $123, %xmm17, 127(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0x4a,0x7f,0x7b] + vpextrb $123, %xmm17, 127(%rdx) + +// CHECK: vpextrb $123, %xmm17, 128(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0x8a,0x80,0x00,0x00,0x00,0x7b] + vpextrb $123, %xmm17, 128(%rdx) + +// CHECK: vpextrb $123, %xmm17, -128(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0x4a,0x80,0x7b] + vpextrb $123, %xmm17, -128(%rdx) + +// CHECK: vpextrb $123, %xmm17, -129(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x14,0x8a,0x7f,0xff,0xff,0xff,0x7b] + vpextrb $123, %xmm17, -129(%rdx) + +// CHECK: vpinsrb $171, %eax, %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0xc8,0xab] + vpinsrb $171,%eax, %xmm25, %xmm25 + +// CHECK: vpinsrb $123, %eax, %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0xc8,0x7b] + vpinsrb $123,%eax, %xmm25, %xmm25 + +// CHECK: vpinsrb $123, %ebp, %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0xcd,0x7b] + vpinsrb $123,%ebp, %xmm25, %xmm25 + +// CHECK: vpinsrb $123, %r13d, %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x43,0x35,0x00,0x20,0xcd,0x7b] + vpinsrb $123,%r13d, %xmm25, %xmm25 + +// CHECK: vpinsrb $123, (%rcx), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0x09,0x7b] + vpinsrb $123, (%rcx), %xmm25, %xmm25 + +// CHECK: vpinsrb $123, 291(%rax,%r14,8), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x23,0x35,0x00,0x20,0x8c,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpinsrb $123, 291(%rax,%r14,8), %xmm25, %xmm25 + +// CHECK: vpinsrb $123, 127(%rdx), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0x4a,0x7f,0x7b] + vpinsrb $123, 127(%rdx), %xmm25, %xmm25 + +// CHECK: vpinsrb $123, 128(%rdx), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0x8a,0x80,0x00,0x00,0x00,0x7b] + vpinsrb $123, 128(%rdx), %xmm25, %xmm25 + +// CHECK: vpinsrb $123, -128(%rdx), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0x4a,0x80,0x7b] + vpinsrb $123, -128(%rdx), %xmm25, %xmm25 + +// CHECK: vpinsrb $123, -129(%rdx), %xmm25, %xmm25 +// CHECK: encoding: [0x62,0x63,0x35,0x00,0x20,0x8a,0x7f,0xff,0xff,0xff,0x7b] + vpinsrb $123, -129(%rdx), %xmm25, %xmm25 + +// CHECK: vpinsrw $171, %eax, %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0xd0,0xab] + vpinsrw $171,%eax, %xmm25, %xmm18 + +// CHECK: vpinsrw $123, %eax, %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0xd0,0x7b] + vpinsrw $123,%eax, %xmm25, %xmm18 + +// CHECK: vpinsrw $123, %ebp, %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0xd5,0x7b] + vpinsrw $123,%ebp, %xmm25, %xmm18 + +// CHECK: vpinsrw $123, %r13d, %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xc1,0x35,0x00,0xc4,0xd5,0x7b] + vpinsrw $123,%r13d, %xmm25, %xmm18 + +// CHECK: vpinsrw $123, (%rcx), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0x11,0x7b] + vpinsrw $123, (%rcx), %xmm25, %xmm18 + +// CHECK: vpinsrw $123, 291(%rax,%r14,8), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xa1,0x35,0x00,0xc4,0x94,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpinsrw $123, 291(%rax,%r14,8), %xmm25, %xmm18 + +// CHECK: vpinsrw $123, 254(%rdx), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0x52,0x7f,0x7b] + vpinsrw $123, 254(%rdx), %xmm25, %xmm18 + +// CHECK: vpinsrw $123, 256(%rdx), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0x92,0x00,0x01,0x00,0x00,0x7b] + vpinsrw $123, 256(%rdx), %xmm25, %xmm18 + +// CHECK: vpinsrw $123, -256(%rdx), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0x52,0x80,0x7b] + vpinsrw $123, -256(%rdx), %xmm25, %xmm18 + +// CHECK: vpinsrw $123, -258(%rdx), %xmm25, %xmm18 +// CHECK: encoding: [0x62,0xe1,0x35,0x00,0xc4,0x92,0xfe,0xfe,0xff,0xff,0x7b] + vpinsrw $123, -258(%rdx), %xmm25, %xmm18 + Index: test/MC/X86/x86-64-avx512dq.s =================================================================== --- test/MC/X86/x86-64-avx512dq.s +++ test/MC/X86/x86-64-avx512dq.s @@ -2371,3 +2371,307 @@ // CHECK: encoding: [0x62,0xa1,0xff,0xca,0x7a,0xd5] vcvtuqq2ps %zmm21, %ymm18 {%k2} {z} +// CHECK: vpextrd $171, %xmm28, %eax +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0xe0,0xab] + vpextrd $0xab, %xmm28, %eax + +// CHECK: vpextrd $123, %xmm28, %eax +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0xe0,0x7b] + vpextrd $0x7b, %xmm28, %eax + +// CHECK: vpextrd $123, %xmm28, %ebp +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0xe5,0x7b] + vpextrd $0x7b, %xmm28, %ebp + +// CHECK: vpextrd $123, %xmm28, %r13d +// CHECK: encoding: [0x62,0x43,0x7d,0x08,0x16,0xe5,0x7b] + vpextrd $0x7b, %xmm28, %r13d + +// CHECK: vpextrd $123, %xmm28, (%rcx) +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0x21,0x7b] + vpextrd $0x7b, %xmm28, (%rcx) + +// CHECK: vpextrd $123, %xmm28, 291(%rax,%r14,8) +// CHECK: encoding: [0x62,0x23,0x7d,0x08,0x16,0xa4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpextrd $0x7b, %xmm28, 291(%rax,%r14,8) + +// CHECK: vpextrd $123, %xmm28, 508(%rdx) +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0x62,0x7f,0x7b] + vpextrd $0x7b, %xmm28, 508(%rdx) + +// CHECK: vpextrd $123, %xmm28, 512(%rdx) +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpextrd $0x7b, %xmm28, 512(%rdx) + +// CHECK: vpextrd $123, %xmm28, -512(%rdx) +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0x62,0x80,0x7b] + vpextrd $0x7b, %xmm28, -512(%rdx) + +// CHECK: vpextrd $123, %xmm28, -516(%rdx) +// CHECK: encoding: [0x62,0x63,0x7d,0x08,0x16,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpextrd $0x7b, %xmm28, -516(%rdx) + +// CHECK: vpextrd $171, %xmm20, %eax +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0xe0,0xab] + vpextrd $0xab, %xmm20, %eax + +// CHECK: vpextrd $123, %xmm20, %eax +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0xe0,0x7b] + vpextrd $0x7b, %xmm20, %eax + +// CHECK: vpextrd $123, %xmm20, %ebp +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0xe5,0x7b] + vpextrd $0x7b, %xmm20, %ebp + +// CHECK: vpextrd $123, %xmm20, %r13d +// CHECK: encoding: [0x62,0xc3,0x7d,0x08,0x16,0xe5,0x7b] + vpextrd $0x7b, %xmm20, %r13d + +// CHECK: vpextrd $123, %xmm20, (%rcx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0x21,0x7b] + vpextrd $0x7b, %xmm20, (%rcx) + +// CHECK: vpextrd $123, %xmm20, 4660(%rax,%r14,8) +// CHECK: encoding: [0x62,0xa3,0x7d,0x08,0x16,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpextrd $0x7b, %xmm20, 4660(%rax,%r14,8) + +// CHECK: vpextrd $123, %xmm20, 508(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0x62,0x7f,0x7b] + vpextrd $0x7b, %xmm20, 508(%rdx) + +// CHECK: vpextrd $123, %xmm20, 512(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0xa2,0x00,0x02,0x00,0x00,0x7b] + vpextrd $0x7b, %xmm20, 512(%rdx) + +// CHECK: vpextrd $123, %xmm20, -512(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0x62,0x80,0x7b] + vpextrd $0x7b, %xmm20, -512(%rdx) + +// CHECK: vpextrd $123, %xmm20, -516(%rdx) +// CHECK: encoding: [0x62,0xe3,0x7d,0x08,0x16,0xa2,0xfc,0xfd,0xff,0xff,0x7b] + vpextrd $0x7b, %xmm20, -516(%rdx) + +// CHECK: vpextrq $171, %xmm24, %rax +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0xc0,0xab] + vpextrq $0xab, %xmm24, %rax + +// CHECK: vpextrq $123, %xmm24, %rax +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0xc0,0x7b] + vpextrq $0x7b, %xmm24, %rax + +// CHECK: vpextrq $123, %xmm24, %r8 +// CHECK: encoding: [0x62,0x43,0xfd,0x08,0x16,0xc0,0x7b] + vpextrq $0x7b, %xmm24, %r8 + +// CHECK: vpextrq $123, %xmm24, (%rcx) +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0x01,0x7b] + vpextrq $0x7b, %xmm24, (%rcx) + +// CHECK: vpextrq $123, %xmm24, 291(%rax,%r14,8) +// CHECK: encoding: [0x62,0x23,0xfd,0x08,0x16,0x84,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpextrq $0x7b, %xmm24, 291(%rax,%r14,8) + +// CHECK: vpextrq $123, %xmm24, 1016(%rdx) +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0x42,0x7f,0x7b] + vpextrq $0x7b, %xmm24, 1016(%rdx) + +// CHECK: vpextrq $123, %xmm24, 1024(%rdx) +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0x82,0x00,0x04,0x00,0x00,0x7b] + vpextrq $0x7b, %xmm24, 1024(%rdx) + +// CHECK: vpextrq $123, %xmm24, -1024(%rdx) +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0x42,0x80,0x7b] + vpextrq $0x7b, %xmm24, -1024(%rdx) + +// CHECK: vpextrq $123, %xmm24, -1032(%rdx) +// CHECK: encoding: [0x62,0x63,0xfd,0x08,0x16,0x82,0xf8,0xfb,0xff,0xff,0x7b] + vpextrq $0x7b, %xmm24, -1032(%rdx) + +// CHECK: vpextrq $171, %xmm20, %rax +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0xe0,0xab] + vpextrq $0xab, %xmm20, %rax + +// CHECK: vpextrq $123, %xmm20, %rax +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0xe0,0x7b] + vpextrq $0x7b, %xmm20, %rax + +// CHECK: vpextrq $123, %xmm20, %r8 +// CHECK: encoding: [0x62,0xc3,0xfd,0x08,0x16,0xe0,0x7b] + vpextrq $0x7b, %xmm20, %r8 + +// CHECK: vpextrq $123, %xmm20, (%rcx) +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0x21,0x7b] + vpextrq $0x7b, %xmm20, (%rcx) + +// CHECK: vpextrq $123, %xmm20, 4660(%rax,%r14,8) +// CHECK: encoding: [0x62,0xa3,0xfd,0x08,0x16,0xa4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpextrq $0x7b, %xmm20, 4660(%rax,%r14,8) + +// CHECK: vpextrq $123, %xmm20, 1016(%rdx) +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0x62,0x7f,0x7b] + vpextrq $0x7b, %xmm20, 1016(%rdx) + +// CHECK: vpextrq $123, %xmm20, 1024(%rdx) +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0xa2,0x00,0x04,0x00,0x00,0x7b] + vpextrq $0x7b, %xmm20, 1024(%rdx) + +// CHECK: vpextrq $123, %xmm20, -1024(%rdx) +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0x62,0x80,0x7b] + vpextrq $0x7b, %xmm20, -1024(%rdx) + +// CHECK: vpextrq $123, %xmm20, -1032(%rdx) +// CHECK: encoding: [0x62,0xe3,0xfd,0x08,0x16,0xa2,0xf8,0xfb,0xff,0xff,0x7b] + vpextrq $0x7b, %xmm20, -1032(%rdx) + +// CHECK: vpinsrd $171, %eax, %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0xf8,0xab] + vpinsrd $0xab,%eax, %xmm25, %xmm23 + +// CHECK: vpinsrd $123, %eax, %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0xf8,0x7b] + vpinsrd $0x7b,%eax, %xmm25, %xmm23 + +// CHECK: vpinsrd $123, %ebp, %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0xfd,0x7b] + vpinsrd $0x7b,%ebp, %xmm25, %xmm23 + +// CHECK: vpinsrd $123, %r13d, %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xc3,0x35,0x00,0x22,0xfd,0x7b] + vpinsrd $0x7b,%r13d, %xmm25, %xmm23 + +// CHECK: vpinsrd $123, (%rcx), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0x39,0x7b] + vpinsrd $0x7b,(%rcx), %xmm25, %xmm23 + +// CHECK: vpinsrd $123, 291(%rax,%r14,8), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xa3,0x35,0x00,0x22,0xbc,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpinsrd $0x7b,291(%rax,%r14,8), %xmm25, %xmm23 + +// CHECK: vpinsrd $123, 508(%rdx), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0x7a,0x7f,0x7b] + vpinsrd $0x7b,508(%rdx), %xmm25, %xmm23 + +// CHECK: vpinsrd $123, 512(%rdx), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0xba,0x00,0x02,0x00,0x00,0x7b] + vpinsrd $0x7b,512(%rdx), %xmm25, %xmm23 + +// CHECK: vpinsrd $123, -512(%rdx), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0x7a,0x80,0x7b] + vpinsrd $0x7b,-512(%rdx), %xmm25, %xmm23 + +// CHECK: vpinsrd $123, -516(%rdx), %xmm25, %xmm23 +// CHECK: encoding: [0x62,0xe3,0x35,0x00,0x22,0xba,0xfc,0xfd,0xff,0xff,0x7b] + vpinsrd $0x7b,-516(%rdx), %xmm25, %xmm23 + +// CHECK: vpinsrd $171, %eax, %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0xf0,0xab] + vpinsrd $0xab,%eax, %xmm29, %xmm22 + +// CHECK: vpinsrd $123, %eax, %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0xf0,0x7b] + vpinsrd $0x7b,%eax, %xmm29, %xmm22 + +// CHECK: vpinsrd $123, %ebp, %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0xf5,0x7b] + vpinsrd $0x7b,%ebp, %xmm29, %xmm22 + +// CHECK: vpinsrd $123, %r13d, %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xc3,0x15,0x00,0x22,0xf5,0x7b] + vpinsrd $0x7b,%r13d, %xmm29, %xmm22 + +// CHECK: vpinsrd $123, (%rcx), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0x31,0x7b] + vpinsrd $0x7b,(%rcx), %xmm29, %xmm22 + +// CHECK: vpinsrd $123, 4660(%rax,%r14,8), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xa3,0x15,0x00,0x22,0xb4,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpinsrd $0x7b,4660(%rax,%r14,8), %xmm29, %xmm22 + +// CHECK: vpinsrd $123, 508(%rdx), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0x72,0x7f,0x7b] + vpinsrd $0x7b,508(%rdx), %xmm29, %xmm22 + +// CHECK: vpinsrd $123, 512(%rdx), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0xb2,0x00,0x02,0x00,0x00,0x7b] + vpinsrd $0x7b,512(%rdx), %xmm29, %xmm22 + +// CHECK: vpinsrd $123, -512(%rdx), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0x72,0x80,0x7b] + vpinsrd $0x7b,-512(%rdx), %xmm29, %xmm22 + +// CHECK: vpinsrd $123, -516(%rdx), %xmm29, %xmm22 +// CHECK: encoding: [0x62,0xe3,0x15,0x00,0x22,0xb2,0xfc,0xfd,0xff,0xff,0x7b] + vpinsrd $0x7b,-516(%rdx), %xmm29, %xmm22 + +// CHECK: vpinsrq $171, %rax, %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0xf0,0xab] + vpinsrq $0xab,%rax, %xmm20, %xmm22 + +// CHECK: vpinsrq $123, %rax, %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0xf0,0x7b] + vpinsrq $0x7b,%rax, %xmm20, %xmm22 + +// CHECK: vpinsrq $123, %r8, %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xc3,0xdd,0x00,0x22,0xf0,0x7b] + vpinsrq $0x7b,%r8, %xmm20, %xmm22 + +// CHECK: vpinsrq $123, (%rcx), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0x31,0x7b] + vpinsrq $0x7b,(%rcx), %xmm20, %xmm22 + +// CHECK: vpinsrq $123, 291(%rax,%r14,8), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xa3,0xdd,0x00,0x22,0xb4,0xf0,0x23,0x01,0x00,0x00,0x7b] + vpinsrq $0x7b,291(%rax,%r14,8), %xmm20, %xmm22 + +// CHECK: vpinsrq $123, 1016(%rdx), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0x72,0x7f,0x7b] + vpinsrq $0x7b,1016(%rdx), %xmm20, %xmm22 + +// CHECK: vpinsrq $123, 1024(%rdx), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0xb2,0x00,0x04,0x00,0x00,0x7b] + vpinsrq $0x7b,1024(%rdx), %xmm20, %xmm22 + +// CHECK: vpinsrq $123, -1024(%rdx), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0x72,0x80,0x7b] + vpinsrq $0x7b,-1024(%rdx), %xmm20, %xmm22 + +// CHECK: vpinsrq $123, -1032(%rdx), %xmm20, %xmm22 +// CHECK: encoding: [0x62,0xe3,0xdd,0x00,0x22,0xb2,0xf8,0xfb,0xff,0xff,0x7b] + vpinsrq $0x7b,-1032(%rdx), %xmm20, %xmm22 + +// CHECK: vpinsrq $171, %rax, %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0xc8,0xab] + vpinsrq $0xab,%rax, %xmm19, %xmm25 + +// CHECK: vpinsrq $123, %rax, %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0xc8,0x7b] + vpinsrq $0x7b,%rax, %xmm19, %xmm25 + +// CHECK: vpinsrq $123, %r8, %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x43,0xe5,0x00,0x22,0xc8,0x7b] + vpinsrq $0x7b,%r8, %xmm19, %xmm25 + +// CHECK: vpinsrq $123, (%rcx), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0x09,0x7b] + vpinsrq $0x7b,(%rcx), %xmm19, %xmm25 + +// CHECK: vpinsrq $123, 4660(%rax,%r14,8), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x23,0xe5,0x00,0x22,0x8c,0xf0,0x34,0x12,0x00,0x00,0x7b] + vpinsrq $0x7b,4660(%rax,%r14,8), %xmm19, %xmm25 + +// CHECK: vpinsrq $123, 1016(%rdx), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0x4a,0x7f,0x7b] + vpinsrq $0x7b,1016(%rdx), %xmm19, %xmm25 + +// CHECK: vpinsrq $123, 1024(%rdx), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0x8a,0x00,0x04,0x00,0x00,0x7b] + vpinsrq $0x7b,1024(%rdx), %xmm19, %xmm25 + +// CHECK: vpinsrq $123, -1024(%rdx), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0x4a,0x80,0x7b] + vpinsrq $0x7b,-1024(%rdx), %xmm19, %xmm25 + +// CHECK: vpinsrq $123, -1032(%rdx), %xmm19, %xmm25 +// CHECK: encoding: [0x62,0x63,0xe5,0x00,0x22,0x8a,0xf8,0xfb,0xff,0xff,0x7b] + vpinsrq $0x7b,-1032(%rdx), %xmm19, %xmm25 +