1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=i386-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefix=ALL --check-prefix=X32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefix=ALL --check-prefix=X64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/avx512vlbw-builtins.c 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_broadcastb_epi8(<2 x i64> %a0) { 8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_broadcastb_epi8: 9*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm0, %xmm0 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 12*9880d681SAndroid Build Coastguard Worker; 13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_broadcastb_epi8: 14*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm0, %xmm0 16*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 17*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 18*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg0, <16 x i8> undef, <16 x i32> zeroinitializer 19*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i8> %res0 to <2 x i64> 20*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mask_broadcastb_epi8(<2 x i64> %a0, i16 %a1, <2 x i64> %a2) { 24*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mask_broadcastb_epi8: 25*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 26*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 27*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 28*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm1, %xmm0 {%k1} 29*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 30*9880d681SAndroid Build Coastguard Worker; 31*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mask_broadcastb_epi8: 32*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 33*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 34*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm1, %xmm0 {%k1} 35*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 36*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 37*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 38*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <16 x i8> 39*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg2, <16 x i8> undef, <16 x i32> zeroinitializer 40*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i8> %res0, <16 x i8> %arg0 41*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i8> %res1 to <2 x i64> 42*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res2 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maskz_broadcastb_epi8(i16 %a0, <2 x i64> %a1) { 46*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskz_broadcastb_epi8: 47*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 48*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 49*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 50*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm0, %xmm0 {%k1} {z} 51*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 52*9880d681SAndroid Build Coastguard Worker; 53*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskz_broadcastb_epi8: 54*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 55*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 56*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm0, %xmm0 {%k1} {z} 57*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 58*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 59*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 60*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg1, <16 x i8> undef, <16 x i32> zeroinitializer 61*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i8> %res0, <16 x i8> zeroinitializer 62*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i8> %res1 to <2 x i64> 63*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res2 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_broadcastb_epi8(<2 x i64> %a0) { 67*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcastb_epi8: 68*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 69*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm0, %ymm0 70*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 71*9880d681SAndroid Build Coastguard Worker; 72*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcastb_epi8: 73*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 74*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm0, %ymm0 75*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 76*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <16 x i8> 77*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg0, <16 x i8> undef, <32 x i32> zeroinitializer 78*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <32 x i8> %res0 to <4 x i64> 79*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res1 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_mask_broadcastb_epi8(<4 x i64> %a0, i32 %a1, <2 x i64> %a2) { 83*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_mask_broadcastb_epi8: 84*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 85*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 86*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovd %eax, %k1 87*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm1, %ymm0 {%k1} 88*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 89*9880d681SAndroid Build Coastguard Worker; 90*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_mask_broadcastb_epi8: 91*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 92*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovd %edi, %k1 93*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm1, %ymm0 {%k1} 94*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 95*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <4 x i64> %a0 to <32 x i8> 96*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i32 %a1 to <32 x i1> 97*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <16 x i8> 98*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg2, <16 x i8> undef, <32 x i32> zeroinitializer 99*9880d681SAndroid Build Coastguard Worker %res1 = select <32 x i1> %arg1, <32 x i8> %res0, <32 x i8> %arg0 100*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <32 x i8> %res1 to <4 x i64> 101*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res2 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_maskz_broadcastb_epi8(i32 %a0, <2 x i64> %a1) { 105*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskz_broadcastb_epi8: 106*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 107*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 108*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovd %eax, %k1 109*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastb %xmm0, %ymm0 {%k1} {z} 110*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 111*9880d681SAndroid Build Coastguard Worker; 112*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskz_broadcastb_epi8: 113*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 114*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovd %edi, %k1 115*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastb %xmm0, %ymm0 {%k1} {z} 116*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 117*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i32 %a0 to <32 x i1> 118*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <16 x i8> 119*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i8> %arg1, <16 x i8> undef, <32 x i32> zeroinitializer 120*9880d681SAndroid Build Coastguard Worker %res1 = select <32 x i1> %arg0, <32 x i8> %res0, <32 x i8> zeroinitializer 121*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <32 x i8> %res1 to <4 x i64> 122*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res2 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_broadcastw_epi16(<2 x i64> %a0) { 126*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_broadcastw_epi16: 127*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 128*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm0, %xmm0 129*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 130*9880d681SAndroid Build Coastguard Worker; 131*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_broadcastw_epi16: 132*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 133*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm0, %xmm0 134*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 135*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 136*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg0, <8 x i16> undef, <8 x i32> zeroinitializer 137*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <8 x i16> %res0 to <2 x i64> 138*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res1 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_mask_broadcastw_epi16(<2 x i64> %a0, i8 %a1, <2 x i64> %a2) { 142*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_mask_broadcastw_epi16: 143*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 144*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 145*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 146*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm1, %xmm0 {%k1} 147*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 148*9880d681SAndroid Build Coastguard Worker; 149*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_mask_broadcastw_epi16: 150*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 151*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 152*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm1, %xmm0 {%k1} 153*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 154*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 155*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 156*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <8 x i16> 157*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg2, <8 x i16> undef, <8 x i32> zeroinitializer 158*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x i16> %res0, <8 x i16> %arg0 159*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <8 x i16> %res1 to <2 x i64> 160*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res2 161*9880d681SAndroid Build Coastguard Worker} 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_mm_maskz_broadcastw_epi16(i8 %a0, <2 x i64> %a1) { 164*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm_maskz_broadcastw_epi16: 165*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 166*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 167*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 168*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm0, %xmm0 {%k1} {z} 169*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 170*9880d681SAndroid Build Coastguard Worker; 171*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm_maskz_broadcastw_epi16: 172*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 173*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 174*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm0, %xmm0 {%k1} {z} 175*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 176*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 177*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 178*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg1, <8 x i16> undef, <8 x i32> zeroinitializer 179*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x i16> %res0, <8 x i16> zeroinitializer 180*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <8 x i16> %res1 to <2 x i64> 181*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res2 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_broadcastw_epi16(<2 x i64> %a0) { 185*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_broadcastw_epi16: 186*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 187*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm0, %ymm0 188*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 189*9880d681SAndroid Build Coastguard Worker; 190*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_broadcastw_epi16: 191*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 192*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm0, %ymm0 193*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 194*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <8 x i16> 195*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg0, <8 x i16> undef, <16 x i32> zeroinitializer 196*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i16> %res0 to <4 x i64> 197*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res1 198*9880d681SAndroid Build Coastguard Worker} 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_mask_broadcastw_epi16(<4 x i64> %a0, i16 %a1, <2 x i64> %a2) { 201*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_mask_broadcastw_epi16: 202*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 203*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 204*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 205*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm1, %ymm0 {%k1} 206*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 207*9880d681SAndroid Build Coastguard Worker; 208*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_mask_broadcastw_epi16: 209*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 210*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 211*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm1, %ymm0 {%k1} 212*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 213*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <4 x i64> %a0 to <16 x i16> 214*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 215*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <2 x i64> %a2 to <8 x i16> 216*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg2, <8 x i16> undef, <16 x i32> zeroinitializer 217*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i16> %res0, <16 x i16> %arg0 218*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i16> %res1 to <4 x i64> 219*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res2 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mm256_maskz_broadcastw_epi16(i16 %a0, <2 x i64> %a1) { 223*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm256_maskz_broadcastw_epi16: 224*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 225*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 226*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 227*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastw %xmm0, %ymm0 {%k1} {z} 228*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 229*9880d681SAndroid Build Coastguard Worker; 230*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm256_maskz_broadcastw_epi16: 231*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 232*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 233*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastw %xmm0, %ymm0 {%k1} {z} 234*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 235*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 236*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <2 x i64> %a1 to <8 x i16> 237*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i16> %arg1, <8 x i16> undef, <16 x i32> zeroinitializer 238*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i16> %res0, <16 x i16> zeroinitializer 239*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i16> %res1 to <4 x i64> 240*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res2 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1} 244*9880d681SAndroid Build Coastguard Worker 245