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 | 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 | 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/avx512f-builtins.c 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_broadcastd_epi32(<2 x i64> %a0) { 8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastd_epi32: 9*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 10*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastd %xmm0, %zmm0 11*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 12*9880d681SAndroid Build Coastguard Worker; 13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastd_epi32: 14*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastd %xmm0, %zmm0 16*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 17*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <2 x i64> %a0 to <4 x i32> 18*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <4 x i32> %arg0, <4 x i32> undef, <16 x i32> zeroinitializer 19*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i32> %res0 to <8 x i64> 20*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_broadcastd_epi32(<8 x i64> %a0, i16 %a1, <2 x i64> %a2) { 24*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastd_epi32: 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: vpbroadcastd %xmm1, %zmm0 {%k1} 29*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 30*9880d681SAndroid Build Coastguard Worker; 31*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastd_epi32: 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: vpbroadcastd %xmm1, %zmm0 {%k1} 35*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 36*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 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 <4 x i32> 39*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <4 x i32> %arg2, <4 x i32> undef, <16 x i32> zeroinitializer 40*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i32> %res0, <16 x i32> %arg0 41*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 42*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_broadcastd_epi32(i16 %a0, <2 x i64> %a1) { 46*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastd_epi32: 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: vpbroadcastd %xmm0, %zmm0 {%k1} {z} 51*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 52*9880d681SAndroid Build Coastguard Worker; 53*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastd_epi32: 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: vpbroadcastd %xmm0, %zmm0 {%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 <4 x i32> 60*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <4 x i32> %arg1, <4 x i32> undef, <16 x i32> zeroinitializer 61*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i32> %res0, <16 x i32> zeroinitializer 62*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 63*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_broadcastq_epi64(<2 x i64> %a0) { 67*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastq_epi64: 68*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 69*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastq %xmm0, %zmm0 70*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 71*9880d681SAndroid Build Coastguard Worker; 72*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastq_epi64: 73*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 74*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastq %xmm0, %zmm0 75*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 76*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x i64> %a0, <2 x i64> undef, <8 x i32> zeroinitializer 77*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_broadcastq_epi64(<8 x i64> %a0, i8 %a1, <2 x i64> %a2) { 81*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastq_epi64: 82*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 83*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 84*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 85*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastq %xmm1, %zmm0 {%k1} 86*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 87*9880d681SAndroid Build Coastguard Worker; 88*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastq_epi64: 89*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 90*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 91*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastq %xmm1, %zmm0 {%k1} 92*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 93*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 94*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <2 x i64> %a2, <2 x i64> undef, <8 x i32> zeroinitializer 95*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x i64> %res0, <8 x i64> %a0 96*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_broadcastq_epi64(i8 %a0, <2 x i64> %a1) { 100*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastq_epi64: 101*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 102*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 103*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 104*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpbroadcastq %xmm0, %zmm0 {%k1} {z} 105*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 106*9880d681SAndroid Build Coastguard Worker; 107*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastq_epi64: 108*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 109*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 110*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpbroadcastq %xmm0, %zmm0 {%k1} {z} 111*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 112*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 113*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <2 x i64> %a1, <2 x i64> undef, <8 x i32> zeroinitializer 114*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x i64> %res0, <8 x i64> zeroinitializer 115*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_broadcastsd_pd(<2 x double> %a0) { 119*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastsd_pd: 120*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 121*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastsd %xmm0, %zmm0 122*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 123*9880d681SAndroid Build Coastguard Worker; 124*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastsd_pd: 125*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 126*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastsd %xmm0, %zmm0 127*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 128*9880d681SAndroid Build Coastguard Worker %res = shufflevector <2 x double> %a0, <2 x double> undef, <8 x i32> zeroinitializer 129*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_broadcastsd_pd(<8 x double> %a0, i8 %a1, <2 x double> %a2) { 133*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastsd_pd: 134*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 135*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 136*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 137*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastsd %xmm1, %zmm0 {%k1} 138*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 139*9880d681SAndroid Build Coastguard Worker; 140*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastsd_pd: 141*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 142*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 143*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastsd %xmm1, %zmm0 {%k1} 144*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 145*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 146*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <2 x double> %a2, <2 x double> undef, <8 x i32> zeroinitializer 147*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 148*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_broadcastsd_pd(i8 %a0, <2 x double> %a1) { 152*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastsd_pd: 153*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 154*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 155*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 156*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastsd %xmm0, %zmm0 {%k1} {z} 157*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 158*9880d681SAndroid Build Coastguard Worker; 159*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastsd_pd: 160*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 161*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 162*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastsd %xmm0, %zmm0 {%k1} {z} 163*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 164*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 165*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <2 x double> %a1, <2 x double> undef, <8 x i32> zeroinitializer 166*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 167*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 168*9880d681SAndroid Build Coastguard Worker} 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_broadcastss_ps(<4 x float> %a0) { 171*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastss_ps: 172*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 173*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastss %xmm0, %zmm0 174*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 175*9880d681SAndroid Build Coastguard Worker; 176*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastss_ps: 177*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 178*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastss %xmm0, %zmm0 179*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 180*9880d681SAndroid Build Coastguard Worker %res = shufflevector <4 x float> %a0, <4 x float> undef, <16 x i32> zeroinitializer 181*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_broadcastss_ps(<16 x float> %a0, i16 %a1, <4 x float> %a2) { 185*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastss_ps: 186*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 187*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 188*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 189*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastss %xmm1, %zmm0 {%k1} 190*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 191*9880d681SAndroid Build Coastguard Worker; 192*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastss_ps: 193*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 194*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 195*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastss %xmm1, %zmm0 {%k1} 196*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 197*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 198*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <4 x float> %a2, <4 x float> undef, <16 x i32> zeroinitializer 199*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 200*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_broadcastss_ps(i16 %a0, <4 x float> %a1) { 204*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastss_ps: 205*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 206*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 207*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 208*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vbroadcastss %xmm0, %zmm0 {%k1} {z} 209*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 210*9880d681SAndroid Build Coastguard Worker; 211*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastss_ps: 212*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 213*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 214*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vbroadcastss %xmm0, %zmm0 {%k1} {z} 215*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 216*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 217*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <4 x float> %a1, <4 x float> undef, <16 x i32> zeroinitializer 218*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 219*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_movddup_pd(<8 x double> %a0) { 223*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_movddup_pd: 224*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 225*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovddup {{.*#+}} zmm0 = zmm0[0,0,2,2,4,4,6,6] 226*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 227*9880d681SAndroid Build Coastguard Worker; 228*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_movddup_pd: 229*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 230*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovddup {{.*#+}} zmm0 = zmm0[0,0,2,2,4,4,6,6] 231*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 232*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 233*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 234*9880d681SAndroid Build Coastguard Worker} 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_movddup_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2) { 237*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_movddup_pd: 238*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 239*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 240*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 241*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovddup {{.*#+}} zmm0 {%k1} = zmm1[0,0,2,2,4,4,6,6] 242*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 243*9880d681SAndroid Build Coastguard Worker; 244*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_movddup_pd: 245*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 246*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 247*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovddup {{.*#+}} zmm0 {%k1} = zmm1[0,0,2,2,4,4,6,6] 248*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 249*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 250*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 251*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 252*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_movddup_pd(i8 %a0, <8 x double> %a1) { 256*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_movddup_pd: 257*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 258*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 259*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 260*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovddup {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,2,2,4,4,6,6] 261*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 262*9880d681SAndroid Build Coastguard Worker; 263*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_movddup_pd: 264*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 265*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 266*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovddup {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,2,2,4,4,6,6] 267*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 268*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 269*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 270*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 271*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 272*9880d681SAndroid Build Coastguard Worker} 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_movehdup_ps(<16 x float> %a0) { 275*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_movehdup_ps: 276*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 277*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovshdup {{.*#+}} zmm0 = zmm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 278*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 279*9880d681SAndroid Build Coastguard Worker; 280*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_movehdup_ps: 281*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 282*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovshdup {{.*#+}} zmm0 = zmm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 283*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 284*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x float> %a0, <16 x float> undef, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 285*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 286*9880d681SAndroid Build Coastguard Worker} 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_movehdup_ps(<16 x float> %a0, i16 %a1, <16 x float> %a2) { 289*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_movehdup_ps: 290*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 291*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 292*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 293*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovshdup {{.*#+}} zmm0 {%k1} = zmm1[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 294*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 295*9880d681SAndroid Build Coastguard Worker; 296*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_movehdup_ps: 297*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 298*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 299*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovshdup {{.*#+}} zmm0 {%k1} = zmm1[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 300*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 301*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 302*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a2, <16 x float> undef, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 303*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 304*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_movehdup_ps(i16 %a0, <16 x float> %a1) { 308*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_movehdup_ps: 309*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 310*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 311*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 312*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovshdup {{.*#+}} zmm0 {%k1} {z} = zmm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 313*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 314*9880d681SAndroid Build Coastguard Worker; 315*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_movehdup_ps: 316*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 317*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 318*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovshdup {{.*#+}} zmm0 {%k1} {z} = zmm0[1,1,3,3,5,5,7,7,9,9,11,11,13,13,15,15] 319*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 320*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 321*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a1, <16 x float> undef, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 322*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 323*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 324*9880d681SAndroid Build Coastguard Worker} 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_moveldup_ps(<16 x float> %a0) { 327*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_moveldup_ps: 328*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 329*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovsldup {{.*#+}} zmm0 = zmm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 330*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 331*9880d681SAndroid Build Coastguard Worker; 332*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_moveldup_ps: 333*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 334*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovsldup {{.*#+}} zmm0 = zmm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 335*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 336*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x float> %a0, <16 x float> undef, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 337*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 338*9880d681SAndroid Build Coastguard Worker} 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_moveldup_ps(<16 x float> %a0, i16 %a1, <16 x float> %a2) { 341*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_moveldup_ps: 342*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 343*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 344*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 345*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovsldup {{.*#+}} zmm0 {%k1} = zmm1[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 346*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 347*9880d681SAndroid Build Coastguard Worker; 348*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_moveldup_ps: 349*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 350*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 351*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovsldup {{.*#+}} zmm0 {%k1} = zmm1[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 352*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 353*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 354*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a2, <16 x float> undef, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 355*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 356*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_moveldup_ps(i16 %a0, <16 x float> %a1) { 360*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_moveldup_ps: 361*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 362*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 363*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 364*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vmovsldup {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 365*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 366*9880d681SAndroid Build Coastguard Worker; 367*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_moveldup_ps: 368*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 369*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 370*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vmovsldup {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14] 371*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 372*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 373*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a1, <16 x float> undef, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 374*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 375*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 376*9880d681SAndroid Build Coastguard Worker} 377*9880d681SAndroid Build Coastguard Worker 378*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_permute_pd(<8 x double> %a0) { 379*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_permute_pd: 380*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 381*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilpd {{.*#+}} zmm0 = zmm0[0,1,2,2,4,4,6,6] 382*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 383*9880d681SAndroid Build Coastguard Worker; 384*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_permute_pd: 385*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 386*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilpd {{.*#+}} zmm0 = zmm0[0,1,2,2,4,4,6,6] 387*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 388*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 389*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 390*9880d681SAndroid Build Coastguard Worker} 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_permute_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2) { 393*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_permute_pd: 394*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 395*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 396*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 397*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilpd {{.*#+}} zmm0 {%k1} = zmm1[0,1,2,2,4,4,6,6] 398*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 399*9880d681SAndroid Build Coastguard Worker; 400*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_permute_pd: 401*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 402*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 403*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilpd {{.*#+}} zmm0 {%k1} = zmm1[0,1,2,2,4,4,6,6] 404*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 405*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 406*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 407*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 408*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 409*9880d681SAndroid Build Coastguard Worker} 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_permute_pd(i8 %a0, <8 x double> %a1) { 412*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_permute_pd: 413*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 414*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 415*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 416*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0,1,2,2,4,4,6,6] 417*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 418*9880d681SAndroid Build Coastguard Worker; 419*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_permute_pd: 420*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 421*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 422*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0,1,2,2,4,4,6,6] 423*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 424*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 425*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 426*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 427*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 428*9880d681SAndroid Build Coastguard Worker} 429*9880d681SAndroid Build Coastguard Worker 430*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_permute_ps(<16 x float> %a0) { 431*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_permute_ps: 432*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 433*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilps {{.*#+}} zmm0 = zmm0[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 434*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 435*9880d681SAndroid Build Coastguard Worker; 436*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_permute_ps: 437*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 438*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilps {{.*#+}} zmm0 = zmm0[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 439*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 440*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x float> %a0, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 441*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 442*9880d681SAndroid Build Coastguard Worker} 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_permute_ps(<16 x float> %a0, i16 %a1, <16 x float> %a2) { 445*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_permute_ps: 446*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 447*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 448*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 449*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilps {{.*#+}} zmm0 {%k1} = zmm1[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 450*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 451*9880d681SAndroid Build Coastguard Worker; 452*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_permute_ps: 453*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 454*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 455*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilps {{.*#+}} zmm0 {%k1} = zmm1[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 456*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 457*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 458*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a2, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 459*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 460*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 461*9880d681SAndroid Build Coastguard Worker} 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_permute_ps(i16 %a0, <16 x float> %a1) { 464*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_permute_ps: 465*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 466*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 467*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 468*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermilps {{.*#+}} zmm0 {%k1} {z} = zmm0[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 469*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 470*9880d681SAndroid Build Coastguard Worker; 471*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_permute_ps: 472*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 473*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 474*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermilps {{.*#+}} zmm0 {%k1} {z} = zmm0[2,0,0,0,6,4,4,4,10,8,8,8,14,12,12,12] 475*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 476*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 477*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a1, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 478*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 479*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 480*9880d681SAndroid Build Coastguard Worker} 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_permutex_epi64(<8 x i64> %a0) { 483*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_permutex_epi64: 484*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 485*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,0,4,4,4,4] 486*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 487*9880d681SAndroid Build Coastguard Worker; 488*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_permutex_epi64: 489*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 490*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermq {{.*#+}} zmm0 = zmm0[0,0,0,0,4,4,4,4] 491*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 492*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i64> %a0, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 493*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 494*9880d681SAndroid Build Coastguard Worker} 495*9880d681SAndroid Build Coastguard Worker 496*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_permutex_epi64(<8 x i64> %a0, i8 %a1, <8 x i64> %a2) { 497*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_permutex_epi64: 498*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 499*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 500*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 501*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermq {{.*#+}} zmm0 {%k1} = zmm1[0,0,0,0,4,4,4,4] 502*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 503*9880d681SAndroid Build Coastguard Worker; 504*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_permutex_epi64: 505*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 506*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 507*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermq {{.*#+}} zmm0 {%k1} = zmm1[0,0,0,0,4,4,4,4] 508*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 509*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 510*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a2, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 511*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x i64> %res0, <8 x i64> %a0 512*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 513*9880d681SAndroid Build Coastguard Worker} 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_permutex_epi64(i8 %a0, <8 x i64> %a1) { 516*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_permutex_epi64: 517*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 518*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 519*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 520*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermq {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,0,0,4,4,4,4] 521*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 522*9880d681SAndroid Build Coastguard Worker; 523*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_permutex_epi64: 524*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 525*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 526*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermq {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,0,0,4,4,4,4] 527*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 528*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 529*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a1, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 530*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x i64> %res0, <8 x i64> zeroinitializer 531*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 532*9880d681SAndroid Build Coastguard Worker} 533*9880d681SAndroid Build Coastguard Worker 534*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_permutex_pd(<8 x double> %a0) { 535*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_permutex_pd: 536*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 537*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermpd {{.*#+}} zmm0 = zmm0[0,0,0,0,4,4,4,4] 538*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 539*9880d681SAndroid Build Coastguard Worker; 540*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_permutex_pd: 541*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 542*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermpd {{.*#+}} zmm0 = zmm0[0,0,0,0,4,4,4,4] 543*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 544*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 545*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 546*9880d681SAndroid Build Coastguard Worker} 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_permutex_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2) { 549*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_permutex_pd: 550*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 551*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 552*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 553*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermpd {{.*#+}} zmm0 {%k1} = zmm1[0,0,0,0,4,4,4,4] 554*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 555*9880d681SAndroid Build Coastguard Worker; 556*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_permutex_pd: 557*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 558*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 559*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermpd {{.*#+}} zmm0 {%k1} = zmm1[0,0,0,0,4,4,4,4] 560*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 561*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 562*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 563*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 564*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 565*9880d681SAndroid Build Coastguard Worker} 566*9880d681SAndroid Build Coastguard Worker 567*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_permutex_pd(i8 %a0, <8 x double> %a1) { 568*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_permutex_pd: 569*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 570*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 571*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 572*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpermpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,0,0,4,4,4,4] 573*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 574*9880d681SAndroid Build Coastguard Worker; 575*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_permutex_pd: 576*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 577*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 578*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpermpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0,0,0,0,4,4,4,4] 579*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 580*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 581*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 582*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 583*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Worker 586*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_shuffle_epi32(<8 x i64> %a0) { 587*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_shuffle_epi32: 588*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 589*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshufd {{.*#+}} zmm0 = zmm0[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 590*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 591*9880d681SAndroid Build Coastguard Worker; 592*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_shuffle_epi32: 593*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 594*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshufd {{.*#+}} zmm0 = zmm0[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 595*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 596*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 597*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg0, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 598*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i32> %res0 to <8 x i64> 599*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 600*9880d681SAndroid Build Coastguard Worker} 601*9880d681SAndroid Build Coastguard Worker 602*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_shuffle_epi32(<8 x i64> %a0, i16 %a1, <8 x i64> %a2) { 603*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_shuffle_epi32: 604*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 605*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 606*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 607*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshufd {{.*#+}} zmm0 {%k1} = zmm1[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 608*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 609*9880d681SAndroid Build Coastguard Worker; 610*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_shuffle_epi32: 611*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 612*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 613*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshufd {{.*#+}} zmm0 {%k1} = zmm1[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 614*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 615*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 616*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 617*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <8 x i64> %a2 to <16 x i32> 618*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg2, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 619*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i32> %res0, <16 x i32> %arg0 620*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 621*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 622*9880d681SAndroid Build Coastguard Worker} 623*9880d681SAndroid Build Coastguard Worker 624*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_shuffle_epi32(i16 %a0, <8 x i64> %a1) { 625*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_shuffle_epi32: 626*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 627*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 628*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 629*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpshufd {{.*#+}} zmm0 {%k1} {z} = zmm0[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 630*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 631*9880d681SAndroid Build Coastguard Worker; 632*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_shuffle_epi32: 633*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 634*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 635*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpshufd {{.*#+}} zmm0 {%k1} {z} = zmm0[1,0,0,0,5,4,4,4,9,8,8,8,13,12,12,12] 636*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 637*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 638*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <8 x i64> %a1 to <16 x i32> 639*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg1, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 640*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i32> %res0, <16 x i32> zeroinitializer 641*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 642*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 643*9880d681SAndroid Build Coastguard Worker} 644*9880d681SAndroid Build Coastguard Worker 645*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_shuffle_pd(<8 x double> %a0, <8 x double> %a1) { 646*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_shuffle_pd: 647*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 648*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vshufpd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[3],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 649*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 650*9880d681SAndroid Build Coastguard Worker; 651*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_shuffle_pd: 652*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 653*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vshufpd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[3],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 654*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 655*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> %a1, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 656*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 657*9880d681SAndroid Build Coastguard Worker} 658*9880d681SAndroid Build Coastguard Worker 659*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_shuffle_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2, <8 x double> %a3) { 660*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_shuffle_pd: 661*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 662*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 663*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 664*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vshufpd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[3],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 665*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 666*9880d681SAndroid Build Coastguard Worker; 667*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_shuffle_pd: 668*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 669*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 670*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vshufpd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[3],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 671*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 672*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 673*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> %a3, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 674*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 675*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 676*9880d681SAndroid Build Coastguard Worker} 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_shuffle_pd(i8 %a0, <8 x double> %a1, <8 x double> %a2) { 679*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_shuffle_pd: 680*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 681*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 682*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 683*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vshufpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[3],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 684*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 685*9880d681SAndroid Build Coastguard Worker; 686*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_shuffle_pd: 687*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 688*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 689*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vshufpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[3],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 690*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 691*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 692*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> %a2, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 693*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 694*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 695*9880d681SAndroid Build Coastguard Worker} 696*9880d681SAndroid Build Coastguard Worker 697*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpackhi_epi32(<8 x i64> %a0, <8 x i64> %a1) { 698*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_epi32: 699*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 700*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhdq {{.*#+}} zmm0 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 701*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 702*9880d681SAndroid Build Coastguard Worker; 703*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_epi32: 704*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 705*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhdq {{.*#+}} zmm0 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 706*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 707*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 708*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <8 x i64> %a1 to <16 x i32> 709*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg0, <16 x i32> %arg1, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 710*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i32> %res0 to <8 x i64> 711*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 712*9880d681SAndroid Build Coastguard Worker} 713*9880d681SAndroid Build Coastguard Worker 714*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpackhi_epi32(<8 x i64> %a0, i16 %a1, <8 x i64> %a2, <8 x i64> %a3) { 715*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_epi32: 716*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 717*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 718*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 719*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhdq {{.*#+}} zmm0 {%k1} = zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[14],zmm2[14],zmm1[15],zmm2[15] 720*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 721*9880d681SAndroid Build Coastguard Worker; 722*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_epi32: 723*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 724*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 725*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhdq {{.*#+}} zmm0 {%k1} = zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[14],zmm2[14],zmm1[15],zmm2[15] 726*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 727*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 728*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 729*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <8 x i64> %a2 to <16 x i32> 730*9880d681SAndroid Build Coastguard Worker %arg3 = bitcast <8 x i64> %a3 to <16 x i32> 731*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg2, <16 x i32> %arg3, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 732*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i32> %res0, <16 x i32> %arg0 733*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 734*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 735*9880d681SAndroid Build Coastguard Worker} 736*9880d681SAndroid Build Coastguard Worker 737*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpackhi_epi32(i16 %a0, <8 x i64> %a1, <8 x i64> %a2) { 738*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_epi32: 739*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 740*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 741*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 742*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhdq {{.*#+}} zmm0 {%k1} {z} = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 743*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 744*9880d681SAndroid Build Coastguard Worker; 745*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_epi32: 746*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 747*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 748*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhdq {{.*#+}} zmm0 {%k1} {z} = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 749*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 750*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 751*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <8 x i64> %a1 to <16 x i32> 752*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <8 x i64> %a2 to <16 x i32> 753*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg1, <16 x i32> %arg2, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 754*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i32> %res0, <16 x i32> zeroinitializer 755*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 756*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 757*9880d681SAndroid Build Coastguard Worker} 758*9880d681SAndroid Build Coastguard Worker 759*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpackhi_epi64(<8 x i64> %a0, <8 x i64> %a1) { 760*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_epi64: 761*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 762*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 763*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 764*9880d681SAndroid Build Coastguard Worker; 765*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_epi64: 766*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 767*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 768*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 769*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i64> %a0, <8 x i64> %a1, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 770*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 771*9880d681SAndroid Build Coastguard Worker} 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpackhi_epi64(<8 x i64> %a0, i8 %a1, <8 x i64> %a2, <8 x i64> %a3) { 774*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_epi64: 775*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 776*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 777*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 778*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm1[1],zmm2[1],zmm1[3],zmm2[3],zmm1[5],zmm2[5],zmm1[7],zmm2[7] 779*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 780*9880d681SAndroid Build Coastguard Worker; 781*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_epi64: 782*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 783*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 784*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm1[1],zmm2[1],zmm1[3],zmm2[3],zmm1[5],zmm2[5],zmm1[7],zmm2[7] 785*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 786*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 787*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a2, <8 x i64> %a3, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 788*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x i64> %res0, <8 x i64> %a0 789*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 790*9880d681SAndroid Build Coastguard Worker} 791*9880d681SAndroid Build Coastguard Worker 792*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpackhi_epi64(i8 %a0, <8 x i64> %a1, <8 x i64> %a2) { 793*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_epi64: 794*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 795*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 796*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 797*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 798*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 799*9880d681SAndroid Build Coastguard Worker; 800*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_epi64: 801*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 802*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 803*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 804*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 805*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 806*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a1, <8 x i64> %a2, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 807*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x i64> %res0, <8 x i64> zeroinitializer 808*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 809*9880d681SAndroid Build Coastguard Worker} 810*9880d681SAndroid Build Coastguard Worker 811*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_unpackhi_pd(<8 x double> %a0, <8 x double> %a1) { 812*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_pd: 813*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 814*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 815*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 816*9880d681SAndroid Build Coastguard Worker; 817*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_pd: 818*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 819*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 820*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 821*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> %a1, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 822*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 823*9880d681SAndroid Build Coastguard Worker} 824*9880d681SAndroid Build Coastguard Worker 825*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_unpackhi_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2, <8 x double> %a3) { 826*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_pd: 827*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 828*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 829*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 830*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhpd {{.*#+}} zmm0 {%k1} = zmm1[1],zmm2[1],zmm1[3],zmm2[3],zmm1[5],zmm2[5],zmm1[7],zmm2[7] 831*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 832*9880d681SAndroid Build Coastguard Worker; 833*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_pd: 834*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 835*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 836*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhpd {{.*#+}} zmm0 {%k1} = zmm1[1],zmm2[1],zmm1[3],zmm2[3],zmm1[5],zmm2[5],zmm1[7],zmm2[7] 837*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 838*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 839*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> %a3, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 840*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 841*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 842*9880d681SAndroid Build Coastguard Worker} 843*9880d681SAndroid Build Coastguard Worker 844*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_unpackhi_pd(i8 %a0, <8 x double> %a1, <8 x double> %a2) { 845*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_pd: 846*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 847*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 848*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 849*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhpd {{.*#+}} zmm0 {%k1} {z} = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 850*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 851*9880d681SAndroid Build Coastguard Worker; 852*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_pd: 853*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 854*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 855*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhpd {{.*#+}} zmm0 {%k1} {z} = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7] 856*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 857*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 858*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> %a2, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 859*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 860*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 861*9880d681SAndroid Build Coastguard Worker} 862*9880d681SAndroid Build Coastguard Worker 863*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_unpackhi_ps(<16 x float> %a0, <16 x float> %a1) { 864*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_ps: 865*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 866*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhps {{.*#+}} zmm0 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 867*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 868*9880d681SAndroid Build Coastguard Worker; 869*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_ps: 870*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 871*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhps {{.*#+}} zmm0 = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 872*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 873*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x float> %a0, <16 x float> %a1, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 874*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 875*9880d681SAndroid Build Coastguard Worker} 876*9880d681SAndroid Build Coastguard Worker 877*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_unpackhi_ps(<16 x float> %a0, i16 %a1, <16 x float> %a2, <16 x float> %a3) { 878*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_ps: 879*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 880*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 881*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 882*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhps {{.*#+}} zmm0 {%k1} = zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[14],zmm2[14],zmm1[15],zmm2[15] 883*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 884*9880d681SAndroid Build Coastguard Worker; 885*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_ps: 886*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 887*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 888*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhps {{.*#+}} zmm0 {%k1} = zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[14],zmm2[14],zmm1[15],zmm2[15] 889*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 890*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 891*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a2, <16 x float> %a3, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 892*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 893*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 894*9880d681SAndroid Build Coastguard Worker} 895*9880d681SAndroid Build Coastguard Worker 896*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_unpackhi_ps(i16 %a0, <16 x float> %a1, <16 x float> %a2) { 897*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_ps: 898*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 899*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 900*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 901*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpckhps {{.*#+}} zmm0 {%k1} {z} = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 902*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 903*9880d681SAndroid Build Coastguard Worker; 904*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_ps: 905*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 906*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 907*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpckhps {{.*#+}} zmm0 {%k1} {z} = zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[14],zmm1[14],zmm0[15],zmm1[15] 908*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 909*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 910*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a1, <16 x float> %a2, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 911*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 912*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 913*9880d681SAndroid Build Coastguard Worker} 914*9880d681SAndroid Build Coastguard Worker 915*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpacklo_epi32(<8 x i64> %a0, <8 x i64> %a1) { 916*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_epi32: 917*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 918*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 919*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 920*9880d681SAndroid Build Coastguard Worker; 921*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_epi32: 922*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 923*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckldq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 924*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 925*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 926*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <8 x i64> %a1 to <16 x i32> 927*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg0, <16 x i32> %arg1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 928*9880d681SAndroid Build Coastguard Worker %res1 = bitcast <16 x i32> %res0 to <8 x i64> 929*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 930*9880d681SAndroid Build Coastguard Worker} 931*9880d681SAndroid Build Coastguard Worker 932*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpacklo_epi32(<8 x i64> %a0, i16 %a1, <8 x i64> %a2, <8 x i64> %a3) { 933*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_epi32: 934*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 935*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 936*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 937*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckldq {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[12],zmm2[12],zmm1[13],zmm2[13] 938*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 939*9880d681SAndroid Build Coastguard Worker; 940*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_epi32: 941*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 942*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 943*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckldq {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[12],zmm2[12],zmm1[13],zmm2[13] 944*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 945*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast <8 x i64> %a0 to <16 x i32> 946*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 947*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <8 x i64> %a2 to <16 x i32> 948*9880d681SAndroid Build Coastguard Worker %arg3 = bitcast <8 x i64> %a3 to <16 x i32> 949*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg2, <16 x i32> %arg3, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 950*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x i32> %res0, <16 x i32> %arg0 951*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 952*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 953*9880d681SAndroid Build Coastguard Worker} 954*9880d681SAndroid Build Coastguard Worker 955*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpacklo_epi32(i16 %a0, <8 x i64> %a1, <8 x i64> %a2) { 956*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_epi32: 957*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 958*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 959*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 960*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpckldq {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 961*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 962*9880d681SAndroid Build Coastguard Worker; 963*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_epi32: 964*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 965*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 966*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpckldq {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 967*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 968*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 969*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast <8 x i64> %a1 to <16 x i32> 970*9880d681SAndroid Build Coastguard Worker %arg2 = bitcast <8 x i64> %a2 to <16 x i32> 971*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x i32> %arg1, <16 x i32> %arg2, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 972*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x i32> %res0, <16 x i32> zeroinitializer 973*9880d681SAndroid Build Coastguard Worker %res2 = bitcast <16 x i32> %res1 to <8 x i64> 974*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 975*9880d681SAndroid Build Coastguard Worker} 976*9880d681SAndroid Build Coastguard Worker 977*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpacklo_epi64(<8 x i64> %a0, <8 x i64> %a1) { 978*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_epi64: 979*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 980*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 981*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 982*9880d681SAndroid Build Coastguard Worker; 983*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_epi64: 984*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 985*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 986*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 987*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x i64> %a0, <8 x i64> %a1, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 988*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 989*9880d681SAndroid Build Coastguard Worker} 990*9880d681SAndroid Build Coastguard Worker 991*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpacklo_epi64(<8 x i64> %a0, i8 %a1, <8 x i64> %a2, <8 x i64> %a3) { 992*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_epi64: 993*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 994*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 995*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 996*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm1[0],zmm2[0],zmm1[2],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 997*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 998*9880d681SAndroid Build Coastguard Worker; 999*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_epi64: 1000*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1001*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1002*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm1[0],zmm2[0],zmm1[2],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 1003*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1004*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 1005*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a2, <8 x i64> %a3, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1006*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x i64> %res0, <8 x i64> %a0 1007*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 1008*9880d681SAndroid Build Coastguard Worker} 1009*9880d681SAndroid Build Coastguard Worker 1010*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpacklo_epi64(i8 %a0, <8 x i64> %a1, <8 x i64> %a2) { 1011*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_epi64: 1012*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1013*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 1014*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 1015*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1016*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1017*9880d681SAndroid Build Coastguard Worker; 1018*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_epi64: 1019*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1020*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1021*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1022*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1023*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 1024*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x i64> %a1, <8 x i64> %a2, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1025*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x i64> %res0, <8 x i64> zeroinitializer 1026*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res1 1027*9880d681SAndroid Build Coastguard Worker} 1028*9880d681SAndroid Build Coastguard Worker 1029*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_unpacklo_pd(<8 x double> %a0, <8 x double> %a1) { 1030*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_pd: 1031*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1032*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklpd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1033*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1034*9880d681SAndroid Build Coastguard Worker; 1035*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_pd: 1036*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1037*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklpd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1038*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1039*9880d681SAndroid Build Coastguard Worker %res = shufflevector <8 x double> %a0, <8 x double> %a1, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1040*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 1041*9880d681SAndroid Build Coastguard Worker} 1042*9880d681SAndroid Build Coastguard Worker 1043*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_mask_unpacklo_pd(<8 x double> %a0, i8 %a1, <8 x double> %a2, <8 x double> %a3) { 1044*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_pd: 1045*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1046*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 1047*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 1048*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklpd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[2],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 1049*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1050*9880d681SAndroid Build Coastguard Worker; 1051*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_pd: 1052*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1053*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1054*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklpd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[2],zmm2[2],zmm1[4],zmm2[4],zmm1[6],zmm2[6] 1055*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1056*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i8 %a1 to <8 x i1> 1057*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a2, <8 x double> %a3, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1058*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg1, <8 x double> %res0, <8 x double> %a0 1059*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 1060*9880d681SAndroid Build Coastguard Worker} 1061*9880d681SAndroid Build Coastguard Worker 1062*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_mm512_maskz_unpacklo_pd(i8 %a0, <8 x double> %a1, <8 x double> %a2) { 1063*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_pd: 1064*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1065*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movb {{[0-9]+}}(%esp), %al 1066*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 1067*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1068*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1069*9880d681SAndroid Build Coastguard Worker; 1070*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_pd: 1071*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1072*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1073*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklpd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6] 1074*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1075*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i8 %a0 to <8 x i1> 1076*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <8 x double> %a1, <8 x double> %a2, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1077*9880d681SAndroid Build Coastguard Worker %res1 = select <8 x i1> %arg0, <8 x double> %res0, <8 x double> zeroinitializer 1078*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res1 1079*9880d681SAndroid Build Coastguard Worker} 1080*9880d681SAndroid Build Coastguard Worker 1081*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_unpacklo_ps(<16 x float> %a0, <16 x float> %a1) { 1082*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_ps: 1083*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1084*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklps {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 1085*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1086*9880d681SAndroid Build Coastguard Worker; 1087*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_ps: 1088*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1089*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklps {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 1090*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1091*9880d681SAndroid Build Coastguard Worker %res = shufflevector <16 x float> %a0, <16 x float> %a1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 1092*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1093*9880d681SAndroid Build Coastguard Worker} 1094*9880d681SAndroid Build Coastguard Worker 1095*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_unpacklo_ps(<16 x float> %a0, i16 %a1, <16 x float> %a2, <16 x float> %a3) { 1096*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_ps: 1097*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1098*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 1099*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 1100*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklps {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[12],zmm2[12],zmm1[13],zmm2[13] 1101*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1102*9880d681SAndroid Build Coastguard Worker; 1103*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_ps: 1104*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1105*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1106*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklps {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[12],zmm2[12],zmm1[13],zmm2[13] 1107*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1108*9880d681SAndroid Build Coastguard Worker %arg1 = bitcast i16 %a1 to <16 x i1> 1109*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a2, <16 x float> %a3, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 1110*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg1, <16 x float> %res0, <16 x float> %a0 1111*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 1112*9880d681SAndroid Build Coastguard Worker} 1113*9880d681SAndroid Build Coastguard Worker 1114*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_unpacklo_ps(i16 %a0, <16 x float> %a1, <16 x float> %a2) { 1115*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_ps: 1116*9880d681SAndroid Build Coastguard Worker; X32: # BB#0: 1117*9880d681SAndroid Build Coastguard Worker; X32-NEXT: movw {{[0-9]+}}(%esp), %ax 1118*9880d681SAndroid Build Coastguard Worker; X32-NEXT: kmovw %eax, %k1 1119*9880d681SAndroid Build Coastguard Worker; X32-NEXT: vunpcklps {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 1120*9880d681SAndroid Build Coastguard Worker; X32-NEXT: retl 1121*9880d681SAndroid Build Coastguard Worker; 1122*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_ps: 1123*9880d681SAndroid Build Coastguard Worker; X64: # BB#0: 1124*9880d681SAndroid Build Coastguard Worker; X64-NEXT: kmovw %edi, %k1 1125*9880d681SAndroid Build Coastguard Worker; X64-NEXT: vunpcklps {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[12],zmm1[12],zmm0[13],zmm1[13] 1126*9880d681SAndroid Build Coastguard Worker; X64-NEXT: retq 1127*9880d681SAndroid Build Coastguard Worker %arg0 = bitcast i16 %a0 to <16 x i1> 1128*9880d681SAndroid Build Coastguard Worker %res0 = shufflevector <16 x float> %a1, <16 x float> %a2, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 1129*9880d681SAndroid Build Coastguard Worker %res1 = select <16 x i1> %arg0, <16 x float> %res0, <16 x float> zeroinitializer 1130*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res1 1131*9880d681SAndroid Build Coastguard Worker} 1132*9880d681SAndroid Build Coastguard Worker 1133*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1} 1134*9880d681SAndroid Build Coastguard Worker 1135