364 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512ifma --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512ifma --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X644 5declare <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64>, <8 x i64>, <8 x i64>)6 7define <8 x i64>@test_int_x86_avx512_vpmadd52h_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2) {8; CHECK-LABEL: test_int_x86_avx512_vpmadd52h_uq_512:9; CHECK: # %bb.0:10; CHECK-NEXT: vpmadd52huq %zmm2, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb5,0xc2]11; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]12 13 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)14 ret <8 x i64> %115}16 17define <8 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {18; X86-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512:19; X86: # %bb.0:20; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]21; X86-NEXT: kmovw %eax, %k1 # encoding: [0xc5,0xf8,0x92,0xc8]22; X86-NEXT: vpmadd52huq %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0xc2]23; X86-NEXT: retl # encoding: [0xc3]24;25; X64-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512:26; X64: # %bb.0:27; X64-NEXT: kmovw %edi, %k1 # encoding: [0xc5,0xf8,0x92,0xcf]28; X64-NEXT: vpmadd52huq %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0xc2]29; X64-NEXT: retq # encoding: [0xc3]30 31 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)32 %2 = bitcast i8 %x3 to <8 x i1>33 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x034 ret <8 x i64> %335}36 37define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {38; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512:39; X86: # %bb.0:40; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]41; X86-NEXT: kmovw %eax, %k1 # encoding: [0xc5,0xf8,0x92,0xc8]42; X86-NEXT: vpmadd52huq %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0xc2]43; X86-NEXT: retl # encoding: [0xc3]44;45; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512:46; X64: # %bb.0:47; X64-NEXT: kmovw %edi, %k1 # encoding: [0xc5,0xf8,0x92,0xcf]48; X64-NEXT: vpmadd52huq %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0xc2]49; X64-NEXT: retq # encoding: [0xc3]50 51 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)52 %2 = bitcast i8 %x3 to <8 x i1>53 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer54 ret <8 x i64> %355}56 57declare <8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64>, <8 x i64>, <8 x i64>)58 59define <8 x i64>@test_int_x86_avx512_vpmadd52l_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2) {60; CHECK-LABEL: test_int_x86_avx512_vpmadd52l_uq_512:61; CHECK: # %bb.0:62; CHECK-NEXT: vpmadd52luq %zmm2, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb4,0xc2]63; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]64 65 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)66 ret <8 x i64> %167}68 69define <8 x i64>@test_int_x86_avx512_mask_vpmadd52l_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {70; X86-LABEL: test_int_x86_avx512_mask_vpmadd52l_uq_512:71; X86: # %bb.0:72; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]73; X86-NEXT: kmovw %eax, %k1 # encoding: [0xc5,0xf8,0x92,0xc8]74; X86-NEXT: vpmadd52luq %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb4,0xc2]75; X86-NEXT: retl # encoding: [0xc3]76;77; X64-LABEL: test_int_x86_avx512_mask_vpmadd52l_uq_512:78; X64: # %bb.0:79; X64-NEXT: kmovw %edi, %k1 # encoding: [0xc5,0xf8,0x92,0xcf]80; X64-NEXT: vpmadd52luq %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb4,0xc2]81; X64-NEXT: retq # encoding: [0xc3]82 83 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)84 %2 = bitcast i8 %x3 to <8 x i1>85 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x086 ret <8 x i64> %387}88 89define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52l_uq_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {90; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52l_uq_512:91; X86: # %bb.0:92; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax # encoding: [0x0f,0xb6,0x44,0x24,0x04]93; X86-NEXT: kmovw %eax, %k1 # encoding: [0xc5,0xf8,0x92,0xc8]94; X86-NEXT: vpmadd52luq %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb4,0xc2]95; X86-NEXT: retl # encoding: [0xc3]96;97; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52l_uq_512:98; X64: # %bb.0:99; X64-NEXT: kmovw %edi, %k1 # encoding: [0xc5,0xf8,0x92,0xcf]100; X64-NEXT: vpmadd52luq %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb4,0xc2]101; X64-NEXT: retq # encoding: [0xc3]102 103 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)104 %2 = bitcast i8 %x3 to <8 x i1>105 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer106 ret <8 x i64> %3107}108 109define <8 x i64>@test_int_x86_avx512_vpmadd52h_uq_512_load(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr) {110; X86-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load:111; X86: # %bb.0:112; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]113; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb5,0x00]114; X86-NEXT: retl # encoding: [0xc3]115;116; X64-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load:117; X64: # %bb.0:118; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb5,0x07]119; X64-NEXT: retq # encoding: [0xc3]120 121 %x2 = load <8 x i64>, ptr %x2ptr122 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)123 ret <8 x i64> %1124}125 126define <8 x i64>@test_int_x86_avx512_vpmadd52h_uq_512_load_bcast(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr) {127; X86-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_bcast:128; X86: # %bb.0:129; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]130; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x58,0xb5,0x00]131; X86-NEXT: retl # encoding: [0xc3]132;133; X64-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_bcast:134; X64: # %bb.0:135; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x58,0xb5,0x07]136; X64-NEXT: retq # encoding: [0xc3]137 138 %x2load = load i64, ptr %x2ptr139 %x2insert = insertelement <8 x i64> undef, i64 %x2load, i64 0140 %x2 = shufflevector <8 x i64> %x2insert, <8 x i64> undef, <8 x i32> zeroinitializer141 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)142 ret <8 x i64> %1143}144 145define <8 x i64>@test_int_x86_avx512_vpmadd52h_uq_512_load_commute(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2) {146; X86-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_commute:147; X86: # %bb.0:148; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]149; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb5,0x00]150; X86-NEXT: retl # encoding: [0xc3]151;152; X64-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_commute:153; X64: # %bb.0:154; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x48,0xb5,0x07]155; X64-NEXT: retq # encoding: [0xc3]156 157 %x1 = load <8 x i64>, ptr %x1ptr158 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)159 ret <8 x i64> %1160}161 162define <8 x i64>@test_int_x86_avx512_vpmadd52h_uq_512_load_commute_bcast(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2) {163; X86-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_commute_bcast:164; X86: # %bb.0:165; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]166; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x58,0xb5,0x00]167; X86-NEXT: retl # encoding: [0xc3]168;169; X64-LABEL: test_int_x86_avx512_vpmadd52h_uq_512_load_commute_bcast:170; X64: # %bb.0:171; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 # encoding: [0x62,0xf2,0xf5,0x58,0xb5,0x07]172; X64-NEXT: retq # encoding: [0xc3]173 174 %x1load = load i64, ptr %x1ptr175 %x1insert = insertelement <8 x i64> undef, i64 %x1load, i64 0176 %x1 = shufflevector <8 x i64> %x1insert, <8 x i64> undef, <8 x i32> zeroinitializer177 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)178 ret <8 x i64> %1179}180 181define <8 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_512_load(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr, i8 %x3) {182; X86-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load:183; X86: # %bb.0:184; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]185; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]186; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]187; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0x00]188; X86-NEXT: retl # encoding: [0xc3]189;190; X64-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load:191; X64: # %bb.0:192; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]193; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0x07]194; X64-NEXT: retq # encoding: [0xc3]195 196 %x2 = load <8 x i64>, ptr %x2ptr197 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)198 %2 = bitcast i8 %x3 to <8 x i1>199 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x0200 ret <8 x i64> %3201}202 203define <8 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_512_load_bcast(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr, i8 %x3) {204; X86-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_bcast:205; X86: # %bb.0:206; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]207; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]208; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]209; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x59,0xb5,0x00]210; X86-NEXT: retl # encoding: [0xc3]211;212; X64-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_bcast:213; X64: # %bb.0:214; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]215; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x59,0xb5,0x07]216; X64-NEXT: retq # encoding: [0xc3]217 218 %x2load = load i64, ptr %x2ptr219 %x2insert = insertelement <8 x i64> undef, i64 %x2load, i64 0220 %x2 = shufflevector <8 x i64> %x2insert, <8 x i64> undef, <8 x i32> zeroinitializer221 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)222 %2 = bitcast i8 %x3 to <8 x i1>223 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x0224 ret <8 x i64> %3225}226 227define <8 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2, i8 %x3) {228; X86-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute:229; X86: # %bb.0:230; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]231; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]232; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]233; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0x00]234; X86-NEXT: retl # encoding: [0xc3]235;236; X64-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute:237; X64: # %bb.0:238; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]239; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x49,0xb5,0x07]240; X64-NEXT: retq # encoding: [0xc3]241 242 %x1 = load <8 x i64>, ptr %x1ptr243 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)244 %2 = bitcast i8 %x3 to <8 x i1>245 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x0246 ret <8 x i64> %3247}248 249define <8 x i64>@test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute_bcast(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2, i8 %x3) {250; X86-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute_bcast:251; X86: # %bb.0:252; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]253; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]254; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]255; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x59,0xb5,0x00]256; X86-NEXT: retl # encoding: [0xc3]257;258; X64-LABEL: test_int_x86_avx512_mask_vpmadd52h_uq_512_load_commute_bcast:259; X64: # %bb.0:260; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]261; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0xf5,0x59,0xb5,0x07]262; X64-NEXT: retq # encoding: [0xc3]263 264 %x1load = load i64, ptr %x1ptr265 %x1insert = insertelement <8 x i64> undef, i64 %x1load, i64 0266 %x1 = shufflevector <8 x i64> %x1insert, <8 x i64> undef, <8 x i32> zeroinitializer267 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)268 %2 = bitcast i8 %x3 to <8 x i1>269 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> %x0270 ret <8 x i64> %3271}272 273define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_512_load(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr, i8 %x3) {274; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load:275; X86: # %bb.0:276; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]277; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]278; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]279; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0x00]280; X86-NEXT: retl # encoding: [0xc3]281;282; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load:283; X64: # %bb.0:284; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]285; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0x07]286; X64-NEXT: retq # encoding: [0xc3]287 288 %x2 = load <8 x i64>, ptr %x2ptr289 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)290 %2 = bitcast i8 %x3 to <8 x i1>291 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer292 ret <8 x i64> %3293}294 295define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_bcast(<8 x i64> %x0, <8 x i64> %x1, ptr %x2ptr, i8 %x3) {296; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_bcast:297; X86: # %bb.0:298; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]299; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]300; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]301; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xd9,0xb5,0x00]302; X86-NEXT: retl # encoding: [0xc3]303;304; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_bcast:305; X64: # %bb.0:306; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]307; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xd9,0xb5,0x07]308; X64-NEXT: retq # encoding: [0xc3]309 310 %x2load = load i64, ptr %x2ptr311 %x2insert = insertelement <8 x i64> undef, i64 %x2load, i64 0312 %x2 = shufflevector <8 x i64> %x2insert, <8 x i64> undef, <8 x i32> zeroinitializer313 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)314 %2 = bitcast i8 %x3 to <8 x i1>315 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer316 ret <8 x i64> %3317}318 319define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2, i8 %x3) {320; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute:321; X86: # %bb.0:322; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]323; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]324; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]325; X86-NEXT: vpmadd52huq (%eax), %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0x00]326; X86-NEXT: retl # encoding: [0xc3]327;328; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute:329; X64: # %bb.0:330; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]331; X64-NEXT: vpmadd52huq (%rdi), %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xc9,0xb5,0x07]332; X64-NEXT: retq # encoding: [0xc3]333 334 %x1 = load <8 x i64>, ptr %x1ptr335 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)336 %2 = bitcast i8 %x3 to <8 x i1>337 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer338 ret <8 x i64> %3339}340 341define <8 x i64>@test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute_bcast(<8 x i64> %x0, ptr %x1ptr, <8 x i64> %x2, i8 %x3) {342; X86-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute_bcast:343; X86: # %bb.0:344; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]345; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx # encoding: [0x0f,0xb6,0x4c,0x24,0x08]346; X86-NEXT: kmovw %ecx, %k1 # encoding: [0xc5,0xf8,0x92,0xc9]347; X86-NEXT: vpmadd52huq (%eax){1to8}, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xd9,0xb5,0x00]348; X86-NEXT: retl # encoding: [0xc3]349;350; X64-LABEL: test_int_x86_avx512_maskz_vpmadd52h_uq_512_load_commute_bcast:351; X64: # %bb.0:352; X64-NEXT: kmovw %esi, %k1 # encoding: [0xc5,0xf8,0x92,0xce]353; X64-NEXT: vpmadd52huq (%rdi){1to8}, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xf5,0xd9,0xb5,0x07]354; X64-NEXT: retq # encoding: [0xc3]355 356 %x1load = load i64, ptr %x1ptr357 %x1insert = insertelement <8 x i64> undef, i64 %x1load, i64 0358 %x1 = shufflevector <8 x i64> %x1insert, <8 x i64> undef, <8 x i32> zeroinitializer359 %1 = call <8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2)360 %2 = bitcast i8 %x3 to <8 x i1>361 %3 = select <8 x i1> %2, <8 x i64> %1, <8 x i64> zeroinitializer362 ret <8 x i64> %3363}364