Index: include/llvm/IR/IntrinsicsX86.td =================================================================== --- include/llvm/IR/IntrinsicsX86.td +++ include/llvm/IR/IntrinsicsX86.td @@ -3877,6 +3877,24 @@ def int_x86_avx512_mask_pmull_q_512 : GCCBuiltin<"__builtin_ia32_pmullq512_mask">, Intrinsic<[llvm_v8i64_ty], [llvm_v8i64_ty, llvm_v8i64_ty, llvm_v8i64_ty, llvm_i8_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_b_512 : GCCBuiltin<"__builtin_ia32_pavgb512_mask">, + Intrinsic<[llvm_v64i8_ty], [llvm_v64i8_ty, llvm_v64i8_ty, + llvm_v64i8_ty, llvm_i64_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_w_512 : GCCBuiltin<"__builtin_ia32_pavgw512_mask">, + Intrinsic<[llvm_v32i16_ty], [llvm_v32i16_ty, llvm_v32i16_ty, + llvm_v32i16_ty, llvm_i32_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_b_128 : GCCBuiltin<"__builtin_ia32_pavgb128_mask">, + Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty, + llvm_v16i8_ty, llvm_i16_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_b_256 : GCCBuiltin<"__builtin_ia32_pavgb256_mask">, + Intrinsic<[llvm_v32i8_ty], [llvm_v32i8_ty, llvm_v32i8_ty, + llvm_v32i8_ty, llvm_i32_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_w_128 : GCCBuiltin<"__builtin_ia32_pavgw128_mask">, + Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty, + llvm_v8i16_ty, llvm_i8_ty], [IntrNoMem]>; + def int_x86_avx512_mask_pavg_w_256 : GCCBuiltin<"__builtin_ia32_pavgw256_mask">, + Intrinsic<[llvm_v16i16_ty], [llvm_v16i16_ty, llvm_v16i16_ty, + llvm_v16i16_ty, llvm_i16_ty], [IntrNoMem]>; } // Gather and Scatter ops Index: lib/Target/X86/X86ISelLowering.h =================================================================== --- lib/Target/X86/X86ISelLowering.h +++ lib/Target/X86/X86ISelLowering.h @@ -218,7 +218,8 @@ // Integer add/sub with signed saturation. ADDS, SUBS, - + // Unsigned Integer average + AVG, /// Integer horizontal add. HADD, Index: lib/Target/X86/X86InstrAVX512.td =================================================================== --- lib/Target/X86/X86InstrAVX512.td +++ lib/Target/X86/X86InstrAVX512.td @@ -3158,6 +3158,8 @@ defm VPMULLQ : avx512_binop_rm_vl_q<0x40, "vpmull", mul, SSE_INTALU_ITINS_P, HasDQI, 1>, T8PD; +defm VPAVG : avx512_binop_rm_vl_bw<0xE0, 0xE3, "vpavg", X86avg, + SSE_INTALU_ITINS_P, HasBWI, 1>; multiclass avx512_binop_all opc, string OpcodeStr, OpndItins itins, SDNode OpNode, bit IsCommutable = 0> { Index: lib/Target/X86/X86InstrFragmentsSIMD.td =================================================================== --- lib/Target/X86/X86InstrFragmentsSIMD.td +++ lib/Target/X86/X86InstrFragmentsSIMD.td @@ -187,6 +187,7 @@ def X86subus : SDNode<"X86ISD::SUBUS", SDTIntBinOp>; def X86adds : SDNode<"X86ISD::ADDS", SDTIntBinOp>; def X86subs : SDNode<"X86ISD::SUBS", SDTIntBinOp>; +def X86avg : SDNode<"X86ISD::AVG" , SDTIntBinOp>; def X86ptest : SDNode<"X86ISD::PTEST", SDTX86CmpPTest>; def X86testp : SDNode<"X86ISD::TESTP", SDTX86CmpPTest>; def X86kortest : SDNode<"X86ISD::KORTEST", SDTX86CmpPTest>; Index: lib/Target/X86/X86IntrinsicsInfo.h =================================================================== --- lib/Target/X86/X86IntrinsicsInfo.h +++ lib/Target/X86/X86IntrinsicsInfo.h @@ -476,6 +476,12 @@ X86_INTRINSIC_DATA(avx512_mask_pandn_q_128, INTR_TYPE_2OP_MASK, X86ISD::ANDNP, 0), X86_INTRINSIC_DATA(avx512_mask_pandn_q_256, INTR_TYPE_2OP_MASK, X86ISD::ANDNP, 0), X86_INTRINSIC_DATA(avx512_mask_pandn_q_512, INTR_TYPE_2OP_MASK, X86ISD::ANDNP, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_b_128, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_b_256, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_b_512, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_w_128, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_w_256, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), + X86_INTRINSIC_DATA(avx512_mask_pavg_w_512, INTR_TYPE_2OP_MASK, X86ISD::AVG, 0), X86_INTRINSIC_DATA(avx512_mask_pcmpeq_b_128, CMP_MASK, X86ISD::PCMPEQM, 0), X86_INTRINSIC_DATA(avx512_mask_pcmpeq_b_256, CMP_MASK, X86ISD::PCMPEQM, 0), X86_INTRINSIC_DATA(avx512_mask_pcmpeq_b_512, CMP_MASK, X86ISD::PCMPEQM, 0), Index: test/CodeGen/X86/avx512bw-intrinsics.ll =================================================================== --- test/CodeGen/X86/avx512bw-intrinsics.ll +++ test/CodeGen/X86/avx512bw-intrinsics.ll @@ -892,3 +892,29 @@ %res2 = add <32 x i16> %res, %res1 ret <32 x i16> %res2 } + +declare <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_b_512 +; CHECK-NOT: call +; CHECK: vpavgb %zmm +; CHECK: {%k1} +define <64 x i8>@test_int_x86_avx512_mask_pavg_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { + %res = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) + %res1 = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) + %res2 = add <64 x i8> %res, %res1 + ret <64 x i8> %res2 +} + +declare <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_w_512 +; CHECK-NOT: call +; CHECK: vpavgw %zmm +; CHECK: {%k1} +define <32 x i16>@test_int_x86_avx512_mask_pavg_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { + %res = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) + %res1 = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) + %res2 = add <32 x i16> %res, %res1 + ret <32 x i16> %res2 +} \ No newline at end of file Index: test/CodeGen/X86/avx512bwvl-intrinsics.ll =================================================================== --- test/CodeGen/X86/avx512bwvl-intrinsics.ll +++ test/CodeGen/X86/avx512bwvl-intrinsics.ll @@ -2876,3 +2876,55 @@ %res2 = add <16 x i16> %res, %res1 ret <16 x i16> %res2 } + +declare <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_b_128 +; CHECK-NOT: call +; CHECK: vpavgb %xmm +; CHECK: {%k1} +define <16 x i8>@test_int_x86_avx512_mask_pavg_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { + %res = call <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) + %res1 = call <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1) + %res2 = add <16 x i8> %res, %res1 + ret <16 x i8> %res2 +} + +declare <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_b_256 +; CHECK-NOT: call +; CHECK: vpavgb %ymm +; CHECK: {%k1} +define <32 x i8>@test_int_x86_avx512_mask_pavg_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { + %res = call <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) + %res1 = call <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1) + %res2 = add <32 x i8> %res, %res1 + ret <32 x i8> %res2 +} + +declare <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_w_128 +; CHECK-NOT: call +; CHECK: vpavgw %xmm +; CHECK: {%k1} +define <8 x i16>@test_int_x86_avx512_mask_pavg_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) { + %res = call <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) + %res1 = call <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1) + %res2 = add <8 x i16> %res, %res1 + ret <8 x i16> %res2 +} + +declare <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16) + +; CHECK-LABEL: @test_int_x86_avx512_mask_pavg_w_256 +; CHECK-NOT: call +; CHECK: vpavgw %ymm +; CHECK: {%k1} +define <16 x i16>@test_int_x86_avx512_mask_pavg_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) { + %res = call <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) + %res1 = call <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1) + %res2 = add <16 x i16> %res, %res1 + ret <16 x i16> %res2 +} Index: test/MC/X86/x86-64-avx512bw.s =================================================================== --- test/MC/X86/x86-64-avx512bw.s +++ test/MC/X86/x86-64-avx512bw.s @@ -3343,3 +3343,148 @@ // CHECK: vpermw -8256(%rdx), %zmm19, %zmm22 // CHECK: encoding: [0x62,0xe2,0xe5,0x40,0x8d,0xb2,0xc0,0xdf,0xff,0xff] vpermw -8256(%rdx), %zmm19, %zmm22 + +// CHECK: vpavgb %zmm21, %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xa1,0x15,0x40,0xe0,0xcd] + vpavgb %zmm21, %zmm29, %zmm17 + +// CHECK: vpavgb %zmm21, %zmm29, %zmm17 {%k2} +// CHECK: encoding: [0x62,0xa1,0x15,0x42,0xe0,0xcd] + vpavgb %zmm21, %zmm29, %zmm17 {%k2} + +// CHECK: vpavgb %zmm21, %zmm29, %zmm17 {%k2} {z} +// CHECK: encoding: [0x62,0xa1,0x15,0xc2,0xe0,0xcd] + vpavgb %zmm21, %zmm29, %zmm17 {%k2} {z} + +// CHECK: vpavgb (%rcx), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0xe0,0x09] + vpavgb (%rcx), %zmm29, %zmm17 + +// CHECK: vpavgb 291(%rax,%r14,8), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xa1,0x15,0x40,0xe0,0x8c,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %zmm29, %zmm17 + +// CHECK: vpavgb 8128(%rdx), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0xe0,0x4a,0x7f] + vpavgb 8128(%rdx), %zmm29, %zmm17 + +// CHECK: vpavgb 8192(%rdx), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0xe0,0x8a,0x00,0x20,0x00,0x00] + vpavgb 8192(%rdx), %zmm29, %zmm17 + +// CHECK: vpavgb -8192(%rdx), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0xe0,0x4a,0x80] + vpavgb -8192(%rdx), %zmm29, %zmm17 + +// CHECK: vpavgb -8256(%rdx), %zmm29, %zmm17 +// CHECK: encoding: [0x62,0xe1,0x15,0x40,0xe0,0x8a,0xc0,0xdf,0xff,0xff] + vpavgb -8256(%rdx), %zmm29, %zmm17 + +// CHECK: vpavgw %zmm22, %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xa1,0x25,0x40,0xe3,0xde] + vpavgw %zmm22, %zmm27, %zmm19 + +// CHECK: vpavgw %zmm22, %zmm27, %zmm19 {%k4} +// CHECK: encoding: [0x62,0xa1,0x25,0x44,0xe3,0xde] + vpavgw %zmm22, %zmm27, %zmm19 {%k4} + +// CHECK: vpavgw %zmm22, %zmm27, %zmm19 {%k4} {z} +// CHECK: encoding: [0x62,0xa1,0x25,0xc4,0xe3,0xde] + vpavgw %zmm22, %zmm27, %zmm19 {%k4} {z} + +// CHECK: vpavgw (%rcx), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x25,0x40,0xe3,0x19] + vpavgw (%rcx), %zmm27, %zmm19 + +// CHECK: vpavgw 291(%rax,%r14,8), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xa1,0x25,0x40,0xe3,0x9c,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %zmm27, %zmm19 + +// CHECK: vpavgw 8128(%rdx), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x25,0x40,0xe3,0x5a,0x7f] + vpavgw 8128(%rdx), %zmm27, %zmm19 + +// CHECK: vpavgw 8192(%rdx), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x25,0x40,0xe3,0x9a,0x00,0x20,0x00,0x00] + vpavgw 8192(%rdx), %zmm27, %zmm19 + +// CHECK: vpavgw -8192(%rdx), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x25,0x40,0xe3,0x5a,0x80] + vpavgw -8192(%rdx), %zmm27, %zmm19 + +// CHECK: vpavgw -8256(%rdx), %zmm27, %zmm19 +// CHECK: encoding: [0x62,0xe1,0x25,0x40,0xe3,0x9a,0xc0,0xdf,0xff,0xff] + vpavgw -8256(%rdx), %zmm27, %zmm19 + +// CHECK: vpavgb %zmm19, %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x21,0x25,0x40,0xe0,0xc3] + vpavgb %zmm19, %zmm27, %zmm24 + +// CHECK: vpavgb %zmm19, %zmm27, %zmm24 {%k4} +// CHECK: encoding: [0x62,0x21,0x25,0x44,0xe0,0xc3] + vpavgb %zmm19, %zmm27, %zmm24 {%k4} + +// CHECK: vpavgb %zmm19, %zmm27, %zmm24 {%k4} {z} +// CHECK: encoding: [0x62,0x21,0x25,0xc4,0xe0,0xc3] + vpavgb %zmm19, %zmm27, %zmm24 {%k4} {z} + +// CHECK: vpavgb (%rcx), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x61,0x25,0x40,0xe0,0x01] + vpavgb (%rcx), %zmm27, %zmm24 + +// CHECK: vpavgb 291(%rax,%r14,8), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x21,0x25,0x40,0xe0,0x84,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %zmm27, %zmm24 + +// CHECK: vpavgb 8128(%rdx), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x61,0x25,0x40,0xe0,0x42,0x7f] + vpavgb 8128(%rdx), %zmm27, %zmm24 + +// CHECK: vpavgb 8192(%rdx), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x61,0x25,0x40,0xe0,0x82,0x00,0x20,0x00,0x00] + vpavgb 8192(%rdx), %zmm27, %zmm24 + +// CHECK: vpavgb -8192(%rdx), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x61,0x25,0x40,0xe0,0x42,0x80] + vpavgb -8192(%rdx), %zmm27, %zmm24 + +// CHECK: vpavgb -8256(%rdx), %zmm27, %zmm24 +// CHECK: encoding: [0x62,0x61,0x25,0x40,0xe0,0x82,0xc0,0xdf,0xff,0xff] + vpavgb -8256(%rdx), %zmm27, %zmm24 + +// CHECK: vpavgw %zmm26, %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x01,0x15,0x40,0xe3,0xea] + vpavgw %zmm26, %zmm29, %zmm29 + +// CHECK: vpavgw %zmm26, %zmm29, %zmm29 {%k6} +// CHECK: encoding: [0x62,0x01,0x15,0x46,0xe3,0xea] + vpavgw %zmm26, %zmm29, %zmm29 {%k6} + +// CHECK: vpavgw %zmm26, %zmm29, %zmm29 {%k6} {z} +// CHECK: encoding: [0x62,0x01,0x15,0xc6,0xe3,0xea] + vpavgw %zmm26, %zmm29, %zmm29 {%k6} {z} + +// CHECK: vpavgw (%rcx), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x61,0x15,0x40,0xe3,0x29] + vpavgw (%rcx), %zmm29, %zmm29 + +// CHECK: vpavgw 291(%rax,%r14,8), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x21,0x15,0x40,0xe3,0xac,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %zmm29, %zmm29 + +// CHECK: vpavgw 8128(%rdx), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x61,0x15,0x40,0xe3,0x6a,0x7f] + vpavgw 8128(%rdx), %zmm29, %zmm29 + +// CHECK: vpavgw 8192(%rdx), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x61,0x15,0x40,0xe3,0xaa,0x00,0x20,0x00,0x00] + vpavgw 8192(%rdx), %zmm29, %zmm29 + +// CHECK: vpavgw -8192(%rdx), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x61,0x15,0x40,0xe3,0x6a,0x80] + vpavgw -8192(%rdx), %zmm29, %zmm29 + +// CHECK: vpavgw -8256(%rdx), %zmm29, %zmm29 +// CHECK: encoding: [0x62,0x61,0x15,0x40,0xe3,0xaa,0xc0,0xdf,0xff,0xff] + vpavgw -8256(%rdx), %zmm29, %zmm29 + Index: test/MC/X86/x86-64-avx512bw_vl.s =================================================================== --- test/MC/X86/x86-64-avx512bw_vl.s +++ test/MC/X86/x86-64-avx512bw_vl.s @@ -5936,3 +5936,434 @@ // CHECK: encoding: [0x62,0x61,0xff,0x28,0x70,0x8a,0xe0,0xef,0xff,0xff,0x7b] vpshuflw $123, -4128(%rdx), %ymm25 +// CHECK: vpavgb %xmm22, %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xa1,0x3d,0x00,0xe0,0xee] + vpavgb %xmm22, %xmm24, %xmm21 + +// CHECK: vpavgb %xmm22, %xmm24, %xmm21 {%k7} +// CHECK: encoding: [0x62,0xa1,0x3d,0x07,0xe0,0xee] + vpavgb %xmm22, %xmm24, %xmm21 {%k7} + +// CHECK: vpavgb %xmm22, %xmm24, %xmm21 {%k7} {z} +// CHECK: encoding: [0x62,0xa1,0x3d,0x87,0xe0,0xee] + vpavgb %xmm22, %xmm24, %xmm21 {%k7} {z} + +// CHECK: vpavgb (%rcx), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xe1,0x3d,0x00,0xe0,0x29] + vpavgb (%rcx), %xmm24, %xmm21 + +// CHECK: vpavgb 4660(%rax,%r14,8), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xa1,0x3d,0x00,0xe0,0xac,0xf0,0x34,0x12,0x00,0x00] + vpavgb 4660(%rax,%r14,8), %xmm24, %xmm21 + +// CHECK: vpavgb 2032(%rdx), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xe1,0x3d,0x00,0xe0,0x6a,0x7f] + vpavgb 2032(%rdx), %xmm24, %xmm21 + +// CHECK: vpavgb 2048(%rdx), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xe1,0x3d,0x00,0xe0,0xaa,0x00,0x08,0x00,0x00] + vpavgb 2048(%rdx), %xmm24, %xmm21 + +// CHECK: vpavgb -2048(%rdx), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xe1,0x3d,0x00,0xe0,0x6a,0x80] + vpavgb -2048(%rdx), %xmm24, %xmm21 + +// CHECK: vpavgb -2064(%rdx), %xmm24, %xmm21 +// CHECK: encoding: [0x62,0xe1,0x3d,0x00,0xe0,0xaa,0xf0,0xf7,0xff,0xff] + vpavgb -2064(%rdx), %xmm24, %xmm21 + +// CHECK: vpavgb %ymm18, %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x21,0x6d,0x20,0xe0,0xd2] + vpavgb %ymm18, %ymm18, %ymm26 + +// CHECK: vpavgb %ymm18, %ymm18, %ymm26 {%k4} +// CHECK: encoding: [0x62,0x21,0x6d,0x24,0xe0,0xd2] + vpavgb %ymm18, %ymm18, %ymm26 {%k4} + +// CHECK: vpavgb %ymm18, %ymm18, %ymm26 {%k4} {z} +// CHECK: encoding: [0x62,0x21,0x6d,0xa4,0xe0,0xd2] + vpavgb %ymm18, %ymm18, %ymm26 {%k4} {z} + +// CHECK: vpavgb (%rcx), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe0,0x11] + vpavgb (%rcx), %ymm18, %ymm26 + +// CHECK: vpavgb 4660(%rax,%r14,8), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x21,0x6d,0x20,0xe0,0x94,0xf0,0x34,0x12,0x00,0x00] + vpavgb 4660(%rax,%r14,8), %ymm18, %ymm26 + +// CHECK: vpavgb 4064(%rdx), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe0,0x52,0x7f] + vpavgb 4064(%rdx), %ymm18, %ymm26 + +// CHECK: vpavgb 4096(%rdx), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe0,0x92,0x00,0x10,0x00,0x00] + vpavgb 4096(%rdx), %ymm18, %ymm26 + +// CHECK: vpavgb -4096(%rdx), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe0,0x52,0x80] + vpavgb -4096(%rdx), %ymm18, %ymm26 + +// CHECK: vpavgb -4128(%rdx), %ymm18, %ymm26 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe0,0x92,0xe0,0xef,0xff,0xff] + vpavgb -4128(%rdx), %ymm18, %ymm26 + +// CHECK: vpavgw %xmm23, %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x21,0x1d,0x00,0xe3,0xef] + vpavgw %xmm23, %xmm28, %xmm29 + +// CHECK: vpavgw %xmm23, %xmm28, %xmm29 {%k7} +// CHECK: encoding: [0x62,0x21,0x1d,0x07,0xe3,0xef] + vpavgw %xmm23, %xmm28, %xmm29 {%k7} + +// CHECK: vpavgw %xmm23, %xmm28, %xmm29 {%k7} {z} +// CHECK: encoding: [0x62,0x21,0x1d,0x87,0xe3,0xef] + vpavgw %xmm23, %xmm28, %xmm29 {%k7} {z} + +// CHECK: vpavgw (%rcx), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0xe3,0x29] + vpavgw (%rcx), %xmm28, %xmm29 + +// CHECK: vpavgw 4660(%rax,%r14,8), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x21,0x1d,0x00,0xe3,0xac,0xf0,0x34,0x12,0x00,0x00] + vpavgw 4660(%rax,%r14,8), %xmm28, %xmm29 + +// CHECK: vpavgw 2032(%rdx), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0xe3,0x6a,0x7f] + vpavgw 2032(%rdx), %xmm28, %xmm29 + +// CHECK: vpavgw 2048(%rdx), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0xe3,0xaa,0x00,0x08,0x00,0x00] + vpavgw 2048(%rdx), %xmm28, %xmm29 + +// CHECK: vpavgw -2048(%rdx), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0xe3,0x6a,0x80] + vpavgw -2048(%rdx), %xmm28, %xmm29 + +// CHECK: vpavgw -2064(%rdx), %xmm28, %xmm29 +// CHECK: encoding: [0x62,0x61,0x1d,0x00,0xe3,0xaa,0xf0,0xf7,0xff,0xff] + vpavgw -2064(%rdx), %xmm28, %xmm29 + +// CHECK: vpavgw %ymm17, %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x21,0x6d,0x20,0xe3,0xd9] + vpavgw %ymm17, %ymm18, %ymm27 + +// CHECK: vpavgw %ymm17, %ymm18, %ymm27 {%k5} +// CHECK: encoding: [0x62,0x21,0x6d,0x25,0xe3,0xd9] + vpavgw %ymm17, %ymm18, %ymm27 {%k5} + +// CHECK: vpavgw %ymm17, %ymm18, %ymm27 {%k5} {z} +// CHECK: encoding: [0x62,0x21,0x6d,0xa5,0xe3,0xd9] + vpavgw %ymm17, %ymm18, %ymm27 {%k5} {z} + +// CHECK: vpavgw (%rcx), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe3,0x19] + vpavgw (%rcx), %ymm18, %ymm27 + +// CHECK: vpavgw 4660(%rax,%r14,8), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x21,0x6d,0x20,0xe3,0x9c,0xf0,0x34,0x12,0x00,0x00] + vpavgw 4660(%rax,%r14,8), %ymm18, %ymm27 + +// CHECK: vpavgw 4064(%rdx), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe3,0x5a,0x7f] + vpavgw 4064(%rdx), %ymm18, %ymm27 + +// CHECK: vpavgw 4096(%rdx), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe3,0x9a,0x00,0x10,0x00,0x00] + vpavgw 4096(%rdx), %ymm18, %ymm27 + +// CHECK: vpavgw -4096(%rdx), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe3,0x5a,0x80] + vpavgw -4096(%rdx), %ymm18, %ymm27 + +// CHECK: vpavgw -4128(%rdx), %ymm18, %ymm27 +// CHECK: encoding: [0x62,0x61,0x6d,0x20,0xe3,0x9a,0xe0,0xef,0xff,0xff] + vpavgw -4128(%rdx), %ymm18, %ymm27 + +// CHECK: vpavgb %xmm20, %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x21,0x4d,0x00,0xe0,0xd4] + vpavgb %xmm20, %xmm22, %xmm26 + +// CHECK: vpavgb %xmm20, %xmm22, %xmm26 {%k6} +// CHECK: encoding: [0x62,0x21,0x4d,0x06,0xe0,0xd4] + vpavgb %xmm20, %xmm22, %xmm26 {%k6} + +// CHECK: vpavgb %xmm20, %xmm22, %xmm26 {%k6} {z} +// CHECK: encoding: [0x62,0x21,0x4d,0x86,0xe0,0xd4] + vpavgb %xmm20, %xmm22, %xmm26 {%k6} {z} + +// CHECK: vpavgb (%rcx), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x00,0xe0,0x11] + vpavgb (%rcx), %xmm22, %xmm26 + +// CHECK: vpavgb 291(%rax,%r14,8), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x21,0x4d,0x00,0xe0,0x94,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %xmm22, %xmm26 + +// CHECK: vpavgb 2032(%rdx), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x00,0xe0,0x52,0x7f] + vpavgb 2032(%rdx), %xmm22, %xmm26 + +// CHECK: vpavgb 2048(%rdx), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x00,0xe0,0x92,0x00,0x08,0x00,0x00] + vpavgb 2048(%rdx), %xmm22, %xmm26 + +// CHECK: vpavgb -2048(%rdx), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x00,0xe0,0x52,0x80] + vpavgb -2048(%rdx), %xmm22, %xmm26 + +// CHECK: vpavgb -2064(%rdx), %xmm22, %xmm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x00,0xe0,0x92,0xf0,0xf7,0xff,0xff] + vpavgb -2064(%rdx), %xmm22, %xmm26 + +// CHECK: vpavgb %ymm18, %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x21,0x4d,0x20,0xe0,0xea] + vpavgb %ymm18, %ymm22, %ymm29 + +// CHECK: vpavgb %ymm18, %ymm22, %ymm29 {%k1} +// CHECK: encoding: [0x62,0x21,0x4d,0x21,0xe0,0xea] + vpavgb %ymm18, %ymm22, %ymm29 {%k1} + +// CHECK: vpavgb %ymm18, %ymm22, %ymm29 {%k1} {z} +// CHECK: encoding: [0x62,0x21,0x4d,0xa1,0xe0,0xea] + vpavgb %ymm18, %ymm22, %ymm29 {%k1} {z} + +// CHECK: vpavgb (%rcx), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x29] + vpavgb (%rcx), %ymm22, %ymm29 + +// CHECK: vpavgb 291(%rax,%r14,8), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x21,0x4d,0x20,0xe0,0xac,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %ymm22, %ymm29 + +// CHECK: vpavgb 4064(%rdx), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x6a,0x7f] + vpavgb 4064(%rdx), %ymm22, %ymm29 + +// CHECK: vpavgb 4096(%rdx), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0xaa,0x00,0x10,0x00,0x00] + vpavgb 4096(%rdx), %ymm22, %ymm29 + +// CHECK: vpavgb -4096(%rdx), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x6a,0x80] + vpavgb -4096(%rdx), %ymm22, %ymm29 + +// CHECK: vpavgb -4128(%rdx), %ymm22, %ymm29 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0xaa,0xe0,0xef,0xff,0xff] + vpavgb -4128(%rdx), %ymm22, %ymm29 + +// CHECK: vpavgw %xmm23, %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x21,0x3d,0x00,0xe3,0xe7] + vpavgw %xmm23, %xmm24, %xmm28 + +// CHECK: vpavgw %xmm23, %xmm24, %xmm28 {%k7} +// CHECK: encoding: [0x62,0x21,0x3d,0x07,0xe3,0xe7] + vpavgw %xmm23, %xmm24, %xmm28 {%k7} + +// CHECK: vpavgw %xmm23, %xmm24, %xmm28 {%k7} {z} +// CHECK: encoding: [0x62,0x21,0x3d,0x87,0xe3,0xe7] + vpavgw %xmm23, %xmm24, %xmm28 {%k7} {z} + +// CHECK: vpavgw (%rcx), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x61,0x3d,0x00,0xe3,0x21] + vpavgw (%rcx), %xmm24, %xmm28 + +// CHECK: vpavgw 291(%rax,%r14,8), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x21,0x3d,0x00,0xe3,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %xmm24, %xmm28 + +// CHECK: vpavgw 2032(%rdx), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x61,0x3d,0x00,0xe3,0x62,0x7f] + vpavgw 2032(%rdx), %xmm24, %xmm28 + +// CHECK: vpavgw 2048(%rdx), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x61,0x3d,0x00,0xe3,0xa2,0x00,0x08,0x00,0x00] + vpavgw 2048(%rdx), %xmm24, %xmm28 + +// CHECK: vpavgw -2048(%rdx), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x61,0x3d,0x00,0xe3,0x62,0x80] + vpavgw -2048(%rdx), %xmm24, %xmm28 + +// CHECK: vpavgw -2064(%rdx), %xmm24, %xmm28 +// CHECK: encoding: [0x62,0x61,0x3d,0x00,0xe3,0xa2,0xf0,0xf7,0xff,0xff] + vpavgw -2064(%rdx), %xmm24, %xmm28 + +// CHECK: vpavgw %ymm22, %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xa1,0x2d,0x20,0xe3,0xf6] + vpavgw %ymm22, %ymm26, %ymm22 + +// CHECK: vpavgw %ymm22, %ymm26, %ymm22 {%k7} +// CHECK: encoding: [0x62,0xa1,0x2d,0x27,0xe3,0xf6] + vpavgw %ymm22, %ymm26, %ymm22 {%k7} + +// CHECK: vpavgw %ymm22, %ymm26, %ymm22 {%k7} {z} +// CHECK: encoding: [0x62,0xa1,0x2d,0xa7,0xe3,0xf6] + vpavgw %ymm22, %ymm26, %ymm22 {%k7} {z} + +// CHECK: vpavgw (%rcx), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0xe3,0x31] + vpavgw (%rcx), %ymm26, %ymm22 + +// CHECK: vpavgw 291(%rax,%r14,8), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xa1,0x2d,0x20,0xe3,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %ymm26, %ymm22 + +// CHECK: vpavgw 4064(%rdx), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0xe3,0x72,0x7f] + vpavgw 4064(%rdx), %ymm26, %ymm22 + +// CHECK: vpavgw 4096(%rdx), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0xe3,0xb2,0x00,0x10,0x00,0x00] + vpavgw 4096(%rdx), %ymm26, %ymm22 + +// CHECK: vpavgw -4096(%rdx), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0xe3,0x72,0x80] + vpavgw -4096(%rdx), %ymm26, %ymm22 + +// CHECK: vpavgw -4128(%rdx), %ymm26, %ymm22 +// CHECK: encoding: [0x62,0xe1,0x2d,0x20,0xe3,0xb2,0xe0,0xef,0xff,0xff] + vpavgw -4128(%rdx), %ymm26, %ymm22 + +// CHECK: vpavgb %xmm26, %xmm19, %xmm20 +// CHECK: encoding: [0x62,0x81,0x65,0x00,0xe0,0xe2] + vpavgb %xmm26, %xmm19, %xmm20 + +// CHECK: vpavgb %xmm26, %xmm19, %xmm20 {%k7} +// CHECK: encoding: [0x62,0x81,0x65,0x07,0xe0,0xe2] + vpavgb %xmm26, %xmm19, %xmm20 {%k7} + +// CHECK: vpavgb %xmm26, %xmm19, %xmm20 {%k7} {z} +// CHECK: encoding: [0x62,0x81,0x65,0x87,0xe0,0xe2] + vpavgb %xmm26, %xmm19, %xmm20 {%k7} {z} + +// CHECK: vpavgb (%rcx), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xe1,0x65,0x00,0xe0,0x21] + vpavgb (%rcx), %xmm19, %xmm20 + +// CHECK: vpavgb 291(%rax,%r14,8), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xa1,0x65,0x00,0xe0,0xa4,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %xmm19, %xmm20 + +// CHECK: vpavgb 2032(%rdx), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xe1,0x65,0x00,0xe0,0x62,0x7f] + vpavgb 2032(%rdx), %xmm19, %xmm20 + +// CHECK: vpavgb 2048(%rdx), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xe1,0x65,0x00,0xe0,0xa2,0x00,0x08,0x00,0x00] + vpavgb 2048(%rdx), %xmm19, %xmm20 + +// CHECK: vpavgb -2048(%rdx), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xe1,0x65,0x00,0xe0,0x62,0x80] + vpavgb -2048(%rdx), %xmm19, %xmm20 + +// CHECK: vpavgb -2064(%rdx), %xmm19, %xmm20 +// CHECK: encoding: [0x62,0xe1,0x65,0x00,0xe0,0xa2,0xf0,0xf7,0xff,0xff] + vpavgb -2064(%rdx), %xmm19, %xmm20 + +// CHECK: vpavgb %ymm17, %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x21,0x4d,0x20,0xe0,0xd1] + vpavgb %ymm17, %ymm22, %ymm26 + +// CHECK: vpavgb %ymm17, %ymm22, %ymm26 {%k5} +// CHECK: encoding: [0x62,0x21,0x4d,0x25,0xe0,0xd1] + vpavgb %ymm17, %ymm22, %ymm26 {%k5} + +// CHECK: vpavgb %ymm17, %ymm22, %ymm26 {%k5} {z} +// CHECK: encoding: [0x62,0x21,0x4d,0xa5,0xe0,0xd1] + vpavgb %ymm17, %ymm22, %ymm26 {%k5} {z} + +// CHECK: vpavgb (%rcx), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x11] + vpavgb (%rcx), %ymm22, %ymm26 + +// CHECK: vpavgb 291(%rax,%r14,8), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x21,0x4d,0x20,0xe0,0x94,0xf0,0x23,0x01,0x00,0x00] + vpavgb 291(%rax,%r14,8), %ymm22, %ymm26 + +// CHECK: vpavgb 4064(%rdx), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x52,0x7f] + vpavgb 4064(%rdx), %ymm22, %ymm26 + +// CHECK: vpavgb 4096(%rdx), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x92,0x00,0x10,0x00,0x00] + vpavgb 4096(%rdx), %ymm22, %ymm26 + +// CHECK: vpavgb -4096(%rdx), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x52,0x80] + vpavgb -4096(%rdx), %ymm22, %ymm26 + +// CHECK: vpavgb -4128(%rdx), %ymm22, %ymm26 +// CHECK: encoding: [0x62,0x61,0x4d,0x20,0xe0,0x92,0xe0,0xef,0xff,0xff] + vpavgb -4128(%rdx), %ymm22, %ymm26 + +// CHECK: vpavgw %xmm20, %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xa1,0x6d,0x00,0xe3,0xf4] + vpavgw %xmm20, %xmm18, %xmm22 + +// CHECK: vpavgw %xmm20, %xmm18, %xmm22 {%k7} +// CHECK: encoding: [0x62,0xa1,0x6d,0x07,0xe3,0xf4] + vpavgw %xmm20, %xmm18, %xmm22 {%k7} + +// CHECK: vpavgw %xmm20, %xmm18, %xmm22 {%k7} {z} +// CHECK: encoding: [0x62,0xa1,0x6d,0x87,0xe3,0xf4] + vpavgw %xmm20, %xmm18, %xmm22 {%k7} {z} + +// CHECK: vpavgw (%rcx), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0xe3,0x31] + vpavgw (%rcx), %xmm18, %xmm22 + +// CHECK: vpavgw 291(%rax,%r14,8), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xa1,0x6d,0x00,0xe3,0xb4,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %xmm18, %xmm22 + +// CHECK: vpavgw 2032(%rdx), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0xe3,0x72,0x7f] + vpavgw 2032(%rdx), %xmm18, %xmm22 + +// CHECK: vpavgw 2048(%rdx), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0xe3,0xb2,0x00,0x08,0x00,0x00] + vpavgw 2048(%rdx), %xmm18, %xmm22 + +// CHECK: vpavgw -2048(%rdx), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0xe3,0x72,0x80] + vpavgw -2048(%rdx), %xmm18, %xmm22 + +// CHECK: vpavgw -2064(%rdx), %xmm18, %xmm22 +// CHECK: encoding: [0x62,0xe1,0x6d,0x00,0xe3,0xb2,0xf0,0xf7,0xff,0xff] + vpavgw -2064(%rdx), %xmm18, %xmm22 + +// CHECK: vpavgw %ymm21, %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xa1,0x45,0x20,0xe3,0xed] + vpavgw %ymm21, %ymm23, %ymm21 + +// CHECK: vpavgw %ymm21, %ymm23, %ymm21 {%k2} +// CHECK: encoding: [0x62,0xa1,0x45,0x22,0xe3,0xed] + vpavgw %ymm21, %ymm23, %ymm21 {%k2} + +// CHECK: vpavgw %ymm21, %ymm23, %ymm21 {%k2} {z} +// CHECK: encoding: [0x62,0xa1,0x45,0xa2,0xe3,0xed] + vpavgw %ymm21, %ymm23, %ymm21 {%k2} {z} + +// CHECK: vpavgw (%rcx), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xe1,0x45,0x20,0xe3,0x29] + vpavgw (%rcx), %ymm23, %ymm21 + +// CHECK: vpavgw 291(%rax,%r14,8), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xa1,0x45,0x20,0xe3,0xac,0xf0,0x23,0x01,0x00,0x00] + vpavgw 291(%rax,%r14,8), %ymm23, %ymm21 + +// CHECK: vpavgw 4064(%rdx), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xe1,0x45,0x20,0xe3,0x6a,0x7f] + vpavgw 4064(%rdx), %ymm23, %ymm21 + +// CHECK: vpavgw 4096(%rdx), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xe1,0x45,0x20,0xe3,0xaa,0x00,0x10,0x00,0x00] + vpavgw 4096(%rdx), %ymm23, %ymm21 + +// CHECK: vpavgw -4096(%rdx), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xe1,0x45,0x20,0xe3,0x6a,0x80] + vpavgw -4096(%rdx), %ymm23, %ymm21 + +// CHECK: vpavgw -4128(%rdx), %ymm23, %ymm21 +// CHECK: encoding: [0x62,0xe1,0x45,0x20,0xe3,0xaa,0xe0,0xef,0xff,0xff] + vpavgw -4128(%rdx), %ymm23, %ymm21