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 -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kortestz.w(i16, i16) nounwind readnone 5*9880d681SAndroid Build Coastguard Workerdefine i32 @test_kortestz(i16 %a0, i16 %a1) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kortestz: 7*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k0 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %eax, %eax 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kortestw %k0, %k1 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sete %al 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 14*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.kortestz.w(i16 %a0, i16 %a1) 15*9880d681SAndroid Build Coastguard Worker ret i32 %res 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kortestc.w(i16, i16) nounwind readnone 19*9880d681SAndroid Build Coastguard Workerdefine i32 @test_kortestc(i16 %a0, i16 %a1) { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kortestc: 21*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k0 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kortestw %k0, %k1 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sbbl %eax, %eax 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %eax 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 28*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.kortestc.w(i16 %a0, i16 %a1) 29*9880d681SAndroid Build Coastguard Worker ret i32 %res 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.kand.w(i16, i16) nounwind readnone 33*9880d681SAndroid Build Coastguard Workerdefine i16 @test_kand(i16 %a0, i16 %a1) { 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_kand: 35*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movw $8, %ax 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %eax, %k0 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kandw %k0, %k1, %k0 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kandw %k1, %k0, %k0 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 44*9880d681SAndroid Build Coastguard Worker %t1 = call i16 @llvm.x86.avx512.kand.w(i16 %a0, i16 8) 45*9880d681SAndroid Build Coastguard Worker %t2 = call i16 @llvm.x86.avx512.kand.w(i16 %t1, i16 %a1) 46*9880d681SAndroid Build Coastguard Worker ret i16 %t2 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.knot.w(i16) nounwind readnone 50*9880d681SAndroid Build Coastguard Workerdefine i16 @test_knot(i16 %a0) { 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_knot: 52*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k0 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: knotw %k0, %k0 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 57*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.knot.w(i16 %a0) 58*9880d681SAndroid Build Coastguard Worker ret i16 %res 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.kunpck.bw(i16, i16) nounwind readnone 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerdefine i16 @unpckbw_test(i16 %a0, i16 %a1) { 64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: unpckbw_test: 65*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k0 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kunpckbw %k1, %k0, %k0 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 72*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.kunpck.bw(i16 %a0, i16 %a1) 73*9880d681SAndroid Build Coastguard Worker ret i16 %res 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_rcp_ps_512(<16 x float> %a0) { 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rcp_ps_512: 78*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrcp14ps %zmm0, %zmm0 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 81*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.rcp14.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1) ; <<16 x float>> [#uses=1] 82*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.rcp14.ps.512(<16 x float>, <16 x float>, i16) nounwind readnone 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_rcp_pd_512(<8 x double> %a0) { 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rcp_pd_512: 88*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrcp14pd %zmm0, %zmm0 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 91*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.rcp14.pd.512(<8 x double> %a0, <8 x double> zeroinitializer, i8 -1) ; <<8 x double>> [#uses=1] 92*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.rcp14.pd.512(<8 x double>, <8 x double>, i8) nounwind readnone 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double>, i32, <8 x double>, i8, i32) 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test7(<8 x double> %a) { 99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test7: 100*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrndscalepd $11, %zmm0, %zmm0 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 103*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double> %a, i32 11, <8 x double> %a, i8 -1, i32 4) 104*9880d681SAndroid Build Coastguard Worker ret <8 x double>%res 105*9880d681SAndroid Build Coastguard Worker} 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.rndscale.ps.512(<16 x float>, i32, <16 x float>, i16, i32) 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test8(<16 x float> %a) { 110*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8: 111*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrndscaleps $11, %zmm0, %zmm0 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 114*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.rndscale.ps.512(<16 x float> %a, i32 11, <16 x float> %a, i16 -1, i32 4) 115*9880d681SAndroid Build Coastguard Worker ret <16 x float>%res 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_rsqrt_ps_512(<16 x float> %a0) { 119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_rsqrt_ps_512: 120*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrsqrt14ps %zmm0, %zmm0 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 123*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.rsqrt14.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1) ; <<16 x float>> [#uses=1] 124*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.rsqrt14.ps.512(<16 x float>, <16 x float>, i16) nounwind readnone 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_sqrt_pd_512(<8 x double> %a0) { 129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_pd_512: 130*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtpd %zmm0, %zmm0 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 133*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.sqrt.pd.512(<8 x double> %a0, <8 x double> zeroinitializer, i8 -1, i32 4) 134*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.sqrt.pd.512(<8 x double>, <8 x double>, i8, i32) nounwind readnone 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_sqrt_ps_512(<16 x float> %a0) { 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_ps_512: 140*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtps %zmm0, %zmm0 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 143*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 4) 144*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_sqrt_round_ps_512(<16 x float> %a0) { 147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_round_ps_512: 148*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtps {rz-sae}, %zmm0, %zmm0 150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 151*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 3) 152*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 153*9880d681SAndroid Build Coastguard Worker} 154*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.sqrt.ps.512(<16 x float>, <16 x float>, i16, i32) nounwind readnone 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_getexp_pd_512(<8 x double> %a0) { 157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_pd_512: 158*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexppd %zmm0, %zmm0 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 161*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double> %a0, <8 x double> zeroinitializer, i8 -1, i32 4) 162*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_getexp_round_pd_512(<8 x double> %a0) { 165*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_round_pd_512: 166*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexppd {sae}, %zmm0, %zmm0 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 169*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double> %a0, <8 x double> zeroinitializer, i8 -1, i32 8) 170*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.getexp.pd.512(<8 x double>, <8 x double>, i8, i32) nounwind readnone 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_getexp_ps_512(<16 x float> %a0) { 175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_ps_512: 176*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpps %zmm0, %zmm0 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 179*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 4) 180*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 181*9880d681SAndroid Build Coastguard Worker} 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_getexp_round_ps_512(<16 x float> %a0) { 184*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_round_ps_512: 185*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpps {sae}, %zmm0, %zmm0 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 188*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float> %a0, <16 x float> zeroinitializer, i16 -1, i32 8) 189*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 190*9880d681SAndroid Build Coastguard Worker} 191*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.getexp.ps.512(<16 x float>, <16 x float>, i16, i32) nounwind readnone 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_sqrt_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_ss: 197*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtss %xmm1, %xmm0, %xmm3 {%k1} 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtss {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1} 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtss {ru-sae}, %xmm1, %xmm0, %xmm4 {%k1} {z} 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtss {rz-sae}, %xmm1, %xmm0, %xmm0 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm2, %xmm3, %xmm1 206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm4, %xmm0 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm1, %xmm0 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 209*9880d681SAndroid Build Coastguard Worker %res0 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4) 210*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 1) 211*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 2) 212*9880d681SAndroid Build Coastguard Worker %res3 = call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 3) 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker %res.1 = fadd <4 x float> %res0, %res1 215*9880d681SAndroid Build Coastguard Worker %res.2 = fadd <4 x float> %res2, %res3 216*9880d681SAndroid Build Coastguard Worker %res = fadd <4 x float> %res.1, %res.2 217*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 218*9880d681SAndroid Build Coastguard Worker} 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_sqrt_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_sqrt_sd: 224*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtsd %xmm1, %xmm0, %xmm3 {%k1} 229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtsd {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1} 230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtsd {ru-sae}, %xmm1, %xmm0, %xmm4 {%k1} {z} 231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsqrtsd {rz-sae}, %xmm1, %xmm0, %xmm0 232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm2, %xmm3, %xmm1 233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm4, %xmm0 234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm1, %xmm0 235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 236*9880d681SAndroid Build Coastguard Worker %res0 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4) 237*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 1) 238*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 2) 239*9880d681SAndroid Build Coastguard Worker %res3 = call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 3) 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker %res.1 = fadd <2 x double> %res0, %res1 242*9880d681SAndroid Build Coastguard Worker %res.2 = fadd <2 x double> %res2, %res3 243*9880d681SAndroid Build Coastguard Worker %res = fadd <2 x double> %res.1, %res.2 244*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 245*9880d681SAndroid Build Coastguard Worker} 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_sse2_cvtsd2si64(<2 x double> %a0) { 248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse2_cvtsd2si64: 249*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si %xmm0, %rax 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 252*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %a0) ; <i64> [#uses=1] 253*9880d681SAndroid Build Coastguard Worker ret i64 %res 254*9880d681SAndroid Build Coastguard Worker} 255*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtsi642sd(<2 x double> %a0, i64 %a1) { 258*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse2_cvtsi642sd: 259*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2sdq %rdi, %xmm0, %xmm0 261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 262*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double> %a0, i64 %a1) ; <<2 x double>> [#uses=1] 263*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double>, i64) nounwind readnone 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttsd2si64(<2 x double> %a0) { 268*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2si64: 269*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2si %xmm0, %rcx 271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2si {sae}, %xmm0, %rax 272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 274*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %a0, i32 4) ; 275*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %a0, i32 8) ; 276*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res0, %res1 277*9880d681SAndroid Build Coastguard Worker ret i64 %res2 278*9880d681SAndroid Build Coastguard Worker} 279*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttsd2si64(<2 x double>, i32) nounwind readnone 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttsd2usi(<2 x double> %a0) { 282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2usi: 283*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2usi %xmm0, %ecx 285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2usi {sae}, %xmm0, %eax 286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 288*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %a0, i32 4) ; 289*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %a0, i32 8) ; 290*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res0, %res1 291*9880d681SAndroid Build Coastguard Worker ret i32 %res2 292*9880d681SAndroid Build Coastguard Worker} 293*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttsd2usi(<2 x double>, i32) nounwind readnone 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttsd2si(<2 x double> %a0) { 296*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2si: 297*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2si %xmm0, %ecx 299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2si {sae}, %xmm0, %eax 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 302*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %a0, i32 4) ; 303*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %a0, i32 8) ; 304*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res0, %res1 305*9880d681SAndroid Build Coastguard Worker ret i32 %res2 306*9880d681SAndroid Build Coastguard Worker} 307*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttsd2si(<2 x double>, i32) nounwind readnone 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttsd2usi64(<2 x double> %a0) { 312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttsd2usi64: 313*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2usi %xmm0, %rcx 315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttsd2usi {sae}, %xmm0, %rax 316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 318*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %a0, i32 4) ; 319*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %a0, i32 8) ; 320*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res0, %res1 321*9880d681SAndroid Build Coastguard Worker ret i64 %res2 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double>, i32) nounwind readnone 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_sse_cvtss2si64(<4 x float> %a0) { 326*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse_cvtss2si64: 327*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si %xmm0, %rax 329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 330*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %a0) ; <i64> [#uses=1] 331*9880d681SAndroid Build Coastguard Worker ret i64 %res 332*9880d681SAndroid Build Coastguard Worker} 333*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone 334*9880d681SAndroid Build Coastguard Worker 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi642ss(<4 x float> %a0, i64 %a1) { 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_sse_cvtsi642ss: 338*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2ssq %rdi, %xmm0, %xmm0 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 341*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float> %a0, i64 %a1) ; <<4 x float>> [#uses=1] 342*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 343*9880d681SAndroid Build Coastguard Worker} 344*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float>, i64) nounwind readnone 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttss2si(<4 x float> %a0) { 348*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2si: 349*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2si {sae}, %xmm0, %ecx 351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2si %xmm0, %eax 352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 354*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %a0, i32 8) ; 355*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %a0, i32 4) ; 356*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res0, %res1 357*9880d681SAndroid Build Coastguard Worker ret i32 %res2 358*9880d681SAndroid Build Coastguard Worker} 359*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttss2si(<4 x float>, i32) nounwind readnone 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttss2si64(<4 x float> %a0) { 362*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2si64: 363*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2si %xmm0, %rcx 365*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2si {sae}, %xmm0, %rax 366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 368*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %a0, i32 4) ; 369*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %a0, i32 8) ; 370*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res0, %res1 371*9880d681SAndroid Build Coastguard Worker ret i64 %res2 372*9880d681SAndroid Build Coastguard Worker} 373*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttss2si64(<4 x float>, i32) nounwind readnone 374*9880d681SAndroid Build Coastguard Worker 375*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvttss2usi(<4 x float> %a0) { 376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2usi: 377*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2usi {sae}, %xmm0, %ecx 379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2usi %xmm0, %eax 380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 382*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %a0, i32 8) ; 383*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %a0, i32 4) ; 384*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res0, %res1 385*9880d681SAndroid Build Coastguard Worker ret i32 %res2 386*9880d681SAndroid Build Coastguard Worker} 387*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvttss2usi(<4 x float>, i32) nounwind readnone 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvttss2usi64(<4 x float> %a0) { 390*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvttss2usi64: 391*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2usi %xmm0, %rcx 393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttss2usi {sae}, %xmm0, %rax 394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 396*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %a0, i32 4) ; 397*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %a0, i32 8) ; 398*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res0, %res1 399*9880d681SAndroid Build Coastguard Worker ret i64 %res2 400*9880d681SAndroid Build Coastguard Worker} 401*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvttss2usi64(<4 x float>, i32) nounwind readnone 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtsd2usi64(<2 x double> %a0) { 404*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2usi64: 405*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi %xmm0, %rcx 407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi {rz-sae}, %xmm0, %rax 408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi {rd-sae}, %xmm0, %rdx 409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rdx, %rax 411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 4) 414*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 3) 415*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %a0, i32 1) 416*9880d681SAndroid Build Coastguard Worker %res3 = add i64 %res, %res1 417*9880d681SAndroid Build Coastguard Worker %res4 = add i64 %res3, %res2 418*9880d681SAndroid Build Coastguard Worker ret i64 %res4 419*9880d681SAndroid Build Coastguard Worker} 420*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double>, i32) nounwind readnone 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtsd2si64(<2 x double> %a0) { 423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2si64: 424*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si %xmm0, %rcx 426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si {rz-sae}, %xmm0, %rax 427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si {rd-sae}, %xmm0, %rdx 428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rdx, %rax 430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 4) 433*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 3) 434*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %a0, i32 1) 435*9880d681SAndroid Build Coastguard Worker %res3 = add i64 %res, %res1 436*9880d681SAndroid Build Coastguard Worker %res4 = add i64 %res3, %res2 437*9880d681SAndroid Build Coastguard Worker ret i64 %res4 438*9880d681SAndroid Build Coastguard Worker} 439*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double>, i32) nounwind readnone 440*9880d681SAndroid Build Coastguard Worker 441*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtss2usi64(<4 x float> %a0) { 442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2usi64: 443*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi %xmm0, %rcx 445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi {rz-sae}, %xmm0, %rax 446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi {rd-sae}, %xmm0, %rdx 447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rdx, %rax 449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 4) 452*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 3) 453*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %a0, i32 1) 454*9880d681SAndroid Build Coastguard Worker %res3 = add i64 %res, %res1 455*9880d681SAndroid Build Coastguard Worker %res4 = add i64 %res3, %res2 456*9880d681SAndroid Build Coastguard Worker ret i64 %res4 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float>, i32) nounwind readnone 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Workerdefine i64 @test_x86_avx512_cvtss2si64(<4 x float> %a0) { 461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2si64: 462*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si %xmm0, %rcx 464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si {rz-sae}, %xmm0, %rax 465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si {rd-sae}, %xmm0, %rdx 466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rcx, %rax 467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addq %rdx, %rax 468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 4) 471*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 3) 472*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %a0, i32 1) 473*9880d681SAndroid Build Coastguard Worker %res3 = add i64 %res, %res1 474*9880d681SAndroid Build Coastguard Worker %res4 = add i64 %res3, %res2 475*9880d681SAndroid Build Coastguard Worker ret i64 %res4 476*9880d681SAndroid Build Coastguard Worker} 477*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.vcvtss2si64(<4 x float>, i32) nounwind readnone 478*9880d681SAndroid Build Coastguard Worker 479*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtsd2usi32(<2 x double> %a0) { 480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2usi32: 481*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi %xmm0, %ecx 483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi {rz-sae}, %xmm0, %eax 484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2usi {rd-sae}, %xmm0, %edx 485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %edx, %eax 487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 488*9880d681SAndroid Build Coastguard Worker 489*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 4) 490*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 3) 491*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %a0, i32 1) 492*9880d681SAndroid Build Coastguard Worker %res3 = add i32 %res, %res1 493*9880d681SAndroid Build Coastguard Worker %res4 = add i32 %res3, %res2 494*9880d681SAndroid Build Coastguard Worker ret i32 %res4 495*9880d681SAndroid Build Coastguard Worker} 496*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double>, i32) nounwind readnone 497*9880d681SAndroid Build Coastguard Worker 498*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtsd2si32(<2 x double> %a0) { 499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsd2si32: 500*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si %xmm0, %ecx 502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si {rz-sae}, %xmm0, %eax 503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2si {rd-sae}, %xmm0, %edx 504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %edx, %eax 506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 4) 509*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 3) 510*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %a0, i32 1) 511*9880d681SAndroid Build Coastguard Worker %res3 = add i32 %res, %res1 512*9880d681SAndroid Build Coastguard Worker %res4 = add i32 %res3, %res2 513*9880d681SAndroid Build Coastguard Worker ret i32 %res4 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double>, i32) nounwind readnone 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtss2usi32(<4 x float> %a0) { 518*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2usi32: 519*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi %xmm0, %ecx 521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi {rz-sae}, %xmm0, %eax 522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2usi {rd-sae}, %xmm0, %edx 523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %edx, %eax 525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 4) 528*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 3) 529*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %a0, i32 1) 530*9880d681SAndroid Build Coastguard Worker %res3 = add i32 %res, %res1 531*9880d681SAndroid Build Coastguard Worker %res4 = add i32 %res3, %res2 532*9880d681SAndroid Build Coastguard Worker ret i32 %res4 533*9880d681SAndroid Build Coastguard Worker} 534*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float>, i32) nounwind readnone 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_cvtss2si32(<4 x float> %a0) { 537*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtss2si32: 538*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si %xmm0, %ecx 540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si {rz-sae}, %xmm0, %eax 541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2si {rd-sae}, %xmm0, %edx 542*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 543*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %edx, %eax 544*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 4) 547*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 3) 548*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %a0, i32 1) 549*9880d681SAndroid Build Coastguard Worker %res3 = add i32 %res, %res1 550*9880d681SAndroid Build Coastguard Worker %res4 = add i32 %res3, %res2 551*9880d681SAndroid Build Coastguard Worker ret i32 %res4 552*9880d681SAndroid Build Coastguard Worker} 553*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcvtss2si32(<4 x float>, i32) nounwind readnone 554*9880d681SAndroid Build Coastguard Worker 555*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512(<16 x i16> %a0) { 556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512: 557*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtph2ps %ymm0, %zmm0 559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 560*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 -1, i32 4) 561*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 562*9880d681SAndroid Build Coastguard Worker} 563*9880d681SAndroid Build Coastguard Worker 564*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_sae(<16 x i16> %a0) { 565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_sae: 566*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtph2ps {sae}, %ymm0, %zmm0 568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 569*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 -1, i32 8) 570*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 571*9880d681SAndroid Build Coastguard Worker} 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_rrk(<16 x i16> %a0,<16 x float> %a1, i16 %mask) { 574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_rrk: 575*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtph2ps %ymm0, %zmm1 {%k1} 578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 580*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> %a1, i16 %mask, i32 4) 581*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 582*9880d681SAndroid Build Coastguard Worker} 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_sae_rrkz(<16 x i16> %a0, i16 %mask) { 585*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_sae_rrkz: 586*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtph2ps {sae}, %ymm0, %zmm0 {%k1} {z} 589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 590*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 %mask, i32 8) 591*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 592*9880d681SAndroid Build Coastguard Worker} 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vcvtph2ps_512_rrkz(<16 x i16> %a0, i16 %mask) { 595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtph2ps_512_rrkz: 596*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtph2ps %ymm0, %zmm0 {%k1} {z} 599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 600*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16> %a0, <16 x float> zeroinitializer, i16 %mask, i32 4) 601*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 602*9880d681SAndroid Build Coastguard Worker} 603*9880d681SAndroid Build Coastguard Worker 604*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vcvtph2ps.512(<16 x i16>, <16 x float>, i16, i32) nounwind readonly 605*9880d681SAndroid Build Coastguard Worker 606*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_vcvtps2ph_256(<16 x float> %a0, <16 x i16> %src, i16 %mask, <16 x i16> * %dst) { 607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vcvtps2ph_256: 608*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2ph $2, %zmm0, %ymm1 {%k1} 611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2ph $2, %zmm0, %ymm2 {%k1} {z} 612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2ph $2, %zmm0, (%rsi) 613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm1, %ymm2, %ymm0 614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 615*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> zeroinitializer, i16 -1) 616*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> zeroinitializer, i16 %mask) 617*9880d681SAndroid Build Coastguard Worker %res3 = call <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float> %a0, i32 2, <16 x i16> %src, i16 %mask) 618*9880d681SAndroid Build Coastguard Worker store <16 x i16> %res1, <16 x i16> * %dst 619*9880d681SAndroid Build Coastguard Worker %res = add <16 x i16> %res2, %res3 620*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 621*9880d681SAndroid Build Coastguard Worker} 622*9880d681SAndroid Build Coastguard Worker 623*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.vcvtps2ph.512(<16 x float>, i32, <16 x i16>, i16) nounwind readonly 624*9880d681SAndroid Build Coastguard Worker 625*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_x86_vbroadcast_ss_512(i8* %a0) { 626*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vbroadcast_ss_512: 627*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcastss (%rdi), %zmm0 629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 630*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8* %a0) ; <<16 x float>> [#uses=1] 631*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 632*9880d681SAndroid Build Coastguard Worker} 633*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8*) nounwind readonly 634*9880d681SAndroid Build Coastguard Worker 635*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_x86_vbroadcast_sd_512(i8* %a0) { 636*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_vbroadcast_sd_512: 637*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcastsd (%rdi), %zmm0 639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 640*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8* %a0) ; <<8 x double>> [#uses=1] 641*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 642*9880d681SAndroid Build Coastguard Worker} 643*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8*) nounwind readonly 644*9880d681SAndroid Build Coastguard Worker 645*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_conflict_d(<16 x i32> %a) { 646*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_conflict_d: 647*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpconflictd %zmm0, %zmm0 649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 650*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 -1) 651*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 652*9880d681SAndroid Build Coastguard Worker} 653*9880d681SAndroid Build Coastguard Worker 654*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly 655*9880d681SAndroid Build Coastguard Worker 656*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_conflict_q(<8 x i64> %a) { 657*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_conflict_q: 658*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpconflictq %zmm0, %zmm0 660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 661*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 -1) 662*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 663*9880d681SAndroid Build Coastguard Worker} 664*9880d681SAndroid Build Coastguard Worker 665*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly 666*9880d681SAndroid Build Coastguard Worker 667*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_maskz_conflict_d(<16 x i32> %a, i16 %mask) { 668*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_conflict_d: 669*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpconflictd %zmm0, %zmm0 {%k1} {z} 672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 673*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 %mask) 674*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 675*9880d681SAndroid Build Coastguard Worker} 676*9880d681SAndroid Build Coastguard Worker 677*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_conflict_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) { 678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_conflict_q: 679*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpconflictq %zmm0, %zmm1 {%k1} 682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 684*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask) 685*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 686*9880d681SAndroid Build Coastguard Worker} 687*9880d681SAndroid Build Coastguard Worker 688*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_lzcnt_d(<16 x i32> %a) { 689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_lzcnt_d: 690*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vplzcntd %zmm0, %zmm0 692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 693*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 -1) 694*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 695*9880d681SAndroid Build Coastguard Worker} 696*9880d681SAndroid Build Coastguard Worker 697*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_lzcnt_q(<8 x i64> %a) { 700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_lzcnt_q: 701*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vplzcntq %zmm0, %zmm0 703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 704*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 -1) 705*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 706*9880d681SAndroid Build Coastguard Worker} 707*9880d681SAndroid Build Coastguard Worker 708*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly 709*9880d681SAndroid Build Coastguard Worker 710*9880d681SAndroid Build Coastguard Worker 711*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_lzcnt_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) { 712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_lzcnt_d: 713*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vplzcntd %zmm0, %zmm1 {%k1} 716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 718*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> %b, i16 %mask) 719*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 720*9880d681SAndroid Build Coastguard Worker} 721*9880d681SAndroid Build Coastguard Worker 722*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_lzcnt_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) { 723*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_lzcnt_q: 724*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vplzcntq %zmm0, %zmm1 {%k1} 727*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 729*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask) 730*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 731*9880d681SAndroid Build Coastguard Worker} 732*9880d681SAndroid Build Coastguard Worker 733*9880d681SAndroid Build Coastguard Worker define i16 @test_cmpps(<16 x float> %a, <16 x float> %b) { 734*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmpps: 735*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpleps {sae}, %zmm1, %zmm0, %k0 737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 740*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> %a, <16 x float> %b, i32 2, i16 -1, i32 8) 741*9880d681SAndroid Build Coastguard Worker ret i16 %res 742*9880d681SAndroid Build Coastguard Worker } 743*9880d681SAndroid Build Coastguard Worker declare i16 @llvm.x86.avx512.mask.cmp.ps.512(<16 x float> , <16 x float> , i32, i16, i32) 744*9880d681SAndroid Build Coastguard Worker 745*9880d681SAndroid Build Coastguard Worker define i8 @test_cmppd(<8 x double> %a, <8 x double> %b) { 746*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmppd: 747*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqpd %zmm1, %zmm0, %k0 749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 752*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> %a, <8 x double> %b, i32 4, i8 -1, i32 4) 753*9880d681SAndroid Build Coastguard Worker ret i8 %res 754*9880d681SAndroid Build Coastguard Worker } 755*9880d681SAndroid Build Coastguard Worker declare i8 @llvm.x86.avx512.mask.cmp.pd.512(<8 x double> , <8 x double> , i32, i8, i32) 756*9880d681SAndroid Build Coastguard Worker 757*9880d681SAndroid Build Coastguard Worker ; fp min - max 758*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmaxpd(<8 x double> %a0, <8 x double> %a1) { 759*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmaxpd: 760*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxpd %zmm1, %zmm0, %zmm0 762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 763*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.max.pd.512(<8 x double> %a0, <8 x double> %a1, 764*9880d681SAndroid Build Coastguard Worker <8 x double>zeroinitializer, i8 -1, i32 4) 765*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 766*9880d681SAndroid Build Coastguard Worker} 767*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.max.pd.512(<8 x double>, <8 x double>, 768*9880d681SAndroid Build Coastguard Worker <8 x double>, i8, i32) 769*9880d681SAndroid Build Coastguard Worker 770*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vminpd(<8 x double> %a0, <8 x double> %a1) { 771*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vminpd: 772*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminpd %zmm1, %zmm0, %zmm0 774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 775*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.min.pd.512(<8 x double> %a0, <8 x double> %a1, 776*9880d681SAndroid Build Coastguard Worker <8 x double>zeroinitializer, i8 -1, i32 4) 777*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 778*9880d681SAndroid Build Coastguard Worker} 779*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.min.pd.512(<8 x double>, <8 x double>, 780*9880d681SAndroid Build Coastguard Worker <8 x double>, i8, i32) 781*9880d681SAndroid Build Coastguard Worker 782*9880d681SAndroid Build Coastguard Worker declare <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32>, <16 x i32>, i16) 783*9880d681SAndroid Build Coastguard Worker 784*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pabs_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) { 785*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_d_512: 786*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpabsd %zmm0, %zmm1 {%k1} 789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpabsd %zmm0, %zmm0 790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 792*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) 793*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pabs.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 -1) 794*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 795*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 796*9880d681SAndroid Build Coastguard Worker} 797*9880d681SAndroid Build Coastguard Worker 798*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64>, <8 x i64>, i8) 799*9880d681SAndroid Build Coastguard Worker 800*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pabs_q_512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) { 801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_q_512: 802*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpabsq %zmm0, %zmm1 {%k1} 805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpabsq %zmm0, %zmm0 806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 808*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) 809*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pabs.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 -1) 810*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 811*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 812*9880d681SAndroid Build Coastguard Worker} 813*9880d681SAndroid Build Coastguard Worker 814*9880d681SAndroid Build Coastguard Workerdefine i8 @test_vptestmq(<8 x i64> %a0, <8 x i64> %a1, i8 %m) { 815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vptestmq: 816*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestmq %zmm1, %zmm0, %k0 {%k1} 819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 820*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestmq %zmm1, %zmm0, %k0 821*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 822*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addb %cl, %al 823*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 825*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64> %a0, <8 x i64> %a1, i8 -1) 826*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64> %a0, <8 x i64> %a1, i8 %m) 827*9880d681SAndroid Build Coastguard Worker %res2 = add i8 %res1, %res 828*9880d681SAndroid Build Coastguard Worker ret i8 %res2 829*9880d681SAndroid Build Coastguard Worker} 830*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestm.q.512(<8 x i64>, <8 x i64>, i8) 831*9880d681SAndroid Build Coastguard Worker 832*9880d681SAndroid Build Coastguard Workerdefine i16 @test_vptestmd(<16 x i32> %a0, <16 x i32> %a1, i16 %m) { 833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vptestmd: 834*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestmd %zmm1, %zmm0, %k0 {%k1} 837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestmd %zmm1, %zmm0, %k0 839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 843*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32> %a0, <16 x i32> %a1, i16 -1) 844*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32> %a0, <16 x i32> %a1, i16 %m) 845*9880d681SAndroid Build Coastguard Worker %res2 = add i16 %res1, %res 846*9880d681SAndroid Build Coastguard Worker ret i16 %res2 847*9880d681SAndroid Build Coastguard Worker} 848*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestm.d.512(<16 x i32>, <16 x i32>, i16) 849*9880d681SAndroid Build Coastguard Worker 850*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_valign_q(<8 x i64> %a, <8 x i64> %b) { 851*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_valign_q: 852*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 853*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: valignq $2, %zmm1, %zmm0, %zmm0 854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 855*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64> %a, <8 x i64> %b, i32 2, <8 x i64> zeroinitializer, i8 -1) 856*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 857*9880d681SAndroid Build Coastguard Worker} 858*9880d681SAndroid Build Coastguard Worker 859*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_valign_q(<8 x i64> %a, <8 x i64> %b, <8 x i64> %src, i8 %mask) { 860*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_valign_q: 861*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 863*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: valignq $2, %zmm1, %zmm0, %zmm2 {%k1} 864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 866*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64> %a, <8 x i64> %b, i32 2, <8 x i64> %src, i8 %mask) 867*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 868*9880d681SAndroid Build Coastguard Worker} 869*9880d681SAndroid Build Coastguard Worker 870*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.valign.q.512(<8 x i64>, <8 x i64>, i32, <8 x i64>, i8) 871*9880d681SAndroid Build Coastguard Worker 872*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_maskz_valign_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) { 873*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_valign_d: 874*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: valignd $5, %zmm1, %zmm0, %zmm0 {%k1} {z} 877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 878*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.valign.d.512(<16 x i32> %a, <16 x i32> %b, i32 5, <16 x i32> zeroinitializer, i16 %mask) 879*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 880*9880d681SAndroid Build Coastguard Worker} 881*9880d681SAndroid Build Coastguard Worker 882*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.valign.d.512(<16 x i32>, <16 x i32>, i32, <16 x i32>, i16) 883*9880d681SAndroid Build Coastguard Worker 884*9880d681SAndroid Build Coastguard Workerdefine void @test_mask_store_ss(i8* %ptr, <4 x float> %data, i8 %mask) { 885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_store_ss: 886*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 887*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss %xmm0, (%rdi) {%k1} 889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 890*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.store.ss(i8* %ptr, <4 x float> %data, i8 %mask) 891*9880d681SAndroid Build Coastguard Worker ret void 892*9880d681SAndroid Build Coastguard Worker} 893*9880d681SAndroid Build Coastguard Worker 894*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.store.ss(i8*, <4 x float>, i8 ) 895*9880d681SAndroid Build Coastguard Worker 896*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1) { 897*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_d_512: 898*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %zmm1, %zmm0, %k0 900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k1 901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k2 902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k3 903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k4 904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k5 905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k6 906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k7 907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %ecx, %xmm0 910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 911*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 924*9880d681SAndroid Build Coastguard Worker %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1) 925*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 926*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 -1) 927*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1 928*9880d681SAndroid Build Coastguard Worker %res2 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 -1) 929*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2 930*9880d681SAndroid Build Coastguard Worker %res3 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 -1) 931*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3 932*9880d681SAndroid Build Coastguard Worker %res4 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 -1) 933*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4 934*9880d681SAndroid Build Coastguard Worker %res5 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 -1) 935*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5 936*9880d681SAndroid Build Coastguard Worker %res6 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 -1) 937*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6 938*9880d681SAndroid Build Coastguard Worker %res7 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 -1) 939*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7 940*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %vec7 941*9880d681SAndroid Build Coastguard Worker} 942*9880d681SAndroid Build Coastguard Worker 943*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_cmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) { 944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_d_512: 945*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 946*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 947*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %zmm1, %zmm0, %k0 {%k1} 948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltd %zmm1, %zmm0, %k2 {%k1} 949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %zmm1, %zmm0, %k3 {%k1} 950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordd %zmm1, %zmm0, %k4 {%k1} 951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqd %zmm1, %zmm0, %k5 {%k1} 952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltd %zmm1, %zmm0, %k6 {%k1} 953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnled %zmm1, %zmm0, %k7 {%k1} 954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordd %zmm1, %zmm0, %k1 {%k1} 955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %ecx, %xmm0 958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 972*9880d681SAndroid Build Coastguard Worker %res0 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask) 973*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 974*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 %mask) 975*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1 976*9880d681SAndroid Build Coastguard Worker %res2 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 %mask) 977*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2 978*9880d681SAndroid Build Coastguard Worker %res3 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 %mask) 979*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3 980*9880d681SAndroid Build Coastguard Worker %res4 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 %mask) 981*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4 982*9880d681SAndroid Build Coastguard Worker %res5 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 %mask) 983*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5 984*9880d681SAndroid Build Coastguard Worker %res6 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 %mask) 985*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6 986*9880d681SAndroid Build Coastguard Worker %res7 = call i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 %mask) 987*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7 988*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %vec7 989*9880d681SAndroid Build Coastguard Worker} 990*9880d681SAndroid Build Coastguard Worker 991*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.cmp.d.512(<16 x i32>, <16 x i32>, i32, i16) nounwind readnone 992*9880d681SAndroid Build Coastguard Worker 993*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1) { 994*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_d_512: 995*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 996*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpequd %zmm1, %zmm0, %k0 997*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k1 998*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k2 999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k3 1000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k4 1001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k5 1002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k6 1003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k7 1004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 1006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %ecx, %xmm0 1007*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 1008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 1010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 1012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 1014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 1016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 1018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 1020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1021*9880d681SAndroid Build Coastguard Worker %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 -1) 1022*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 1023*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 -1) 1024*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1 1025*9880d681SAndroid Build Coastguard Worker %res2 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 -1) 1026*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2 1027*9880d681SAndroid Build Coastguard Worker %res3 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 -1) 1028*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3 1029*9880d681SAndroid Build Coastguard Worker %res4 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 -1) 1030*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4 1031*9880d681SAndroid Build Coastguard Worker %res5 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 -1) 1032*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5 1033*9880d681SAndroid Build Coastguard Worker %res6 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 -1) 1034*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6 1035*9880d681SAndroid Build Coastguard Worker %res7 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 -1) 1036*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7 1037*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %vec7 1038*9880d681SAndroid Build Coastguard Worker} 1039*9880d681SAndroid Build Coastguard Worker 1040*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_ucmp_d_512(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) { 1041*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_d_512: 1042*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpequd %zmm1, %zmm0, %k0 {%k1} 1045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltud %zmm1, %zmm0, %k2 {%k1} 1046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud %zmm1, %zmm0, %k3 {%k1} 1047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordud %zmm1, %zmm0, %k4 {%k1} 1048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnequd %zmm1, %zmm0, %k5 {%k1} 1049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltud %zmm1, %zmm0, %k6 {%k1} 1050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k7 {%k1} 1051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordud %zmm1, %zmm0, %k1 {%k1} 1052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 1054*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovd %ecx, %xmm0 1055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0 1056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0 1058*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1059*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0 1060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0 1062*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1063*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0 1064*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0 1066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0 1068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1069*9880d681SAndroid Build Coastguard Worker %res0 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 0, i16 %mask) 1070*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0 1071*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 1, i16 %mask) 1072*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1 1073*9880d681SAndroid Build Coastguard Worker %res2 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 2, i16 %mask) 1074*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2 1075*9880d681SAndroid Build Coastguard Worker %res3 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 3, i16 %mask) 1076*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3 1077*9880d681SAndroid Build Coastguard Worker %res4 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 4, i16 %mask) 1078*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4 1079*9880d681SAndroid Build Coastguard Worker %res5 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 5, i16 %mask) 1080*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5 1081*9880d681SAndroid Build Coastguard Worker %res6 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 6, i16 %mask) 1082*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6 1083*9880d681SAndroid Build Coastguard Worker %res7 = call i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> %a0, <16 x i32> %a1, i32 7, i16 %mask) 1084*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7 1085*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %vec7 1086*9880d681SAndroid Build Coastguard Worker} 1087*9880d681SAndroid Build Coastguard Worker 1088*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32>, <16 x i32>, i32, i16) nounwind readnone 1089*9880d681SAndroid Build Coastguard Worker 1090*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1) { 1091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_q_512: 1092*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq %zmm1, %zmm0, %k0 1094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k1 1095*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k2 1096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k3 1097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k4 1098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k5 1099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k6 1100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k7 1101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 1102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 1103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 1105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 1107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 1109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 1111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 1113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 1117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1118*9880d681SAndroid Build Coastguard Worker %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1) 1119*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0 1120*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 -1) 1121*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1 1122*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 -1) 1123*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2 1124*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 -1) 1125*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3 1126*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 -1) 1127*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4 1128*9880d681SAndroid Build Coastguard Worker %res5 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 -1) 1129*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5 1130*9880d681SAndroid Build Coastguard Worker %res6 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 -1) 1131*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6 1132*9880d681SAndroid Build Coastguard Worker %res7 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 -1) 1133*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7 1134*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %vec7 1135*9880d681SAndroid Build Coastguard Worker} 1136*9880d681SAndroid Build Coastguard Worker 1137*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_cmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { 1138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_q_512: 1139*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq %zmm1, %zmm0, %k0 {%k1} 1142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltq %zmm1, %zmm0, %k2 {%k1} 1143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %zmm1, %zmm0, %k3 {%k1} 1144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunordq %zmm1, %zmm0, %k4 {%k1} 1145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpneqq %zmm1, %zmm0, %k5 {%k1} 1146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltq %zmm1, %zmm0, %k6 {%k1} 1147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleq %zmm1, %zmm0, %k7 {%k1} 1148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpordq %zmm1, %zmm0, %k1 {%k1} 1149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 1150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 1151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 1153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 1155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 1157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 1159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 1161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 1165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1166*9880d681SAndroid Build Coastguard Worker %res0 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask) 1167*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0 1168*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 %mask) 1169*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1 1170*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 %mask) 1171*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2 1172*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 %mask) 1173*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3 1174*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 %mask) 1175*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4 1176*9880d681SAndroid Build Coastguard Worker %res5 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 %mask) 1177*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5 1178*9880d681SAndroid Build Coastguard Worker %res6 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 %mask) 1179*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6 1180*9880d681SAndroid Build Coastguard Worker %res7 = call i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 %mask) 1181*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7 1182*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %vec7 1183*9880d681SAndroid Build Coastguard Worker} 1184*9880d681SAndroid Build Coastguard Worker 1185*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.q.512(<8 x i64>, <8 x i64>, i32, i8) nounwind readnone 1186*9880d681SAndroid Build Coastguard Worker 1187*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1) { 1188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_q_512: 1189*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpequq %zmm1, %zmm0, %k0 1191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k1 1192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k2 1193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k3 1194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k4 1195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k5 1196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k6 1197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k7 1198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 1199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 1200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 1202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 1204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 1206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 1208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 1210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 1214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1215*9880d681SAndroid Build Coastguard Worker %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 -1) 1216*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0 1217*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 -1) 1218*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1 1219*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 -1) 1220*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2 1221*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 -1) 1222*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3 1223*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 -1) 1224*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4 1225*9880d681SAndroid Build Coastguard Worker %res5 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 -1) 1226*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5 1227*9880d681SAndroid Build Coastguard Worker %res6 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 -1) 1228*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6 1229*9880d681SAndroid Build Coastguard Worker %res7 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 -1) 1230*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7 1231*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %vec7 1232*9880d681SAndroid Build Coastguard Worker} 1233*9880d681SAndroid Build Coastguard Worker 1234*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_ucmp_q_512(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { 1235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_q_512: 1236*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpequq %zmm1, %zmm0, %k0 {%k1} 1239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpltuq %zmm1, %zmm0, %k2 {%k1} 1240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleuq %zmm1, %zmm0, %k3 {%k1} 1241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpunorduq %zmm1, %zmm0, %k4 {%k1} 1242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnequq %zmm1, %zmm0, %k5 {%k1} 1243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnltuq %zmm1, %zmm0, %k6 {%k1} 1244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleuq %zmm1, %zmm0, %k7 {%k1} 1245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmporduq %zmm1, %zmm0, %k1 {%k1} 1246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 1247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 1248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %eax 1249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0 1250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k3, %eax 1251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0 1252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k4, %eax 1253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0 1254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k5, %eax 1255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0 1256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k6, %eax 1257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0 1258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k7, %eax 1259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 1261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0 1262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1263*9880d681SAndroid Build Coastguard Worker %res0 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 0, i8 %mask) 1264*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0 1265*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 1, i8 %mask) 1266*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1 1267*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 2, i8 %mask) 1268*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2 1269*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 3, i8 %mask) 1270*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3 1271*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 4, i8 %mask) 1272*9880d681SAndroid Build Coastguard Worker %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4 1273*9880d681SAndroid Build Coastguard Worker %res5 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 5, i8 %mask) 1274*9880d681SAndroid Build Coastguard Worker %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5 1275*9880d681SAndroid Build Coastguard Worker %res6 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 6, i8 %mask) 1276*9880d681SAndroid Build Coastguard Worker %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6 1277*9880d681SAndroid Build Coastguard Worker %res7 = call i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> %a0, <8 x i64> %a1, i32 7, i8 %mask) 1278*9880d681SAndroid Build Coastguard Worker %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7 1279*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %vec7 1280*9880d681SAndroid Build Coastguard Worker} 1281*9880d681SAndroid Build Coastguard Worker 1282*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64>, <8 x i64>, i32, i8) nounwind readnone 1283*9880d681SAndroid Build Coastguard Worker 1284*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vextractf32x4(<4 x float> %b, <16 x float> %a, i8 %mask) { 1285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vextractf32x4: 1286*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf32x4 $2, %zmm1, %xmm0 {%k1} 1289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1290*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.vextractf32x4.512(<16 x float> %a, i32 2, <4 x float> %b, i8 %mask) 1291*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1292*9880d681SAndroid Build Coastguard Worker} 1293*9880d681SAndroid Build Coastguard Worker 1294*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vextractf32x4.512(<16 x float>, i32, <4 x float>, i8) 1295*9880d681SAndroid Build Coastguard Worker 1296*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_mask_vextracti64x4(<4 x i64> %b, <8 x i64> %a, i8 %mask) { 1297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vextracti64x4: 1298*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextracti64x4 $2, %zmm1, %ymm0 {%k1} 1301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1302*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx512.mask.vextracti64x4.512(<8 x i64> %a, i32 2, <4 x i64> %b, i8 %mask) 1303*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1304*9880d681SAndroid Build Coastguard Worker} 1305*9880d681SAndroid Build Coastguard Worker 1306*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.vextracti64x4.512(<8 x i64>, i32, <4 x i64>, i8) 1307*9880d681SAndroid Build Coastguard Worker 1308*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_maskz_vextracti32x4(<16 x i32> %a, i8 %mask) { 1309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_vextracti32x4: 1310*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextracti32x4 $2, %zmm0, %xmm0 {%k1} {z} 1313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1314*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx512.mask.vextracti32x4.512(<16 x i32> %a, i32 2, <4 x i32> zeroinitializer, i8 %mask) 1315*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1316*9880d681SAndroid Build Coastguard Worker} 1317*9880d681SAndroid Build Coastguard Worker 1318*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx512.mask.vextracti32x4.512(<16 x i32>, i32, <4 x i32>, i8) 1319*9880d681SAndroid Build Coastguard Worker 1320*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_vextractf64x4(<8 x double> %a) { 1321*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vextractf64x4: 1322*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf64x4 $2, %zmm0, %ymm0 1324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1325*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx512.mask.vextractf64x4.512(<8 x double> %a, i32 2, <4 x double> zeroinitializer, i8 -1) 1326*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 1327*9880d681SAndroid Build Coastguard Worker} 1328*9880d681SAndroid Build Coastguard Worker 1329*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vextractf64x4.512(<8 x double>, i32, <4 x double>, i8) 1330*9880d681SAndroid Build Coastguard Worker 1331*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psll_d(<16 x i32> %a0, <4 x i32> %a1) { 1332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psll_d: 1333*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld %xmm1, %zmm0, %zmm0 1335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1336*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1337*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1338*9880d681SAndroid Build Coastguard Worker} 1339*9880d681SAndroid Build Coastguard Worker 1340*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psll_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psll_d: 1342*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1344*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld %xmm1, %zmm0, %zmm2 {%k1} 1345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1347*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) 1348*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1349*9880d681SAndroid Build Coastguard Worker} 1350*9880d681SAndroid Build Coastguard Worker 1351*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psll_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) { 1352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psll_d: 1353*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld %xmm1, %zmm0, %zmm0 {%k1} {z} 1356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1357*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1358*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1359*9880d681SAndroid Build Coastguard Worker} 1360*9880d681SAndroid Build Coastguard Worker 1361*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psll.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone 1362*9880d681SAndroid Build Coastguard Worker 1363*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psll_q(<8 x i64> %a0, <2 x i64> %a1) { 1364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psll_q: 1365*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq %xmm1, %zmm0, %zmm0 1367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1368*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1369*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1370*9880d681SAndroid Build Coastguard Worker} 1371*9880d681SAndroid Build Coastguard Worker 1372*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psll_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1373*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psll_q: 1374*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq %xmm1, %zmm0, %zmm2 {%k1} 1377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1379*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) 1380*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1381*9880d681SAndroid Build Coastguard Worker} 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psll_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) { 1384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psll_q: 1385*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq %xmm1, %zmm0, %zmm0 {%k1} {z} 1388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1389*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1390*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1391*9880d681SAndroid Build Coastguard Worker} 1392*9880d681SAndroid Build Coastguard Worker 1393*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psll.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone 1394*9880d681SAndroid Build Coastguard Worker 1395*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrl_d(<16 x i32> %a0, <4 x i32> %a1) { 1396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrl_d: 1397*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld %xmm1, %zmm0, %zmm0 1399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1400*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1401*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1402*9880d681SAndroid Build Coastguard Worker} 1403*9880d681SAndroid Build Coastguard Worker 1404*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrl_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrl_d: 1406*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld %xmm1, %zmm0, %zmm2 {%k1} 1409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1411*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) 1412*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1413*9880d681SAndroid Build Coastguard Worker} 1414*9880d681SAndroid Build Coastguard Worker 1415*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrl_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) { 1416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrl_d: 1417*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld %xmm1, %zmm0, %zmm0 {%k1} {z} 1420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1421*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1422*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1423*9880d681SAndroid Build Coastguard Worker} 1424*9880d681SAndroid Build Coastguard Worker 1425*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrl.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone 1426*9880d681SAndroid Build Coastguard Worker 1427*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrl_q(<8 x i64> %a0, <2 x i64> %a1) { 1428*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrl_q: 1429*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq %xmm1, %zmm0, %zmm0 1431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1432*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1433*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1434*9880d681SAndroid Build Coastguard Worker} 1435*9880d681SAndroid Build Coastguard Worker 1436*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrl_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrl_q: 1438*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1439*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1440*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq %xmm1, %zmm0, %zmm2 {%k1} 1441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1443*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) 1444*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1445*9880d681SAndroid Build Coastguard Worker} 1446*9880d681SAndroid Build Coastguard Worker 1447*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrl_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) { 1448*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrl_q: 1449*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq %xmm1, %zmm0, %zmm0 {%k1} {z} 1452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1453*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1454*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1455*9880d681SAndroid Build Coastguard Worker} 1456*9880d681SAndroid Build Coastguard Worker 1457*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrl.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone 1458*9880d681SAndroid Build Coastguard Worker 1459*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psra_d(<16 x i32> %a0, <4 x i32> %a1) { 1460*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psra_d: 1461*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1462*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad %xmm1, %zmm0, %zmm0 1463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1464*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1465*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1466*9880d681SAndroid Build Coastguard Worker} 1467*9880d681SAndroid Build Coastguard Worker 1468*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psra_d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psra_d: 1470*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad %xmm1, %zmm0, %zmm2 {%k1} 1473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1475*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> %a2, i16 %mask) 1476*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1477*9880d681SAndroid Build Coastguard Worker} 1478*9880d681SAndroid Build Coastguard Worker 1479*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psra_d(<16 x i32> %a0, <4 x i32> %a1, i16 %mask) { 1480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psra_d: 1481*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad %xmm1, %zmm0, %zmm0 {%k1} {z} 1484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1485*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32> %a0, <4 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1486*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1487*9880d681SAndroid Build Coastguard Worker} 1488*9880d681SAndroid Build Coastguard Worker 1489*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psra.d(<16 x i32>, <4 x i32>, <16 x i32>, i16) nounwind readnone 1490*9880d681SAndroid Build Coastguard Worker 1491*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psra_q(<8 x i64> %a0, <2 x i64> %a1) { 1492*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psra_q: 1493*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq %xmm1, %zmm0, %zmm0 1495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1496*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1497*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1498*9880d681SAndroid Build Coastguard Worker} 1499*9880d681SAndroid Build Coastguard Worker 1500*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psra_q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psra_q: 1502*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq %xmm1, %zmm0, %zmm2 {%k1} 1505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1507*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> %a2, i8 %mask) 1508*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1509*9880d681SAndroid Build Coastguard Worker} 1510*9880d681SAndroid Build Coastguard Worker 1511*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psra_q(<8 x i64> %a0, <2 x i64> %a1, i8 %mask) { 1512*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psra_q: 1513*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1514*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq %xmm1, %zmm0, %zmm0 {%k1} {z} 1516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1517*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64> %a0, <2 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1518*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1519*9880d681SAndroid Build Coastguard Worker} 1520*9880d681SAndroid Build Coastguard Worker 1521*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psra.q(<8 x i64>, <2 x i64>, <8 x i64>, i8) nounwind readnone 1522*9880d681SAndroid Build Coastguard Worker 1523*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psllv_d(<16 x i32> %a0, <16 x i32> %a1) { 1524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psllv_d: 1525*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvd %zmm1, %zmm0, %zmm0 1527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1528*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1529*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1530*9880d681SAndroid Build Coastguard Worker} 1531*9880d681SAndroid Build Coastguard Worker 1532*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psllv_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psllv_d: 1534*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvd %zmm1, %zmm0, %zmm2 {%k1} 1537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1539*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) 1540*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1541*9880d681SAndroid Build Coastguard Worker} 1542*9880d681SAndroid Build Coastguard Worker 1543*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psllv_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) { 1544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psllv_d: 1545*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvd %zmm1, %zmm0, %zmm0 {%k1} {z} 1548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1549*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1550*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1551*9880d681SAndroid Build Coastguard Worker} 1552*9880d681SAndroid Build Coastguard Worker 1553*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psllv.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone 1554*9880d681SAndroid Build Coastguard Worker 1555*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psllv_q(<8 x i64> %a0, <8 x i64> %a1) { 1556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psllv_q: 1557*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvq %zmm1, %zmm0, %zmm0 1559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1560*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1561*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1562*9880d681SAndroid Build Coastguard Worker} 1563*9880d681SAndroid Build Coastguard Worker 1564*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psllv_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psllv_q: 1566*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvq %zmm1, %zmm0, %zmm2 {%k1} 1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1571*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) 1572*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1573*9880d681SAndroid Build Coastguard Worker} 1574*9880d681SAndroid Build Coastguard Worker 1575*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psllv_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { 1576*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psllv_q: 1577*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllvq %zmm1, %zmm0, %zmm0 {%k1} {z} 1580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1581*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1582*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1583*9880d681SAndroid Build Coastguard Worker} 1584*9880d681SAndroid Build Coastguard Worker 1585*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psllv.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone 1586*9880d681SAndroid Build Coastguard Worker 1587*9880d681SAndroid Build Coastguard Worker 1588*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrav_d(<16 x i32> %a0, <16 x i32> %a1) { 1589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrav_d: 1590*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravd %zmm1, %zmm0, %zmm0 1592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1593*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1594*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1595*9880d681SAndroid Build Coastguard Worker} 1596*9880d681SAndroid Build Coastguard Worker 1597*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrav_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1598*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrav_d: 1599*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravd %zmm1, %zmm0, %zmm2 {%k1} 1602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1604*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) 1605*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1606*9880d681SAndroid Build Coastguard Worker} 1607*9880d681SAndroid Build Coastguard Worker 1608*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrav_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) { 1609*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrav_d: 1610*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravd %zmm1, %zmm0, %zmm0 {%k1} {z} 1613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1614*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1615*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1616*9880d681SAndroid Build Coastguard Worker} 1617*9880d681SAndroid Build Coastguard Worker 1618*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrav.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone 1619*9880d681SAndroid Build Coastguard Worker 1620*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrav_q(<8 x i64> %a0, <8 x i64> %a1) { 1621*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrav_q: 1622*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravq %zmm1, %zmm0, %zmm0 1624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1625*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1626*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1627*9880d681SAndroid Build Coastguard Worker} 1628*9880d681SAndroid Build Coastguard Worker 1629*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrav_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrav_q: 1631*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravq %zmm1, %zmm0, %zmm2 {%k1} 1634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1636*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) 1637*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1638*9880d681SAndroid Build Coastguard Worker} 1639*9880d681SAndroid Build Coastguard Worker 1640*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrav_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { 1641*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrav_q: 1642*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1643*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsravq %zmm1, %zmm0, %zmm0 {%k1} {z} 1645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1646*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1647*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1648*9880d681SAndroid Build Coastguard Worker} 1649*9880d681SAndroid Build Coastguard Worker 1650*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrav.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone 1651*9880d681SAndroid Build Coastguard Worker 1652*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_psrlv_d(<16 x i32> %a0, <16 x i32> %a1) { 1653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_d: 1654*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvd %zmm1, %zmm0, %zmm0 1656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1657*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 -1) 1658*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1659*9880d681SAndroid Build Coastguard Worker} 1660*9880d681SAndroid Build Coastguard Worker 1661*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_mask_psrlv_d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) { 1662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrlv_d: 1663*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvd %zmm1, %zmm0, %zmm2 {%k1} 1666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1668*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> %a2, i16 %mask) 1669*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1670*9880d681SAndroid Build Coastguard Worker} 1671*9880d681SAndroid Build Coastguard Worker 1672*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_x86_avx512_maskz_psrlv_d(<16 x i32> %a0, <16 x i32> %a1, i16 %mask) { 1673*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrlv_d: 1674*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvd %zmm1, %zmm0, %zmm0 {%k1} {z} 1677*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1678*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32> %a0, <16 x i32> %a1, <16 x i32> zeroinitializer, i16 %mask) 1679*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 1680*9880d681SAndroid Build Coastguard Worker} 1681*9880d681SAndroid Build Coastguard Worker 1682*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrlv.d(<16 x i32>, <16 x i32>, <16 x i32>, i16) nounwind readnone 1683*9880d681SAndroid Build Coastguard Worker 1684*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrlv_q(<8 x i64> %a0, <8 x i64> %a1) { 1685*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_q: 1686*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvq %zmm1, %zmm0, %zmm0 1688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1689*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 -1) 1690*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1691*9880d681SAndroid Build Coastguard Worker} 1692*9880d681SAndroid Build Coastguard Worker 1693*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_mask_psrlv_q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) { 1694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mask_psrlv_q: 1695*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvq %zmm1, %zmm0, %zmm2 {%k1} 1698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1700*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> %a2, i8 %mask) 1701*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1702*9880d681SAndroid Build Coastguard Worker} 1703*9880d681SAndroid Build Coastguard Worker 1704*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_maskz_psrlv_q(<8 x i64> %a0, <8 x i64> %a1, i8 %mask) { 1705*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_maskz_psrlv_q: 1706*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvq %zmm1, %zmm0, %zmm0 {%k1} {z} 1709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1710*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %a1, <8 x i64> zeroinitializer, i8 %mask) 1711*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1712*9880d681SAndroid Build Coastguard Worker} 1713*9880d681SAndroid Build Coastguard Worker 1714*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64>, <8 x i64>, <8 x i64>, i8) nounwind readnone 1715*9880d681SAndroid Build Coastguard Worker 1716*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_x86_avx512_psrlv_q_memop(<8 x i64> %a0, <8 x i64>* %ptr) { 1717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_psrlv_q_memop: 1718*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlvq (%rdi), %zmm0, %zmm0 1720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1721*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr 1722*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrlv.q(<8 x i64> %a0, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 1723*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 1724*9880d681SAndroid Build Coastguard Worker} 1725*9880d681SAndroid Build Coastguard Worker 1726*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 1727*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 1728*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32) 1729*9880d681SAndroid Build Coastguard Worker 1730*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rn(<16 x float> %a0, <16 x float> %a1) { 1731*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rn: 1732*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1733*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rn-sae}, %zmm1, %zmm0, %zmm0 1734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1735*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, 1736*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 0) 1737*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1738*9880d681SAndroid Build Coastguard Worker} 1739*9880d681SAndroid Build Coastguard Worker 1740*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rd(<16 x float> %a0, <16 x float> %a1) { 1741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rd: 1742*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rd-sae}, %zmm1, %zmm0, %zmm0 1744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1745*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, 1746*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 1) 1747*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1748*9880d681SAndroid Build Coastguard Worker} 1749*9880d681SAndroid Build Coastguard Worker 1750*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_ru(<16 x float> %a0, <16 x float> %a1) { 1751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_ru: 1752*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {ru-sae}, %zmm1, %zmm0, %zmm0 1754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1755*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, 1756*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 2) 1757*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1758*9880d681SAndroid Build Coastguard Worker} 1759*9880d681SAndroid Build Coastguard Worker 1760*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vsubps_rz(<16 x float> %a0, <16 x float> %a1) { 1761*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vsubps_rz: 1762*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rz-sae}, %zmm1, %zmm0, %zmm0 1764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1765*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, 1766*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 3) 1767*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1768*9880d681SAndroid Build Coastguard Worker} 1769*9880d681SAndroid Build Coastguard Worker 1770*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rn(<16 x float> %a0, <16 x float> %a1) { 1771*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rn: 1772*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rn-sae}, %zmm1, %zmm0, %zmm0 1774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1775*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1776*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 0) 1777*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1778*9880d681SAndroid Build Coastguard Worker} 1779*9880d681SAndroid Build Coastguard Worker 1780*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rd(<16 x float> %a0, <16 x float> %a1) { 1781*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rd: 1782*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1783*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rd-sae}, %zmm1, %zmm0, %zmm0 1784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1785*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1786*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 1) 1787*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1788*9880d681SAndroid Build Coastguard Worker} 1789*9880d681SAndroid Build Coastguard Worker 1790*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_ru(<16 x float> %a0, <16 x float> %a1) { 1791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_ru: 1792*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {ru-sae}, %zmm1, %zmm0, %zmm0 1794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1795*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1796*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 2) 1797*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1798*9880d681SAndroid Build Coastguard Worker} 1799*9880d681SAndroid Build Coastguard Worker 1800*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_rz(<16 x float> %a0, <16 x float> %a1) { 1801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_rz: 1802*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rz-sae}, %zmm1, %zmm0, %zmm0 1804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1805*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1806*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 -1, i32 3) 1807*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1808*9880d681SAndroid Build Coastguard Worker} 1809*9880d681SAndroid Build Coastguard Worker 1810*9880d681SAndroid Build Coastguard Worker;; mask float 1811*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rn(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 1812*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rn: 1813*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1817*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1818*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 %mask, i32 0) 1819*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1820*9880d681SAndroid Build Coastguard Worker} 1821*9880d681SAndroid Build Coastguard Worker 1822*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rd(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 1823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rd: 1824*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1828*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1829*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 %mask, i32 1) 1830*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1831*9880d681SAndroid Build Coastguard Worker} 1832*9880d681SAndroid Build Coastguard Worker 1833*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_ru(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 1834*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_ru: 1835*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1839*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1840*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 %mask, i32 2) 1841*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1842*9880d681SAndroid Build Coastguard Worker} 1843*9880d681SAndroid Build Coastguard Worker 1844*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_rz(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 1845*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_rz: 1846*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1850*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1851*9880d681SAndroid Build Coastguard Worker <16 x float> zeroinitializer, i16 %mask, i32 3) 1852*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1853*9880d681SAndroid Build Coastguard Worker} 1854*9880d681SAndroid Build Coastguard Worker 1855*9880d681SAndroid Build Coastguard Worker;; With Passthru value 1856*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rn(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) { 1857*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rn: 1858*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} 1861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1863*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1864*9880d681SAndroid Build Coastguard Worker <16 x float> %passthru, i16 %mask, i32 0) 1865*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1866*9880d681SAndroid Build Coastguard Worker} 1867*9880d681SAndroid Build Coastguard Worker 1868*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rd(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) { 1869*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rd: 1870*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1871*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1} 1873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1875*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1876*9880d681SAndroid Build Coastguard Worker <16 x float> %passthru, i16 %mask, i32 1) 1877*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1878*9880d681SAndroid Build Coastguard Worker} 1879*9880d681SAndroid Build Coastguard Worker 1880*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_ru(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) { 1881*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_ru: 1882*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1883*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1884*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1} 1885*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1886*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1887*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1888*9880d681SAndroid Build Coastguard Worker <16 x float> %passthru, i16 %mask, i32 2) 1889*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1890*9880d681SAndroid Build Coastguard Worker} 1891*9880d681SAndroid Build Coastguard Worker 1892*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_vmulps_mask_passthru_rz(<16 x float> %a0, <16 x float> %a1, <16 x float> %passthru, i16 %mask) { 1893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulps_mask_passthru_rz: 1894*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1} 1897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1899*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.mul.ps.512(<16 x float> %a0, <16 x float> %a1, 1900*9880d681SAndroid Build Coastguard Worker <16 x float> %passthru, i16 %mask, i32 3) 1901*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 1902*9880d681SAndroid Build Coastguard Worker} 1903*9880d681SAndroid Build Coastguard Worker 1904*9880d681SAndroid Build Coastguard Worker;; mask double 1905*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rn(<8 x double> %a0, <8 x double> %a1, i8 %mask) { 1906*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rn: 1907*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulpd {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1911*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1, 1912*9880d681SAndroid Build Coastguard Worker <8 x double> zeroinitializer, i8 %mask, i32 0) 1913*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 1914*9880d681SAndroid Build Coastguard Worker} 1915*9880d681SAndroid Build Coastguard Worker 1916*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rd(<8 x double> %a0, <8 x double> %a1, i8 %mask) { 1917*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rd: 1918*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulpd {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1922*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1, 1923*9880d681SAndroid Build Coastguard Worker <8 x double> zeroinitializer, i8 %mask, i32 1) 1924*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 1925*9880d681SAndroid Build Coastguard Worker} 1926*9880d681SAndroid Build Coastguard Worker 1927*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_ru(<8 x double> %a0, <8 x double> %a1, i8 %mask) { 1928*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_ru: 1929*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1930*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulpd {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1933*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1, 1934*9880d681SAndroid Build Coastguard Worker <8 x double> zeroinitializer, i8 %mask, i32 2) 1935*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 1936*9880d681SAndroid Build Coastguard Worker} 1937*9880d681SAndroid Build Coastguard Worker 1938*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @test_vmulpd_mask_rz(<8 x double> %a0, <8 x double> %a1, i8 %mask) { 1939*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vmulpd_mask_rz: 1940*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmulpd {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 1943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1944*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.mul.pd.512(<8 x double> %a0, <8 x double> %a1, 1945*9880d681SAndroid Build Coastguard Worker <8 x double> zeroinitializer, i8 %mask, i32 3) 1946*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res 1947*9880d681SAndroid Build Coastguard Worker} 1948*9880d681SAndroid Build Coastguard Worker 1949*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rr(<16 x i32> %a, <16 x i32> %b) { 1950*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rr: 1951*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 1953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1954*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 1955*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 1956*9880d681SAndroid Build Coastguard Worker} 1957*9880d681SAndroid Build Coastguard Worker 1958*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) { 1959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rrk: 1960*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm2 {%k1} 1963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 1964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1965*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 1966*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 1967*9880d681SAndroid Build Coastguard Worker} 1968*9880d681SAndroid Build Coastguard Worker 1969*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i16 %mask) { 1970*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rrkz: 1971*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 1973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 {%k1} {z} 1974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1975*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 1976*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 1977*9880d681SAndroid Build Coastguard Worker} 1978*9880d681SAndroid Build Coastguard Worker 1979*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) { 1980*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rm: 1981*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi), %zmm0, %zmm0 1983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1984*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 1985*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 1986*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 1987*9880d681SAndroid Build Coastguard Worker} 1988*9880d681SAndroid Build Coastguard Worker 1989*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) { 1990*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmk: 1991*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 1992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 1993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi), %zmm0, %zmm1 {%k1} 1994*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 1995*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 1996*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 1997*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 1998*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 1999*9880d681SAndroid Build Coastguard Worker} 2000*9880d681SAndroid Build Coastguard Worker 2001*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) { 2002*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmkz: 2003*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi), %zmm0, %zmm0 {%k1} {z} 2006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2007*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2008*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2009*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2010*9880d681SAndroid Build Coastguard Worker} 2011*9880d681SAndroid Build Coastguard Worker 2012*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmb(<16 x i32> %a, i32* %ptr_b) { 2013*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmb: 2014*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi){1to16}, %zmm0, %zmm0 2016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2017*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2018*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2019*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2020*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2021*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2022*9880d681SAndroid Build Coastguard Worker} 2023*9880d681SAndroid Build Coastguard Worker 2024*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmbk(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) { 2025*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmbk: 2026*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi){1to16}, %zmm0, %zmm1 {%k1} 2029*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2031*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2032*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2033*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2034*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2035*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2036*9880d681SAndroid Build Coastguard Worker} 2037*9880d681SAndroid Build Coastguard Worker 2038*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_add_epi32_rmbkz(<16 x i32> %a, i32* %ptr_b, i16 %mask) { 2039*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi32_rmbkz: 2040*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2041*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} 2043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2044*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2045*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2046*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2047*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2048*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2049*9880d681SAndroid Build Coastguard Worker} 2050*9880d681SAndroid Build Coastguard Worker 2051*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.padd.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 2052*9880d681SAndroid Build Coastguard Worker 2053*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rr(<16 x i32> %a, <16 x i32> %b) { 2054*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rr: 2055*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd %zmm1, %zmm0, %zmm0 2057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2058*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2059*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2060*9880d681SAndroid Build Coastguard Worker} 2061*9880d681SAndroid Build Coastguard Worker 2062*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) { 2063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rrk: 2064*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd %zmm1, %zmm0, %zmm2 {%k1} 2067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2069*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2070*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2071*9880d681SAndroid Build Coastguard Worker} 2072*9880d681SAndroid Build Coastguard Worker 2073*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i16 %mask) { 2074*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rrkz: 2075*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2077*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd %zmm1, %zmm0, %zmm0 {%k1} {z} 2078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2079*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2080*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2081*9880d681SAndroid Build Coastguard Worker} 2082*9880d681SAndroid Build Coastguard Worker 2083*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) { 2084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rm: 2085*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi), %zmm0, %zmm0 2087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2088*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2089*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2090*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2091*9880d681SAndroid Build Coastguard Worker} 2092*9880d681SAndroid Build Coastguard Worker 2093*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) { 2094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmk: 2095*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi), %zmm0, %zmm1 {%k1} 2098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2100*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2101*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2102*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2103*9880d681SAndroid Build Coastguard Worker} 2104*9880d681SAndroid Build Coastguard Worker 2105*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) { 2106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmkz: 2107*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi), %zmm0, %zmm0 {%k1} {z} 2110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2111*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2112*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2113*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2114*9880d681SAndroid Build Coastguard Worker} 2115*9880d681SAndroid Build Coastguard Worker 2116*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmb(<16 x i32> %a, i32* %ptr_b) { 2117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmb: 2118*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi){1to16}, %zmm0, %zmm0 2120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2121*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2122*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2123*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2124*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2125*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2126*9880d681SAndroid Build Coastguard Worker} 2127*9880d681SAndroid Build Coastguard Worker 2128*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmbk(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) { 2129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmbk: 2130*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi){1to16}, %zmm0, %zmm1 {%k1} 2133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2135*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2136*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2137*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2138*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2139*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2140*9880d681SAndroid Build Coastguard Worker} 2141*9880d681SAndroid Build Coastguard Worker 2142*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_sub_epi32_rmbkz(<16 x i32> %a, i32* %ptr_b, i16 %mask) { 2143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi32_rmbkz: 2144*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubd (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} 2147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2148*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2149*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2150*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2151*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2152*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2153*9880d681SAndroid Build Coastguard Worker} 2154*9880d681SAndroid Build Coastguard Worker 2155*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psub.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 2156*9880d681SAndroid Build Coastguard Worker 2157*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rr(<8 x i64> %a, <8 x i64> %b) { 2158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rr: 2159*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm0 2161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2162*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2163*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2164*9880d681SAndroid Build Coastguard Worker} 2165*9880d681SAndroid Build Coastguard Worker 2166*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rrk(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) { 2167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rrk: 2168*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm2 {%k1} 2171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2173*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2174*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2175*9880d681SAndroid Build Coastguard Worker} 2176*9880d681SAndroid Build Coastguard Worker 2177*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rrkz(<8 x i64> %a, <8 x i64> %b, i8 %mask) { 2178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rrkz: 2179*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm0 {%k1} {z} 2182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2183*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2184*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2185*9880d681SAndroid Build Coastguard Worker} 2186*9880d681SAndroid Build Coastguard Worker 2187*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rm(<8 x i64> %a, <8 x i64>* %ptr_b) { 2188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rm: 2189*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi), %zmm0, %zmm0 2191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2192*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2193*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2194*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2195*9880d681SAndroid Build Coastguard Worker} 2196*9880d681SAndroid Build Coastguard Worker 2197*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmk(<8 x i64> %a, <8 x i64>* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2198*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmk: 2199*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi), %zmm0, %zmm1 {%k1} 2202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2204*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2205*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2206*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2207*9880d681SAndroid Build Coastguard Worker} 2208*9880d681SAndroid Build Coastguard Worker 2209*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmkz(<8 x i64> %a, <8 x i64>* %ptr_b, i8 %mask) { 2210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmkz: 2211*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi), %zmm0, %zmm0 {%k1} {z} 2214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2215*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2216*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2217*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2218*9880d681SAndroid Build Coastguard Worker} 2219*9880d681SAndroid Build Coastguard Worker 2220*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmb(<8 x i64> %a, i64* %ptr_b) { 2221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmb: 2222*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi){1to8}, %zmm0, %zmm0 2224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2225*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2226*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2227*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2228*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2229*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2230*9880d681SAndroid Build Coastguard Worker} 2231*9880d681SAndroid Build Coastguard Worker 2232*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmbk(<8 x i64> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2233*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmbk: 2234*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi){1to8}, %zmm0, %zmm1 {%k1} 2237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2239*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2240*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2241*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2242*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2243*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2244*9880d681SAndroid Build Coastguard Worker} 2245*9880d681SAndroid Build Coastguard Worker 2246*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_add_epi64_rmbkz(<8 x i64> %a, i64* %ptr_b, i8 %mask) { 2247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi64_rmbkz: 2248*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z} 2251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2252*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2253*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2254*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2255*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2256*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2257*9880d681SAndroid Build Coastguard Worker} 2258*9880d681SAndroid Build Coastguard Worker 2259*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.padd.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 2260*9880d681SAndroid Build Coastguard Worker 2261*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rr(<8 x i64> %a, <8 x i64> %b) { 2262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rr: 2263*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq %zmm1, %zmm0, %zmm0 2265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2266*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2267*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2268*9880d681SAndroid Build Coastguard Worker} 2269*9880d681SAndroid Build Coastguard Worker 2270*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rrk(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) { 2271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rrk: 2272*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq %zmm1, %zmm0, %zmm2 {%k1} 2275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2277*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2278*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2279*9880d681SAndroid Build Coastguard Worker} 2280*9880d681SAndroid Build Coastguard Worker 2281*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rrkz(<8 x i64> %a, <8 x i64> %b, i8 %mask) { 2282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rrkz: 2283*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq %zmm1, %zmm0, %zmm0 {%k1} {z} 2286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2287*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2288*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2289*9880d681SAndroid Build Coastguard Worker} 2290*9880d681SAndroid Build Coastguard Worker 2291*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rm(<8 x i64> %a, <8 x i64>* %ptr_b) { 2292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rm: 2293*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi), %zmm0, %zmm0 2295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2296*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2297*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2298*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2299*9880d681SAndroid Build Coastguard Worker} 2300*9880d681SAndroid Build Coastguard Worker 2301*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmk(<8 x i64> %a, <8 x i64>* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmk: 2303*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi), %zmm0, %zmm1 {%k1} 2306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2308*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2309*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2310*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2311*9880d681SAndroid Build Coastguard Worker} 2312*9880d681SAndroid Build Coastguard Worker 2313*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmkz(<8 x i64> %a, <8 x i64>* %ptr_b, i8 %mask) { 2314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmkz: 2315*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi), %zmm0, %zmm0 {%k1} {z} 2318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2319*9880d681SAndroid Build Coastguard Worker %b = load <8 x i64>, <8 x i64>* %ptr_b 2320*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2321*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2322*9880d681SAndroid Build Coastguard Worker} 2323*9880d681SAndroid Build Coastguard Worker 2324*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmb(<8 x i64> %a, i64* %ptr_b) { 2325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmb: 2326*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi){1to8}, %zmm0, %zmm0 2328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2329*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2330*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2331*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2332*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 -1) 2333*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2334*9880d681SAndroid Build Coastguard Worker} 2335*9880d681SAndroid Build Coastguard Worker 2336*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmbk(<8 x i64> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmbk: 2338*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi){1to8}, %zmm0, %zmm1 {%k1} 2341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2343*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2344*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2345*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2346*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> %passThru, i8 %mask) 2347*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2348*9880d681SAndroid Build Coastguard Worker} 2349*9880d681SAndroid Build Coastguard Worker 2350*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_sub_epi64_rmbkz(<8 x i64> %a, i64* %ptr_b, i8 %mask) { 2351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi64_rmbkz: 2352*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsubq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z} 2355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2356*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2357*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2358*9880d681SAndroid Build Coastguard Worker %b = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2359*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64> %a, <8 x i64> %b, <8 x i64> zeroinitializer, i8 %mask) 2360*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2361*9880d681SAndroid Build Coastguard Worker} 2362*9880d681SAndroid Build Coastguard Worker 2363*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psub.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 2364*9880d681SAndroid Build Coastguard Worker 2365*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rr(<16 x i32> %a, <16 x i32> %b) { 2366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rr: 2367*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq %zmm1, %zmm0, %zmm0 2369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2370*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2371*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2372*9880d681SAndroid Build Coastguard Worker} 2373*9880d681SAndroid Build Coastguard Worker 2374*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rrk(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) { 2375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rrk: 2376*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq %zmm1, %zmm0, %zmm2 {%k1} 2379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2381*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2382*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2383*9880d681SAndroid Build Coastguard Worker} 2384*9880d681SAndroid Build Coastguard Worker 2385*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rrkz(<16 x i32> %a, <16 x i32> %b, i8 %mask) { 2386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rrkz: 2387*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq %zmm1, %zmm0, %zmm0 {%k1} {z} 2390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2391*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2392*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2393*9880d681SAndroid Build Coastguard Worker} 2394*9880d681SAndroid Build Coastguard Worker 2395*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) { 2396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rm: 2397*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi), %zmm0, %zmm0 2399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2400*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2401*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2402*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2403*9880d681SAndroid Build Coastguard Worker} 2404*9880d681SAndroid Build Coastguard Worker 2405*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmk: 2407*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi), %zmm0, %zmm1 {%k1} 2410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2412*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2413*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2414*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2415*9880d681SAndroid Build Coastguard Worker} 2416*9880d681SAndroid Build Coastguard Worker 2417*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i8 %mask) { 2418*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmkz: 2419*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi), %zmm0, %zmm0 {%k1} {z} 2422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2423*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2424*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2425*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2426*9880d681SAndroid Build Coastguard Worker} 2427*9880d681SAndroid Build Coastguard Worker 2428*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmb(<16 x i32> %a, i64* %ptr_b) { 2429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmb: 2430*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi){1to8}, %zmm0, %zmm0 2432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2433*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2434*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2435*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2436*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2437*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2438*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2439*9880d681SAndroid Build Coastguard Worker} 2440*9880d681SAndroid Build Coastguard Worker 2441*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmbk(<16 x i32> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmbk: 2443*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi){1to8}, %zmm0, %zmm1 {%k1} 2446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2448*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2449*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2450*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2451*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2452*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2453*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2454*9880d681SAndroid Build Coastguard Worker} 2455*9880d681SAndroid Build Coastguard Worker 2456*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epi32_rmbkz(<16 x i32> %a, i64* %ptr_b, i8 %mask) { 2457*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epi32_rmbkz: 2458*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuldq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z} 2461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2462*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2463*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2464*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2465*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2466*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2467*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2468*9880d681SAndroid Build Coastguard Worker} 2469*9880d681SAndroid Build Coastguard Worker 2470*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmul.dq.512(<16 x i32>, <16 x i32>, <8 x i64>, i8) 2471*9880d681SAndroid Build Coastguard Worker 2472*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rr(<16 x i32> %a, <16 x i32> %b) { 2473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rr: 2474*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq %zmm1, %zmm0, %zmm0 2476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2477*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2478*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2479*9880d681SAndroid Build Coastguard Worker} 2480*9880d681SAndroid Build Coastguard Worker 2481*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rrk(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) { 2482*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rrk: 2483*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq %zmm1, %zmm0, %zmm2 {%k1} 2486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2488*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2489*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2490*9880d681SAndroid Build Coastguard Worker} 2491*9880d681SAndroid Build Coastguard Worker 2492*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rrkz(<16 x i32> %a, <16 x i32> %b, i8 %mask) { 2493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rrkz: 2494*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq %zmm1, %zmm0, %zmm0 {%k1} {z} 2497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2498*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2499*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2500*9880d681SAndroid Build Coastguard Worker} 2501*9880d681SAndroid Build Coastguard Worker 2502*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rm(<16 x i32> %a, <16 x i32>* %ptr_b) { 2503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rm: 2504*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi), %zmm0, %zmm0 2506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2507*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2508*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2509*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2510*9880d681SAndroid Build Coastguard Worker} 2511*9880d681SAndroid Build Coastguard Worker 2512*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmk(<16 x i32> %a, <16 x i32>* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmk: 2514*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi), %zmm0, %zmm1 {%k1} 2517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2519*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2520*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2521*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2522*9880d681SAndroid Build Coastguard Worker} 2523*9880d681SAndroid Build Coastguard Worker 2524*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmkz(<16 x i32> %a, <16 x i32>* %ptr_b, i8 %mask) { 2525*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmkz: 2526*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi), %zmm0, %zmm0 {%k1} {z} 2529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2530*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2531*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2532*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2533*9880d681SAndroid Build Coastguard Worker} 2534*9880d681SAndroid Build Coastguard Worker 2535*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmb(<16 x i32> %a, i64* %ptr_b) { 2536*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmb: 2537*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi){1to8}, %zmm0, %zmm0 2539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2540*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2541*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2542*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2543*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2544*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 -1) 2545*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2546*9880d681SAndroid Build Coastguard Worker} 2547*9880d681SAndroid Build Coastguard Worker 2548*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmbk(<16 x i32> %a, i64* %ptr_b, <8 x i64> %passThru, i8 %mask) { 2549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmbk: 2550*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi){1to8}, %zmm0, %zmm1 {%k1} 2553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2555*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2556*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2557*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2558*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2559*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> %passThru, i8 %mask) 2560*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2561*9880d681SAndroid Build Coastguard Worker} 2562*9880d681SAndroid Build Coastguard Worker 2563*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mask_mul_epu32_rmbkz(<16 x i32> %a, i64* %ptr_b, i8 %mask) { 2564*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mul_epu32_rmbkz: 2565*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmuludq (%rdi){1to8}, %zmm0, %zmm0 {%k1} {z} 2568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2569*9880d681SAndroid Build Coastguard Worker %q = load i64, i64* %ptr_b 2570*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <8 x i64> undef, i64 %q, i32 0 2571*9880d681SAndroid Build Coastguard Worker %b64 = shufflevector <8 x i64> %vecinit.i, <8 x i64> undef, <8 x i32> zeroinitializer 2572*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i64> %b64 to <16 x i32> 2573*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32> %a, <16 x i32> %b, <8 x i64> zeroinitializer, i8 %mask) 2574*9880d681SAndroid Build Coastguard Worker ret < 8 x i64> %res 2575*9880d681SAndroid Build Coastguard Worker} 2576*9880d681SAndroid Build Coastguard Worker 2577*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmulu.dq.512(<16 x i32>, <16 x i32>, <8 x i64>, i8) 2578*9880d681SAndroid Build Coastguard Worker 2579*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) { 2580*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rr_512: 2581*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2582*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld %zmm1, %zmm0, %zmm0 2583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2584*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2585*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 2586*9880d681SAndroid Build Coastguard Worker} 2587*9880d681SAndroid Build Coastguard Worker 2588*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) { 2589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rrk_512: 2590*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld %zmm1, %zmm0, %zmm2 {%k1} 2593*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2594*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2595*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2596*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2597*9880d681SAndroid Build Coastguard Worker} 2598*9880d681SAndroid Build Coastguard Worker 2599*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i16 %mask) { 2600*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rrkz_512: 2601*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld %zmm1, %zmm0, %zmm0 {%k1} {z} 2604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2605*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2606*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2607*9880d681SAndroid Build Coastguard Worker} 2608*9880d681SAndroid Build Coastguard Worker 2609*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) { 2610*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rm_512: 2611*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi), %zmm0, %zmm0 2613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2614*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2615*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2616*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2617*9880d681SAndroid Build Coastguard Worker} 2618*9880d681SAndroid Build Coastguard Worker 2619*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <16 x i32> %passThru, i16 %mask) { 2620*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmk_512: 2621*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi), %zmm0, %zmm1 {%k1} 2624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2626*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2627*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2628*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2629*9880d681SAndroid Build Coastguard Worker} 2630*9880d681SAndroid Build Coastguard Worker 2631*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i16 %mask) { 2632*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmkz_512: 2633*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi), %zmm0, %zmm0 {%k1} {z} 2636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2637*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 2638*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2639*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2640*9880d681SAndroid Build Coastguard Worker} 2641*9880d681SAndroid Build Coastguard Worker 2642*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) { 2643*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmb_512: 2644*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi){1to16}, %zmm0, %zmm0 2646*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2647*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2648*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2649*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2650*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 -1) 2651*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2652*9880d681SAndroid Build Coastguard Worker} 2653*9880d681SAndroid Build Coastguard Worker 2654*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <16 x i32> %passThru, i16 %mask) { 2655*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmbk_512: 2656*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi){1to16}, %zmm0, %zmm1 {%k1} 2659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 2660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2661*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2662*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2663*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2664*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> %passThru, i16 %mask) 2665*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2666*9880d681SAndroid Build Coastguard Worker} 2667*9880d681SAndroid Build Coastguard Worker 2668*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_mask_mullo_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i16 %mask) { 2669*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi32_rmbkz_512: 2670*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 2672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmulld (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} 2673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2674*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 2675*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 2676*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 2677*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32> %a, <16 x i32> %b, <16 x i32> zeroinitializer, i16 %mask) 2678*9880d681SAndroid Build Coastguard Worker ret < 16 x i32> %res 2679*9880d681SAndroid Build Coastguard Worker} 2680*9880d681SAndroid Build Coastguard Worker 2681*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmull.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 2682*9880d681SAndroid Build Coastguard Worker 2683*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2684*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rn_sae: 2685*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2689*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 0) 2690*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2691*9880d681SAndroid Build Coastguard Worker} 2692*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rd_sae: 2694*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2698*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 1) 2699*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2700*9880d681SAndroid Build Coastguard Worker} 2701*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2702*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_ru_sae: 2703*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2705*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2707*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 2) 2708*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2709*9880d681SAndroid Build Coastguard Worker} 2710*9880d681SAndroid Build Coastguard Worker 2711*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_rz_sae: 2713*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2717*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 3) 2718*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2719*9880d681SAndroid Build Coastguard Worker} 2720*9880d681SAndroid Build Coastguard Worker 2721*9880d681SAndroid Build Coastguard Worker 2722*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2723*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_add_round_ps_current: 2724*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2725*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2726*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 {%k1} {z} 2727*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2728*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4) 2729*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2730*9880d681SAndroid Build Coastguard Worker} 2731*9880d681SAndroid Build Coastguard Worker 2732*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rn_sae: 2734*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2739*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0) 2740*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2741*9880d681SAndroid Build Coastguard Worker} 2742*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rd_sae: 2744*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2749*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1) 2750*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2751*9880d681SAndroid Build Coastguard Worker} 2752*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2753*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_ru_sae: 2754*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2759*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2) 2760*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2761*9880d681SAndroid Build Coastguard Worker} 2762*9880d681SAndroid Build Coastguard Worker 2763*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2764*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_rz_sae: 2765*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2770*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3) 2771*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2772*9880d681SAndroid Build Coastguard Worker} 2773*9880d681SAndroid Build Coastguard Worker 2774*9880d681SAndroid Build Coastguard Worker 2775*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2776*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_add_round_ps_current: 2777*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm2 {%k1} 2780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2782*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4) 2783*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2784*9880d681SAndroid Build Coastguard Worker} 2785*9880d681SAndroid Build Coastguard Worker 2786*9880d681SAndroid Build Coastguard Worker 2787*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2788*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rn_sae: 2789*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rn-sae}, %zmm1, %zmm0, %zmm0 2791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2792*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0) 2793*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2794*9880d681SAndroid Build Coastguard Worker} 2795*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2796*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rd_sae: 2797*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rd-sae}, %zmm1, %zmm0, %zmm0 2799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2800*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1) 2801*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2802*9880d681SAndroid Build Coastguard Worker} 2803*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2804*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_ru_sae: 2805*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {ru-sae}, %zmm1, %zmm0, %zmm0 2807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2808*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2) 2809*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2810*9880d681SAndroid Build Coastguard Worker} 2811*9880d681SAndroid Build Coastguard Worker 2812*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_rz_sae: 2814*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps {rz-sae}, %zmm1, %zmm0, %zmm0 2816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2817*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3) 2818*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2819*9880d681SAndroid Build Coastguard Worker} 2820*9880d681SAndroid Build Coastguard Worker 2821*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_add_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_add_round_ps_current: 2823*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 2825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2826*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4) 2827*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2828*9880d681SAndroid Build Coastguard Worker} 2829*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.add.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 2830*9880d681SAndroid Build Coastguard Worker 2831*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2832*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rn_sae: 2833*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2838*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0) 2839*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2840*9880d681SAndroid Build Coastguard Worker} 2841*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2842*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rd_sae: 2843*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2848*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1) 2849*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2850*9880d681SAndroid Build Coastguard Worker} 2851*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2852*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_ru_sae: 2853*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2858*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2) 2859*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2860*9880d681SAndroid Build Coastguard Worker} 2861*9880d681SAndroid Build Coastguard Worker 2862*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_rz_sae: 2864*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2866*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2867*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2868*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2869*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3) 2870*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2871*9880d681SAndroid Build Coastguard Worker} 2872*9880d681SAndroid Build Coastguard Worker 2873*9880d681SAndroid Build Coastguard Worker 2874*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_sub_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_sub_round_ps_current: 2876*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps %zmm1, %zmm0, %zmm2 {%k1} 2879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2881*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4) 2882*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2883*9880d681SAndroid Build Coastguard Worker} 2884*9880d681SAndroid Build Coastguard Worker 2885*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2886*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rn_sae: 2887*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rn-sae}, %zmm1, %zmm0, %zmm0 2889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2890*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0) 2891*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2892*9880d681SAndroid Build Coastguard Worker} 2893*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2894*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rd_sae: 2895*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rd-sae}, %zmm1, %zmm0, %zmm0 2897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2898*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1) 2899*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2900*9880d681SAndroid Build Coastguard Worker} 2901*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_ru_sae: 2903*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {ru-sae}, %zmm1, %zmm0, %zmm0 2905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2906*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2) 2907*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2908*9880d681SAndroid Build Coastguard Worker} 2909*9880d681SAndroid Build Coastguard Worker 2910*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_rz_sae: 2912*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps {rz-sae}, %zmm1, %zmm0, %zmm0 2914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2915*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3) 2916*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2917*9880d681SAndroid Build Coastguard Worker} 2918*9880d681SAndroid Build Coastguard Worker 2919*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_sub_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2920*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_sub_round_ps_current: 2921*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsubps %zmm1, %zmm0, %zmm0 2923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2924*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.sub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4) 2925*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2926*9880d681SAndroid Build Coastguard Worker} 2927*9880d681SAndroid Build Coastguard Worker 2928*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2929*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rn_sae: 2930*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rn-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2934*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 0) 2935*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2936*9880d681SAndroid Build Coastguard Worker} 2937*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2938*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rd_sae: 2939*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rd-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2943*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 1) 2944*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2945*9880d681SAndroid Build Coastguard Worker} 2946*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2947*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_ru_sae: 2948*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {ru-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2952*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 2) 2953*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2954*9880d681SAndroid Build Coastguard Worker} 2955*9880d681SAndroid Build Coastguard Worker 2956*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2957*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_rz_sae: 2958*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 2961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2962*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 3) 2963*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2964*9880d681SAndroid Build Coastguard Worker} 2965*9880d681SAndroid Build Coastguard Worker 2966*9880d681SAndroid Build Coastguard Worker 2967*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 2968*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_div_round_ps_current: 2969*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps %zmm1, %zmm0, %zmm0 {%k1} {z} 2972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2973*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4) 2974*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2975*9880d681SAndroid Build Coastguard Worker} 2976*9880d681SAndroid Build Coastguard Worker 2977*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2978*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rn_sae: 2979*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2984*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 0) 2985*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2986*9880d681SAndroid Build Coastguard Worker} 2987*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2988*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rd_sae: 2989*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 2990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 2991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rd-sae}, %zmm1, %zmm0, %zmm2 {%k1} 2992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 2993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 2994*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 1) 2995*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 2996*9880d681SAndroid Build Coastguard Worker} 2997*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 2998*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_ru_sae: 2999*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1} 3002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3004*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 2) 3005*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3006*9880d681SAndroid Build Coastguard Worker} 3007*9880d681SAndroid Build Coastguard Worker 3008*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3009*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_rz_sae: 3010*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1} 3013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3015*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 3) 3016*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3017*9880d681SAndroid Build Coastguard Worker} 3018*9880d681SAndroid Build Coastguard Worker 3019*9880d681SAndroid Build Coastguard Worker 3020*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_div_round_ps_current: 3022*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps %zmm1, %zmm0, %zmm2 {%k1} 3025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3027*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4) 3028*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3029*9880d681SAndroid Build Coastguard Worker} 3030*9880d681SAndroid Build Coastguard Worker 3031*9880d681SAndroid Build Coastguard Worker 3032*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rn_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3033*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rn_sae: 3034*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3035*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rn-sae}, %zmm1, %zmm0, %zmm0 3036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3037*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 0) 3038*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3039*9880d681SAndroid Build Coastguard Worker} 3040*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rd_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3041*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rd_sae: 3042*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rd-sae}, %zmm1, %zmm0, %zmm0 3044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3045*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 1) 3046*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3047*9880d681SAndroid Build Coastguard Worker} 3048*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_ru_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3049*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_ru_sae: 3050*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {ru-sae}, %zmm1, %zmm0, %zmm0 3052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3053*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 2) 3054*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3055*9880d681SAndroid Build Coastguard Worker} 3056*9880d681SAndroid Build Coastguard Worker 3057*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_rz_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_rz_sae: 3059*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps {rz-sae}, %zmm1, %zmm0, %zmm0 3061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3062*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 3) 3063*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3064*9880d681SAndroid Build Coastguard Worker} 3065*9880d681SAndroid Build Coastguard Worker 3066*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_div_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_div_round_ps_current: 3068*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vdivps %zmm1, %zmm0, %zmm0 3070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3071*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4) 3072*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3073*9880d681SAndroid Build Coastguard Worker} 3074*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.div.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 3075*9880d681SAndroid Build Coastguard Worker 3076*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3077*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_min_round_ps_sae: 3078*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3079*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3080*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps {sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 3081*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3082*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 8) 3083*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3084*9880d681SAndroid Build Coastguard Worker} 3085*9880d681SAndroid Build Coastguard Worker 3086*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_min_round_ps_current: 3088*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps %zmm1, %zmm0, %zmm0 {%k1} {z} 3091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3092*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4) 3093*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3094*9880d681SAndroid Build Coastguard Worker} 3095*9880d681SAndroid Build Coastguard Worker 3096*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3097*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_min_round_ps_sae: 3098*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps {sae}, %zmm1, %zmm0, %zmm2 {%k1} 3101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3103*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 8) 3104*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3105*9880d681SAndroid Build Coastguard Worker} 3106*9880d681SAndroid Build Coastguard Worker 3107*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_min_round_ps_current: 3109*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps %zmm1, %zmm0, %zmm2 {%k1} 3112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3114*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4) 3115*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3116*9880d681SAndroid Build Coastguard Worker} 3117*9880d681SAndroid Build Coastguard Worker 3118*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_min_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_min_round_ps_sae: 3120*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps {sae}, %zmm1, %zmm0, %zmm0 3122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3123*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 8) 3124*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3125*9880d681SAndroid Build Coastguard Worker} 3126*9880d681SAndroid Build Coastguard Worker 3127*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_min_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3128*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_min_round_ps_current: 3129*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vminps %zmm1, %zmm0, %zmm0 3131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3132*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4) 3133*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3134*9880d681SAndroid Build Coastguard Worker} 3135*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.min.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 3136*9880d681SAndroid Build Coastguard Worker 3137*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_max_round_ps_sae: 3139*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps {sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} 3142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3143*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 8) 3144*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3145*9880d681SAndroid Build Coastguard Worker} 3146*9880d681SAndroid Build Coastguard Worker 3147*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_maskz_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_maskz_max_round_ps_current: 3149*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps %zmm1, %zmm0, %zmm0 {%k1} {z} 3152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3153*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 %mask, i32 4) 3154*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3155*9880d681SAndroid Build Coastguard Worker} 3156*9880d681SAndroid Build Coastguard Worker 3157*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_max_round_ps_sae: 3159*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps {sae}, %zmm1, %zmm0, %zmm2 {%k1} 3162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3164*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 8) 3165*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3166*9880d681SAndroid Build Coastguard Worker} 3167*9880d681SAndroid Build Coastguard Worker 3168*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_mask_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask) { 3169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_mask_max_round_ps_current: 3170*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps %zmm1, %zmm0, %zmm2 {%k1} 3173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3175*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %src, i16 %mask, i32 4) 3176*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3177*9880d681SAndroid Build Coastguard Worker} 3178*9880d681SAndroid Build Coastguard Worker 3179*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_max_round_ps_sae(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_max_round_ps_sae: 3181*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps {sae}, %zmm1, %zmm0, %zmm0 3183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3184*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 8) 3185*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3186*9880d681SAndroid Build Coastguard Worker} 3187*9880d681SAndroid Build Coastguard Worker 3188*9880d681SAndroid Build Coastguard Workerdefine <16 x float> @test_mm512_max_round_ps_current(<16 x float> %a0, <16 x float> %a1, i16 %mask) { 3189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mm512_max_round_ps_current: 3190*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxps %zmm1, %zmm0, %zmm0 3192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3193*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float>zeroinitializer, i16 -1, i32 4) 3194*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res 3195*9880d681SAndroid Build Coastguard Worker} 3196*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.max.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 3197*9880d681SAndroid Build Coastguard Worker 3198*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone 3199*9880d681SAndroid Build Coastguard Worker 3200*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rn(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rn: 3202*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {rn-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3208*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 0) 3209*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3210*9880d681SAndroid Build Coastguard Worker} 3211*9880d681SAndroid Build Coastguard Worker 3212*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rd(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3213*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rd: 3214*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3220*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 1) 3221*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3222*9880d681SAndroid Build Coastguard Worker} 3223*9880d681SAndroid Build Coastguard Worker 3224*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_ru(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3225*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_ru: 3226*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {ru-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3232*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 2) 3233*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3234*9880d681SAndroid Build Coastguard Worker} 3235*9880d681SAndroid Build Coastguard Worker 3236*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_rz(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_rz: 3238*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3244*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 3) 3245*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3246*9880d681SAndroid Build Coastguard Worker} 3247*9880d681SAndroid Build Coastguard Worker 3248*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_add_ss_current(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_ss_current: 3250*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss %xmm1, %xmm0, %xmm2 {%k1} 3254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3256*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4) 3257*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3258*9880d681SAndroid Build Coastguard Worker} 3259*9880d681SAndroid Build Coastguard Worker 3260*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_add_ss_rn(<4 x float> %a0, <4 x float> %a1, i8 %mask) { 3261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_add_ss_rn: 3262*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {rn-sae}, %xmm1, %xmm0, %xmm0 {%k1} {z} 3266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3267*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 0) 3268*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3269*9880d681SAndroid Build Coastguard Worker} 3270*9880d681SAndroid Build Coastguard Worker 3271*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_add_ss_rn(<4 x float> %a0, <4 x float> %a1) { 3272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_add_ss_rn: 3273*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddss {rn-sae}, %xmm1, %xmm0, %xmm0 3275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3276*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.add.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 0) 3277*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3278*9880d681SAndroid Build Coastguard Worker} 3279*9880d681SAndroid Build Coastguard Worker 3280*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone 3281*9880d681SAndroid Build Coastguard Worker 3282*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rn(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rn: 3284*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {rn-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3290*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 0) 3291*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3292*9880d681SAndroid Build Coastguard Worker} 3293*9880d681SAndroid Build Coastguard Worker 3294*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rd: 3296*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {rd-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3302*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 1) 3303*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3304*9880d681SAndroid Build Coastguard Worker} 3305*9880d681SAndroid Build Coastguard Worker 3306*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_ru(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_ru: 3308*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {ru-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3314*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 2) 3315*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3316*9880d681SAndroid Build Coastguard Worker} 3317*9880d681SAndroid Build Coastguard Worker 3318*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_rz(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3319*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_rz: 3320*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1} 3324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3326*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 3) 3327*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3328*9880d681SAndroid Build Coastguard Worker} 3329*9880d681SAndroid Build Coastguard Worker 3330*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_add_sd_current(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3331*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_sd_current: 3332*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3333*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd %xmm1, %xmm0, %xmm2 {%k1} 3336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3338*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4) 3339*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3340*9880d681SAndroid Build Coastguard Worker} 3341*9880d681SAndroid Build Coastguard Worker 3342*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_add_sd_rn(<2 x double> %a0, <2 x double> %a1, i8 %mask) { 3343*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_add_sd_rn: 3344*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3345*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {rn-sae}, %xmm1, %xmm0, %xmm0 {%k1} {z} 3348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3349*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 0) 3350*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3351*9880d681SAndroid Build Coastguard Worker} 3352*9880d681SAndroid Build Coastguard Worker 3353*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_add_sd_rn(<2 x double> %a0, <2 x double> %a1) { 3354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_add_sd_rn: 3355*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddsd {rn-sae}, %xmm1, %xmm0, %xmm0 3357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3358*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.add.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 0) 3359*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3360*9880d681SAndroid Build Coastguard Worker} 3361*9880d681SAndroid Build Coastguard Worker 3362*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone 3363*9880d681SAndroid Build Coastguard Worker 3364*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_max_ss_sae(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_ss_sae: 3366*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss {sae}, %xmm1, %xmm0, %xmm2 {%k1} 3370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3372*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 8) 3373*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3374*9880d681SAndroid Build Coastguard Worker} 3375*9880d681SAndroid Build Coastguard Worker 3376*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_max_ss_sae(<4 x float> %a0, <4 x float> %a1, i8 %mask) { 3377*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_ss_sae: 3378*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z} 3382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3383*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 8) 3384*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3385*9880d681SAndroid Build Coastguard Worker} 3386*9880d681SAndroid Build Coastguard Worker 3387*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_max_ss_sae(<4 x float> %a0, <4 x float> %a1) { 3388*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_ss_sae: 3389*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss {sae}, %xmm1, %xmm0, %xmm0 3391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3392*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 8) 3393*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3394*9880d681SAndroid Build Coastguard Worker} 3395*9880d681SAndroid Build Coastguard Worker 3396*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_max_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 3397*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_ss: 3398*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss %xmm1, %xmm0, %xmm2 {%k1} 3402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3404*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4) 3405*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3406*9880d681SAndroid Build Coastguard Worker} 3407*9880d681SAndroid Build Coastguard Worker 3408*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_maskz_max_ss(<4 x float> %a0, <4 x float> %a1, i8 %mask) { 3409*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_ss: 3410*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss %xmm1, %xmm0, %xmm0 {%k1} {z} 3414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3415*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 4) 3416*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3417*9880d681SAndroid Build Coastguard Worker} 3418*9880d681SAndroid Build Coastguard Worker 3419*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_max_ss(<4 x float> %a0, <4 x float> %a1) { 3420*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_ss: 3421*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxss %xmm1, %xmm0, %xmm0 3423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3424*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.max.ss.round(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 4) 3425*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3426*9880d681SAndroid Build Coastguard Worker} 3427*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone 3428*9880d681SAndroid Build Coastguard Worker 3429*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_max_sd_sae(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_sd_sae: 3431*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd {sae}, %xmm1, %xmm0, %xmm2 {%k1} 3435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3437*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 8) 3438*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3439*9880d681SAndroid Build Coastguard Worker} 3440*9880d681SAndroid Build Coastguard Worker 3441*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_max_sd_sae(<2 x double> %a0, <2 x double> %a1, i8 %mask) { 3442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_sd_sae: 3443*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z} 3447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3448*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 8) 3449*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3450*9880d681SAndroid Build Coastguard Worker} 3451*9880d681SAndroid Build Coastguard Worker 3452*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_max_sd_sae(<2 x double> %a0, <2 x double> %a1) { 3453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_sd_sae: 3454*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd {sae}, %xmm1, %xmm0, %xmm0 3456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3457*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 8) 3458*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3459*9880d681SAndroid Build Coastguard Worker} 3460*9880d681SAndroid Build Coastguard Worker 3461*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_max_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 3462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_max_sd: 3463*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd %xmm1, %xmm0, %xmm2 {%k1} 3467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 3468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3469*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4) 3470*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3471*9880d681SAndroid Build Coastguard Worker} 3472*9880d681SAndroid Build Coastguard Worker 3473*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_maskz_max_sd(<2 x double> %a0, <2 x double> %a1, i8 %mask) { 3474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_maskz_max_sd: 3475*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 3477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd %xmm1, %xmm0, %xmm0 {%k1} {z} 3479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3480*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 4) 3481*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3482*9880d681SAndroid Build Coastguard Worker} 3483*9880d681SAndroid Build Coastguard Worker 3484*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_max_sd(<2 x double> %a0, <2 x double> %a1) { 3485*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_max_sd: 3486*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmaxsd %xmm1, %xmm0, %xmm0 3488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3489*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.max.sd.round(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 4) 3490*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3491*9880d681SAndroid Build Coastguard Worker} 3492*9880d681SAndroid Build Coastguard Worker 3493*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_cvtsi2sd32(<2 x double> %a, i32 %b) { 3494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2sd32: 3495*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2sdl %edi, {rz-sae}, %xmm0, %xmm0 3497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3498*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.cvtsi2sd32(<2 x double> %a, i32 %b, i32 3) ; <<<2 x double>> [#uses=1] 3499*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3500*9880d681SAndroid Build Coastguard Worker} 3501*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtsi2sd32(<2 x double>, i32, i32) nounwind readnone 3502*9880d681SAndroid Build Coastguard Worker 3503*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_cvtsi2sd64(<2 x double> %a, i64 %b) { 3504*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2sd64: 3505*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2sdq %rdi, {rz-sae}, %xmm0, %xmm0 3507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3508*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.cvtsi2sd64(<2 x double> %a, i64 %b, i32 3) ; <<<2 x double>> [#uses=1] 3509*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3510*9880d681SAndroid Build Coastguard Worker} 3511*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtsi2sd64(<2 x double>, i64, i32) nounwind readnone 3512*9880d681SAndroid Build Coastguard Worker 3513*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512_cvtsi2ss32(<4 x float> %a, i32 %b) { 3514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2ss32: 3515*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2ssl %edi, {rz-sae}, %xmm0, %xmm0 3517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3518*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtsi2ss32(<4 x float> %a, i32 %b, i32 3) ; <<<4 x float>> [#uses=1] 3519*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3520*9880d681SAndroid Build Coastguard Worker} 3521*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtsi2ss32(<4 x float>, i32, i32) nounwind readnone 3522*9880d681SAndroid Build Coastguard Worker 3523*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512_cvtsi2ss64(<4 x float> %a, i64 %b) { 3524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_cvtsi2ss64: 3525*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsi2ssq %rdi, {rz-sae}, %xmm0, %xmm0 3527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3528*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtsi2ss64(<4 x float> %a, i64 %b, i32 3) ; <<<4 x float>> [#uses=1] 3529*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3530*9880d681SAndroid Build Coastguard Worker} 3531*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtsi2ss64(<4 x float>, i64, i32) nounwind readnone 3532*9880d681SAndroid Build Coastguard Worker 3533*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvt_roundu32_ss (<4 x float> %a, i32 %b) 3534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu32_ss: 3535*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssl %edi, {rd-sae}, %xmm0, %xmm0 3537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3538*9880d681SAndroid Build Coastguard Worker{ 3539*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 1) ; <<<4 x float>> [#uses=1] 3540*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3541*9880d681SAndroid Build Coastguard Worker} 3542*9880d681SAndroid Build Coastguard Worker 3543*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvt_roundu32_ss_mem(<4 x float> %a, i32* %ptr) 3544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu32_ss_mem: 3545*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl (%rdi), %eax 3547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssl %eax, {rd-sae}, %xmm0, %xmm0 3548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3549*9880d681SAndroid Build Coastguard Worker{ 3550*9880d681SAndroid Build Coastguard Worker %b = load i32, i32* %ptr 3551*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 1) ; <<<4 x float>> [#uses=1] 3552*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3553*9880d681SAndroid Build Coastguard Worker} 3554*9880d681SAndroid Build Coastguard Worker 3555*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvtu32_ss(<4 x float> %a, i32 %b) 3556*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvtu32_ss: 3557*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssl %edi, %xmm0, %xmm0 3559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3560*9880d681SAndroid Build Coastguard Worker{ 3561*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 4) ; <<<4 x float>> [#uses=1] 3562*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3563*9880d681SAndroid Build Coastguard Worker} 3564*9880d681SAndroid Build Coastguard Worker 3565*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx512__mm_cvtu32_ss_mem(<4 x float> %a, i32* %ptr) 3566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvtu32_ss_mem: 3567*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssl (%rdi), %xmm0, %xmm0 3569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3570*9880d681SAndroid Build Coastguard Worker{ 3571*9880d681SAndroid Build Coastguard Worker %b = load i32, i32* %ptr 3572*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float> %a, i32 %b, i32 4) ; <<<4 x float>> [#uses=1] 3573*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3574*9880d681SAndroid Build Coastguard Worker} 3575*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtusi2ss(<4 x float>, i32, i32) nounwind readnone 3576*9880d681SAndroid Build Coastguard Worker 3577*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @_mm_cvt_roundu64_ss (<4 x float> %a, i64 %b) 3578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _mm_cvt_roundu64_ss: 3579*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssq %rdi, {rd-sae}, %xmm0, %xmm0 3581*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3582*9880d681SAndroid Build Coastguard Worker{ 3583*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float> %a, i64 %b, i32 1) ; <<<4 x float>> [#uses=1] 3584*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3585*9880d681SAndroid Build Coastguard Worker} 3586*9880d681SAndroid Build Coastguard Worker 3587*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @_mm_cvtu64_ss(<4 x float> %a, i64 %b) 3588*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _mm_cvtu64_ss: 3589*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2ssq %rdi, %xmm0, %xmm0 3591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3592*9880d681SAndroid Build Coastguard Worker{ 3593*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float> %a, i64 %b, i32 4) ; <<<4 x float>> [#uses=1] 3594*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3595*9880d681SAndroid Build Coastguard Worker} 3596*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.cvtusi642ss(<4 x float>, i64, i32) nounwind readnone 3597*9880d681SAndroid Build Coastguard Worker 3598*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_mm_cvtu32_sd(<2 x double> %a, i32 %b) 3599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mm_cvtu32_sd: 3600*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2sdl %edi, %xmm0, %xmm0 3602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3603*9880d681SAndroid Build Coastguard Worker{ 3604*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.cvtusi2sd(<2 x double> %a, i32 %b) ; <<<2 x double>> [#uses=1] 3605*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3606*9880d681SAndroid Build Coastguard Worker} 3607*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtusi2sd(<2 x double>, i32) nounwind readnone 3608*9880d681SAndroid Build Coastguard Worker 3609*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512_mm_cvtu64_sd(<2 x double> %a, i64 %b) 3610*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_mm_cvtu64_sd: 3611*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2sdq %rdi, {rd-sae}, %xmm0, %xmm0 3613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3614*9880d681SAndroid Build Coastguard Worker{ 3615*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double> %a, i64 %b, i32 1) ; <<<2 x double>> [#uses=1] 3616*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3617*9880d681SAndroid Build Coastguard Worker} 3618*9880d681SAndroid Build Coastguard Worker 3619*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx512__mm_cvt_roundu64_sd(<2 x double> %a, i64 %b) 3620*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512__mm_cvt_roundu64_sd: 3621*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtusi2sdq %rdi, %xmm0, %xmm0 3623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3624*9880d681SAndroid Build Coastguard Worker{ 3625*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double> %a, i64 %b, i32 4) ; <<<2 x double>> [#uses=1] 3626*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3627*9880d681SAndroid Build Coastguard Worker} 3628*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.cvtusi642sd(<2 x double>, i64, i32) nounwind readnone 3629*9880d681SAndroid Build Coastguard Worker 3630*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_vpmaxq(<8 x i64> %a0, <8 x i64> %a1) { 3631*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpmaxq: 3632*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsq %zmm1, %zmm0, %zmm0 3634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3635*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %a0, <8 x i64> %a1, 3636*9880d681SAndroid Build Coastguard Worker <8 x i64>zeroinitializer, i8 -1) 3637*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 3638*9880d681SAndroid Build Coastguard Worker} 3639*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3640*9880d681SAndroid Build Coastguard Worker 3641*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_vpminud(<16 x i32> %a0, <16 x i32> %a1) { 3642*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpminud: 3643*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminud %zmm1, %zmm0, %zmm0 3645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3646*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %a0, <16 x i32> %a1, 3647*9880d681SAndroid Build Coastguard Worker <16 x i32>zeroinitializer, i16 -1) 3648*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 3649*9880d681SAndroid Build Coastguard Worker} 3650*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3651*9880d681SAndroid Build Coastguard Worker 3652*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test_vpmaxsd(<16 x i32> %a0, <16 x i32> %a1) { 3653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vpmaxsd: 3654*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsd %zmm1, %zmm0, %zmm0 3656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3657*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %a0, <16 x i32> %a1, 3658*9880d681SAndroid Build Coastguard Worker <16 x i32>zeroinitializer, i16 -1) 3659*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 3660*9880d681SAndroid Build Coastguard Worker} 3661*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3662*9880d681SAndroid Build Coastguard Worker 3663*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaxs_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 3664*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_d_512: 3665*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsd %zmm1, %zmm0, %zmm2 {%k1} 3668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsd %zmm1, %zmm0, %zmm0 3669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 3670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3671*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3672*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 3673*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3674*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3675*9880d681SAndroid Build Coastguard Worker} 3676*9880d681SAndroid Build Coastguard Worker 3677*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmaxs_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_q_512: 3679*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsq %zmm1, %zmm0, %zmm2 {%k1} 3682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxsq %zmm1, %zmm0, %zmm0 3683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 3684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3685*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3686*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3687*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3688*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3689*9880d681SAndroid Build Coastguard Worker} 3690*9880d681SAndroid Build Coastguard Worker 3691*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3692*9880d681SAndroid Build Coastguard Worker 3693*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaxu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 3694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_d_512: 3695*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxud %zmm1, %zmm0, %zmm2 {%k1} 3698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxud %zmm1, %zmm0, %zmm0 3699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 3700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3701*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3702*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 3703*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3704*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3705*9880d681SAndroid Build Coastguard Worker} 3706*9880d681SAndroid Build Coastguard Worker 3707*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3708*9880d681SAndroid Build Coastguard Worker 3709*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmaxu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_q_512: 3711*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxuq %zmm1, %zmm0, %zmm2 {%k1} 3714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmaxuq %zmm1, %zmm0, %zmm0 3715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 3716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3717*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3718*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3719*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3720*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3721*9880d681SAndroid Build Coastguard Worker} 3722*9880d681SAndroid Build Coastguard Worker 3723*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3724*9880d681SAndroid Build Coastguard Worker 3725*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmins_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 3726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_d_512: 3727*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminsd %zmm1, %zmm0, %zmm2 {%k1} 3730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminsd %zmm1, %zmm0, %zmm0 3731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 3732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3733*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3734*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 3735*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3736*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3737*9880d681SAndroid Build Coastguard Worker} 3738*9880d681SAndroid Build Coastguard Worker 3739*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3740*9880d681SAndroid Build Coastguard Worker 3741*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmins_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_q_512: 3743*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminsq %zmm1, %zmm0, %zmm2 {%k1} 3746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminsq %zmm1, %zmm0, %zmm0 3747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 3748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3749*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3750*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3751*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3752*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3753*9880d681SAndroid Build Coastguard Worker} 3754*9880d681SAndroid Build Coastguard Worker 3755*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pminu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 3756*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_d_512: 3757*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminud %zmm1, %zmm0, %zmm2 {%k1} 3760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminud %zmm1, %zmm0, %zmm0 3761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 3762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3763*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3764*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 3765*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3766*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3767*9880d681SAndroid Build Coastguard Worker} 3768*9880d681SAndroid Build Coastguard Worker 3769*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3770*9880d681SAndroid Build Coastguard Worker 3771*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pminu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_q_512: 3773*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminuq %zmm1, %zmm0, %zmm2 {%k1} 3776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpminuq %zmm1, %zmm0, %zmm0 3777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 3778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3779*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3780*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3781*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3782*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3783*9880d681SAndroid Build Coastguard Worker} 3784*9880d681SAndroid Build Coastguard Worker 3785*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3786*9880d681SAndroid Build Coastguard Worker 3787*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_vpermi2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32>* %x2p, <16 x i32> %x4, i16 %x3) { 3788*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_d_512: 3789*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 3791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2d (%rdi), %zmm0, %zmm3 {%k1} 3793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2d %zmm2, %zmm0, %zmm1 3794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm3, %zmm0 3795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3796*9880d681SAndroid Build Coastguard Worker %x2 = load <16 x i32>, <16 x i32>* %x2p 3797*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3798*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.vpermi2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x4, i16 -1) 3799*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3800*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3801*9880d681SAndroid Build Coastguard Worker} 3802*9880d681SAndroid Build Coastguard Worker 3803*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double>, <8 x i64>, <8 x double>, i8) 3804*9880d681SAndroid Build Coastguard Worker 3805*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vpermi2var_pd_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) { 3806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_pd_512: 3807*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2pd %zmm2, %zmm0, %zmm3 {%k1} 3811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2pd %zmm2, %zmm0, %zmm1 3812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm1, %zmm3, %zmm0 3813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3814*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) 3815*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.vpermi2var.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1) 3816*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 3817*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 3818*9880d681SAndroid Build Coastguard Worker} 3819*9880d681SAndroid Build Coastguard Worker 3820*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float>, <16 x i32>, <16 x float>, i16) 3821*9880d681SAndroid Build Coastguard Worker 3822*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vpermi2var_ps_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) { 3823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_ps_512: 3824*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2ps %zmm2, %zmm0, %zmm3 {%k1} 3828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2ps %zmm2, %zmm0, %zmm1 3829*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm3, %zmm0 3830*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3831*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) 3832*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.vpermi2var.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1) 3833*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 3834*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 3835*9880d681SAndroid Build Coastguard Worker} 3836*9880d681SAndroid Build Coastguard Worker 3837*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3838*9880d681SAndroid Build Coastguard Worker 3839*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_vpermi2var_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3840*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_q_512: 3841*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3843*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2q %zmm2, %zmm0, %zmm3 {%k1} 3845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermi2q %zmm2, %zmm0, %zmm1 3846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm3, %zmm0 3847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3848*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3849*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.vpermi2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3850*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3851*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3852*9880d681SAndroid Build Coastguard Worker} 3853*9880d681SAndroid Build Coastguard Worker 3854*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3855*9880d681SAndroid Build Coastguard Worker 3856*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_maskz_vpermt2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32>* %x2p, i16 %x3) { 3857*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_d_512: 3858*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 3860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm2 3861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2d (%rdi), %zmm0, %zmm2 {%k1} {z} 3862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2d %zmm1, %zmm0, %zmm1 3863*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm2, %zmm0 3864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3865*9880d681SAndroid Build Coastguard Worker %x2 = load <16 x i32>, <16 x i32>* %x2p 3866*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3867*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.maskz.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x1, i16 -1) 3868*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3869*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3870*9880d681SAndroid Build Coastguard Worker} 3871*9880d681SAndroid Build Coastguard Worker 3872*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64>, <8 x double>, <8 x double>, i8) 3873*9880d681SAndroid Build Coastguard Worker 3874*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_vpermt2var_pd_512(<8 x i64> %x0, <8 x double> %x1, double* %x2ptr, i8 %x3) { 3875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_pd_512: 3876*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 3878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm2 3879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2pd (%rdi){1to8}, %zmm0, %zmm2 {%k1} {z} 3880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2pd %zmm1, %zmm0, %zmm1 3881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm1, %zmm2, %zmm0 3882*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3883*9880d681SAndroid Build Coastguard Worker %x2s = load double, double* %x2ptr 3884*9880d681SAndroid Build Coastguard Worker %x2ins = insertelement <8 x double> undef, double %x2s, i32 0 3885*9880d681SAndroid Build Coastguard Worker %x2 = shufflevector <8 x double> %x2ins, <8 x double> undef, <8 x i32> zeroinitializer 3886*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3) 3887*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.maskz.vpermt2var.pd.512(<8 x i64> %x0, <8 x double> %x1, <8 x double> %x1, i8 -1) 3888*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 3889*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 3890*9880d681SAndroid Build Coastguard Worker} 3891*9880d681SAndroid Build Coastguard Worker 3892*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32>, <16 x float>, <16 x float>, i16) 3893*9880d681SAndroid Build Coastguard Worker 3894*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_vpermt2var_ps_512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3) { 3895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_ps_512: 3896*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2ps %zmm2, %zmm0, %zmm3 {%k1} {z} 3900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2ps %zmm2, %zmm0, %zmm1 3901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm3, %zmm0 3902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3903*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3) 3904*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.maskz.vpermt2var.ps.512(<16 x i32> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1) 3905*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 3906*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 3907*9880d681SAndroid Build Coastguard Worker} 3908*9880d681SAndroid Build Coastguard Worker 3909*9880d681SAndroid Build Coastguard Worker 3910*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 3911*9880d681SAndroid Build Coastguard Worker 3912*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_maskz_vpermt2var_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 3913*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_q_512: 3914*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2q %zmm2, %zmm0, %zmm3 {%k1} {z} 3918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2q %zmm2, %zmm0, %zmm1 3919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm3, %zmm0 3920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3921*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 3922*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.maskz.vpermt2var.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 3923*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 3924*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 3925*9880d681SAndroid Build Coastguard Worker} 3926*9880d681SAndroid Build Coastguard Worker 3927*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 3928*9880d681SAndroid Build Coastguard Worker 3929*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_vpermt2var_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 3930*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_d_512: 3931*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 3934*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2d %zmm2, %zmm0, %zmm3 {%k1} 3935*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2d %zmm2, %zmm0, %zmm1 3936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm3, %zmm0 3937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3938*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 3939*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.vpermt2var.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 3940*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 3941*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 3942*9880d681SAndroid Build Coastguard Worker} 3943*9880d681SAndroid Build Coastguard Worker 3944*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32) 3945*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_scalef_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3) { 3946*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_scalef_pd_512: 3947*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vscalefpd {rz-sae}, %zmm1, %zmm0, %zmm2 {%k1} 3950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vscalefpd {rn-sae}, %zmm1, %zmm0, %zmm0 3951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 3952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3953*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 %x3, i32 3) 3954*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.scalef.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x2, i8 -1, i32 0) 3955*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 3956*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 3957*9880d681SAndroid Build Coastguard Worker} 3958*9880d681SAndroid Build Coastguard Worker 3959*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) 3960*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_scalef_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3) { 3961*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_scalef_ps_512: 3962*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vscalefps {ru-sae}, %zmm1, %zmm0, %zmm2 {%k1} 3965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vscalefps {rn-sae}, %zmm1, %zmm0, %zmm0 3966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 3967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3968*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 %x3, i32 2) 3969*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.scalef.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x2, i16 -1, i32 0) 3970*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 3971*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 3972*9880d681SAndroid Build Coastguard Worker} 3973*9880d681SAndroid Build Coastguard Worker 3974*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64>, <16 x i8>, i8) 3975*9880d681SAndroid Build Coastguard Worker 3976*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) { 3977*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qb_512: 3978*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 3980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqb %zmm0, %xmm1 {%k1} 3981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqb %zmm0, %xmm2 {%k1} {z} 3982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqb %zmm0, %xmm0 3983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 3984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 3985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 3986*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1) 3987*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) 3988*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2) 3989*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 3990*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 3991*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 3992*9880d681SAndroid Build Coastguard Worker} 3993*9880d681SAndroid Build Coastguard Worker 3994*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64>, i8) 3995*9880d681SAndroid Build Coastguard Worker 3996*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 3997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qb_mem_512: 3998*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 3999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqb %zmm0, (%rdi) 4001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqb %zmm0, (%rdi) {%k1} 4002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4003*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4004*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4005*9880d681SAndroid Build Coastguard Worker ret void 4006*9880d681SAndroid Build Coastguard Worker} 4007*9880d681SAndroid Build Coastguard Worker 4008*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64>, <16 x i8>, i8) 4009*9880d681SAndroid Build Coastguard Worker 4010*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) { 4011*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qb_512: 4012*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqb %zmm0, %xmm1 {%k1} 4015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqb %zmm0, %xmm2 {%k1} {z} 4016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqb %zmm0, %xmm0 4017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 4018*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 4019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4020*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1) 4021*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) 4022*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2) 4023*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 4024*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 4025*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 4026*9880d681SAndroid Build Coastguard Worker} 4027*9880d681SAndroid Build Coastguard Worker 4028*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64>, i8) 4029*9880d681SAndroid Build Coastguard Worker 4030*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qb_mem_512: 4032*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqb %zmm0, (%rdi) 4034*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4035*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqb %zmm0, (%rdi) {%k1} 4036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4037*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4038*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4039*9880d681SAndroid Build Coastguard Worker ret void 4040*9880d681SAndroid Build Coastguard Worker} 4041*9880d681SAndroid Build Coastguard Worker 4042*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64>, <16 x i8>, i8) 4043*9880d681SAndroid Build Coastguard Worker 4044*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_qb_512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) { 4045*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qb_512: 4046*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqb %zmm0, %xmm1 {%k1} 4049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqb %zmm0, %xmm2 {%k1} {z} 4050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqb %zmm0, %xmm0 4051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 4052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 4053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4054*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 -1) 4055*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> %x1, i8 %x2) 4056*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.qb.512(<8 x i64> %x0, <16 x i8> zeroinitializer, i8 %x2) 4057*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 4058*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 4059*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 4060*9880d681SAndroid Build Coastguard Worker} 4061*9880d681SAndroid Build Coastguard Worker 4062*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64>, i8) 4063*9880d681SAndroid Build Coastguard Worker 4064*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qb_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4065*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qb_mem_512: 4066*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqb %zmm0, (%rdi) 4068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqb %zmm0, (%rdi) {%k1} 4070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4071*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4072*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qb.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4073*9880d681SAndroid Build Coastguard Worker ret void 4074*9880d681SAndroid Build Coastguard Worker} 4075*9880d681SAndroid Build Coastguard Worker 4076*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64>, <8 x i16>, i8) 4077*9880d681SAndroid Build Coastguard Worker 4078*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmov_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) { 4079*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qw_512: 4080*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4081*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4082*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqw %zmm0, %xmm1 {%k1} 4083*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqw %zmm0, %xmm2 {%k1} {z} 4084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqw %zmm0, %xmm0 4085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm1, %xmm0, %xmm0 4086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm2, %xmm0, %xmm0 4087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4088*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1) 4089*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) 4090*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmov.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2) 4091*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i16> %res0, %res1 4092*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i16> %res3, %res2 4093*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res4 4094*9880d681SAndroid Build Coastguard Worker} 4095*9880d681SAndroid Build Coastguard Worker 4096*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64>, i8) 4097*9880d681SAndroid Build Coastguard Worker 4098*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4099*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qw_mem_512: 4100*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqw %zmm0, (%rdi) 4103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqw %zmm0, (%rdi) {%k1} 4104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4105*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4106*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4107*9880d681SAndroid Build Coastguard Worker ret void 4108*9880d681SAndroid Build Coastguard Worker} 4109*9880d681SAndroid Build Coastguard Worker 4110*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64>, <8 x i16>, i8) 4111*9880d681SAndroid Build Coastguard Worker 4112*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovs_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) { 4113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qw_512: 4114*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqw %zmm0, %xmm1 {%k1} 4117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqw %zmm0, %xmm2 {%k1} {z} 4118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqw %zmm0, %xmm0 4119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm1, %xmm0, %xmm0 4120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm2, %xmm0, %xmm0 4121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4122*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1) 4123*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) 4124*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovs.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2) 4125*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i16> %res0, %res1 4126*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i16> %res3, %res2 4127*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res4 4128*9880d681SAndroid Build Coastguard Worker} 4129*9880d681SAndroid Build Coastguard Worker 4130*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64>, i8) 4131*9880d681SAndroid Build Coastguard Worker 4132*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qw_mem_512: 4134*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqw %zmm0, (%rdi) 4136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqw %zmm0, (%rdi) {%k1} 4138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4139*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4140*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4141*9880d681SAndroid Build Coastguard Worker ret void 4142*9880d681SAndroid Build Coastguard Worker} 4143*9880d681SAndroid Build Coastguard Worker 4144*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64>, <8 x i16>, i8) 4145*9880d681SAndroid Build Coastguard Worker 4146*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovus_qw_512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) { 4147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qw_512: 4148*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqw %zmm0, %xmm1 {%k1} 4151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqw %zmm0, %xmm2 {%k1} {z} 4152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqw %zmm0, %xmm0 4153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm1, %xmm0, %xmm0 4154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %xmm2, %xmm0, %xmm0 4155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4156*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 -1) 4157*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> %x1, i8 %x2) 4158*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovus.qw.512(<8 x i64> %x0, <8 x i16> zeroinitializer, i8 %x2) 4159*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i16> %res0, %res1 4160*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i16> %res3, %res2 4161*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res4 4162*9880d681SAndroid Build Coastguard Worker} 4163*9880d681SAndroid Build Coastguard Worker 4164*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64>, i8) 4165*9880d681SAndroid Build Coastguard Worker 4166*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qw_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qw_mem_512: 4168*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqw %zmm0, (%rdi) 4170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqw %zmm0, (%rdi) {%k1} 4172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4173*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4174*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qw.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4175*9880d681SAndroid Build Coastguard Worker ret void 4176*9880d681SAndroid Build Coastguard Worker} 4177*9880d681SAndroid Build Coastguard Worker 4178*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64>, <8 x i32>, i8) 4179*9880d681SAndroid Build Coastguard Worker 4180*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmov_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) { 4181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qd_512: 4182*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqd %zmm0, %ymm1 {%k1} 4185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqd %zmm0, %ymm2 {%k1} {z} 4186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqd %zmm0, %ymm0 4187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm1, %ymm0, %ymm0 4188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm2, %ymm0, %ymm0 4189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4190*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1) 4191*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) 4192*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmov.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2) 4193*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i32> %res0, %res1 4194*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i32> %res3, %res2 4195*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res4 4196*9880d681SAndroid Build Coastguard Worker} 4197*9880d681SAndroid Build Coastguard Worker 4198*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64>, i8) 4199*9880d681SAndroid Build Coastguard Worker 4200*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_qd_mem_512: 4202*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqd %zmm0, (%rdi) 4205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovqd %zmm0, (%rdi) {%k1} 4206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4207*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4208*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4209*9880d681SAndroid Build Coastguard Worker ret void 4210*9880d681SAndroid Build Coastguard Worker} 4211*9880d681SAndroid Build Coastguard Worker 4212*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64>, <8 x i32>, i8) 4213*9880d681SAndroid Build Coastguard Worker 4214*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmovs_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) { 4215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qd_512: 4216*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqd %zmm0, %ymm1 {%k1} 4219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqd %zmm0, %ymm2 {%k1} {z} 4220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqd %zmm0, %ymm0 4221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm1, %ymm0, %ymm0 4222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm2, %ymm0, %ymm0 4223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4224*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1) 4225*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) 4226*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmovs.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2) 4227*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i32> %res0, %res1 4228*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i32> %res3, %res2 4229*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res4 4230*9880d681SAndroid Build Coastguard Worker} 4231*9880d681SAndroid Build Coastguard Worker 4232*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64>, i8) 4233*9880d681SAndroid Build Coastguard Worker 4234*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_qd_mem_512: 4236*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqd %zmm0, (%rdi) 4238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsqd %zmm0, (%rdi) {%k1} 4240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4241*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4242*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4243*9880d681SAndroid Build Coastguard Worker ret void 4244*9880d681SAndroid Build Coastguard Worker} 4245*9880d681SAndroid Build Coastguard Worker 4246*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64>, <8 x i32>, i8) 4247*9880d681SAndroid Build Coastguard Worker 4248*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmovus_qd_512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) { 4249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qd_512: 4250*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqd %zmm0, %ymm1 {%k1} 4253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqd %zmm0, %ymm2 {%k1} {z} 4254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqd %zmm0, %ymm0 4255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm1, %ymm0, %ymm0 4256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm2, %ymm0, %ymm0 4257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4258*9880d681SAndroid Build Coastguard Worker %res0 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 -1) 4259*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> %x1, i8 %x2) 4260*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i32> @llvm.x86.avx512.mask.pmovus.qd.512(<8 x i64> %x0, <8 x i32> zeroinitializer, i8 %x2) 4261*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i32> %res0, %res1 4262*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i32> %res3, %res2 4263*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res4 4264*9880d681SAndroid Build Coastguard Worker} 4265*9880d681SAndroid Build Coastguard Worker 4266*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64>, i8) 4267*9880d681SAndroid Build Coastguard Worker 4268*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_qd_mem_512(i8* %ptr, <8 x i64> %x1, i8 %x2) { 4269*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_qd_mem_512: 4270*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqd %zmm0, (%rdi) 4272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusqd %zmm0, (%rdi) {%k1} 4274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4275*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 -1) 4276*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.qd.mem.512(i8* %ptr, <8 x i64> %x1, i8 %x2) 4277*9880d681SAndroid Build Coastguard Worker ret void 4278*9880d681SAndroid Build Coastguard Worker} 4279*9880d681SAndroid Build Coastguard Worker 4280*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32>, <16 x i8>, i16) 4281*9880d681SAndroid Build Coastguard Worker 4282*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) { 4283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_db_512: 4284*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdb %zmm0, %xmm1 {%k1} 4287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdb %zmm0, %xmm2 {%k1} {z} 4288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdb %zmm0, %xmm0 4289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 4290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 4291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4292*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1) 4293*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) 4294*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2) 4295*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 4296*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 4297*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 4298*9880d681SAndroid Build Coastguard Worker} 4299*9880d681SAndroid Build Coastguard Worker 4300*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32>, i16) 4301*9880d681SAndroid Build Coastguard Worker 4302*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_db_mem_512: 4304*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdb %zmm0, (%rdi) 4307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdb %zmm0, (%rdi) {%k1} 4308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4309*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4310*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4311*9880d681SAndroid Build Coastguard Worker ret void 4312*9880d681SAndroid Build Coastguard Worker} 4313*9880d681SAndroid Build Coastguard Worker 4314*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32>, <16 x i8>, i16) 4315*9880d681SAndroid Build Coastguard Worker 4316*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) { 4317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_db_512: 4318*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdb %zmm0, %xmm1 {%k1} 4321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdb %zmm0, %xmm2 {%k1} {z} 4322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdb %zmm0, %xmm0 4323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 4324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 4325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4326*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1) 4327*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) 4328*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2) 4329*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 4330*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 4331*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 4332*9880d681SAndroid Build Coastguard Worker} 4333*9880d681SAndroid Build Coastguard Worker 4334*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32>, i16) 4335*9880d681SAndroid Build Coastguard Worker 4336*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_db_mem_512: 4338*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdb %zmm0, (%rdi) 4340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdb %zmm0, (%rdi) {%k1} 4342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4343*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4344*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4345*9880d681SAndroid Build Coastguard Worker ret void 4346*9880d681SAndroid Build Coastguard Worker} 4347*9880d681SAndroid Build Coastguard Worker 4348*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32>, <16 x i8>, i16) 4349*9880d681SAndroid Build Coastguard Worker 4350*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_db_512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) { 4351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_db_512: 4352*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdb %zmm0, %xmm1 {%k1} 4355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdb %zmm0, %xmm2 {%k1} {z} 4356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdb %zmm0, %xmm0 4357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 4358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 4359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4360*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 -1) 4361*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> %x1, i16 %x2) 4362*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.db.512(<16 x i32> %x0, <16 x i8> zeroinitializer, i16 %x2) 4363*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res0, %res1 4364*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 4365*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 4366*9880d681SAndroid Build Coastguard Worker} 4367*9880d681SAndroid Build Coastguard Worker 4368*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32>, i16) 4369*9880d681SAndroid Build Coastguard Worker 4370*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_db_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4371*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_db_mem_512: 4372*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdb %zmm0, (%rdi) 4374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdb %zmm0, (%rdi) {%k1} 4376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4377*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4378*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.db.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4379*9880d681SAndroid Build Coastguard Worker ret void 4380*9880d681SAndroid Build Coastguard Worker} 4381*9880d681SAndroid Build Coastguard Worker 4382*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32>, <16 x i16>, i16) 4383*9880d681SAndroid Build Coastguard Worker 4384*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmov_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) { 4385*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_dw_512: 4386*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdw %zmm0, %ymm1 {%k1} 4389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdw %zmm0, %ymm2 {%k1} {z} 4390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdw %zmm0, %ymm0 4391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm1, %ymm0, %ymm0 4392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm2, %ymm0, %ymm0 4393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4394*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1) 4395*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) 4396*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmov.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2) 4397*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i16> %res0, %res1 4398*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i16> %res3, %res2 4399*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res4 4400*9880d681SAndroid Build Coastguard Worker} 4401*9880d681SAndroid Build Coastguard Worker 4402*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32>, i16) 4403*9880d681SAndroid Build Coastguard Worker 4404*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_dw_mem_512: 4406*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdw %zmm0, (%rdi) 4409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovdw %zmm0, (%rdi) {%k1} 4410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4411*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4412*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4413*9880d681SAndroid Build Coastguard Worker ret void 4414*9880d681SAndroid Build Coastguard Worker} 4415*9880d681SAndroid Build Coastguard Worker 4416*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32>, <16 x i16>, i16) 4417*9880d681SAndroid Build Coastguard Worker 4418*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovs_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) { 4419*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_dw_512: 4420*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdw %zmm0, %ymm1 {%k1} 4423*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdw %zmm0, %ymm2 {%k1} {z} 4424*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdw %zmm0, %ymm0 4425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm1, %ymm0, %ymm0 4426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm2, %ymm0, %ymm0 4427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4428*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1) 4429*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) 4430*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovs.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2) 4431*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i16> %res0, %res1 4432*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i16> %res3, %res2 4433*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res4 4434*9880d681SAndroid Build Coastguard Worker} 4435*9880d681SAndroid Build Coastguard Worker 4436*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32>, i16) 4437*9880d681SAndroid Build Coastguard Worker 4438*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4439*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_dw_mem_512: 4440*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdw %zmm0, (%rdi) 4442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsdw %zmm0, (%rdi) {%k1} 4444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4445*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4446*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4447*9880d681SAndroid Build Coastguard Worker ret void 4448*9880d681SAndroid Build Coastguard Worker} 4449*9880d681SAndroid Build Coastguard Worker 4450*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32>, <16 x i16>, i16) 4451*9880d681SAndroid Build Coastguard Worker 4452*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovus_dw_512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) { 4453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_dw_512: 4454*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdw %zmm0, %ymm1 {%k1} 4457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdw %zmm0, %ymm2 {%k1} {z} 4458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdw %zmm0, %ymm0 4459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm1, %ymm0, %ymm0 4460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddw %ymm2, %ymm0, %ymm0 4461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4462*9880d681SAndroid Build Coastguard Worker %res0 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 -1) 4463*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> %x1, i16 %x2) 4464*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovus.dw.512(<16 x i32> %x0, <16 x i16> zeroinitializer, i16 %x2) 4465*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i16> %res0, %res1 4466*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i16> %res3, %res2 4467*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res4 4468*9880d681SAndroid Build Coastguard Worker} 4469*9880d681SAndroid Build Coastguard Worker 4470*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32>, i16) 4471*9880d681SAndroid Build Coastguard Worker 4472*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_dw_mem_512(i8* %ptr, <16 x i32> %x1, i16 %x2) { 4473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_dw_mem_512: 4474*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdw %zmm0, (%rdi) 4476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 4477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovusdw %zmm0, (%rdi) {%k1} 4478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4479*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 -1) 4480*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.dw.mem.512(i8* %ptr, <16 x i32> %x1, i16 %x2) 4481*9880d681SAndroid Build Coastguard Worker ret void 4482*9880d681SAndroid Build Coastguard Worker} 4483*9880d681SAndroid Build Coastguard Worker 4484*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32>, <8 x double>, i8) 4485*9880d681SAndroid Build Coastguard Worker 4486*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_dq2pd_512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) { 4487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_dq2pd_512: 4488*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtdq2pd %ymm0, %zmm1 {%k1} 4491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtdq2pd %ymm0, %zmm0 4492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 4493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4494*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) 4495*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtdq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 -1) 4496*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 4497*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 4498*9880d681SAndroid Build Coastguard Worker} 4499*9880d681SAndroid Build Coastguard Worker 4500*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32>, <16 x float>, i16, i32) 4501*9880d681SAndroid Build Coastguard Worker 4502*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_cvt_dq2ps_512(<16 x i32> %x0, <16 x float> %x1, i16 %x2) { 4503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_dq2ps_512: 4504*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtdq2ps %zmm0, %zmm1 {%k1} 4507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtdq2ps {rn-sae}, %zmm0, %zmm0 4508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 4509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4510*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 %x2, i32 4) 4511*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.cvtdq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 -1, i32 0) 4512*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 4513*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 4514*9880d681SAndroid Build Coastguard Worker} 4515*9880d681SAndroid Build Coastguard Worker 4516*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double>, <8 x i32>, i8, i32) 4517*9880d681SAndroid Build Coastguard Worker 4518*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvt_pd2dq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) { 4519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2dq_512: 4520*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2dq %zmm0, %ymm1 {%k1} 4523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2dq {rn-sae}, %zmm0, %ymm0 4524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm0, %ymm1, %ymm0 4525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4526*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4) 4527*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 0) 4528*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i32> %res, %res1 4529*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res2 4530*9880d681SAndroid Build Coastguard Worker} 4531*9880d681SAndroid Build Coastguard Worker 4532*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double>, <8 x float>, i8, i32) 4533*9880d681SAndroid Build Coastguard Worker 4534*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_pd2ps_512(<8 x double> %x0, <8 x float> %x1, i8 %x2) { 4535*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2ps_512: 4536*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2ps %zmm0, %ymm1 {%k1} 4539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2ps {ru-sae}, %zmm0, %ymm0 4540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %ymm0, %ymm1, %ymm0 4541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4542*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double> %x0, <8 x float> %x1, i8 %x2, i32 4) 4543*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtpd2ps.512(<8 x double> %x0, <8 x float> %x1, i8 -1, i32 2) 4544*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x float> %res, %res1 4545*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res2 4546*9880d681SAndroid Build Coastguard Worker} 4547*9880d681SAndroid Build Coastguard Worker 4548*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double>, <8 x i32>, i8, i32) 4549*9880d681SAndroid Build Coastguard Worker 4550*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvt_pd2udq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) { 4551*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2udq_512: 4552*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2udq {ru-sae}, %zmm0, %ymm1 {%k1} 4555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2udq {rn-sae}, %zmm0, %ymm0 4556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm0, %ymm1, %ymm0 4557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4558*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 2) 4559*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvtpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 0) 4560*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i32> %res, %res1 4561*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res2 4562*9880d681SAndroid Build Coastguard Worker} 4563*9880d681SAndroid Build Coastguard Worker 4564*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float>, <16 x i32>, i16, i32) 4565*9880d681SAndroid Build Coastguard Worker 4566*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvt_ps2dq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) { 4567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2dq_512: 4568*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2dq {ru-sae}, %zmm0, %zmm1 {%k1} 4571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2dq {rn-sae}, %zmm0, %zmm0 4572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 4573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4574*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 2) 4575*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvtps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 0) 4576*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 4577*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 4578*9880d681SAndroid Build Coastguard Worker} 4579*9880d681SAndroid Build Coastguard Worker 4580*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float>, <8 x double>, i8, i32) 4581*9880d681SAndroid Build Coastguard Worker 4582*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_ps2pd_512(<8 x float> %x0, <8 x double> %x1, i8 %x2) { 4583*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2pd_512: 4584*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4585*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2pd %ymm0, %zmm1 {%k1} 4587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2pd {sae}, %ymm0, %zmm0 4588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 4589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4590*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float> %x0, <8 x double> %x1, i8 %x2, i32 4) 4591*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtps2pd.512(<8 x float> %x0, <8 x double> %x1, i8 -1, i32 8) 4592*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 4593*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 4594*9880d681SAndroid Build Coastguard Worker} 4595*9880d681SAndroid Build Coastguard Worker 4596*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float>, <16 x i32>, i16, i32) 4597*9880d681SAndroid Build Coastguard Worker 4598*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvt_ps2udq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) { 4599*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2udq_512: 4600*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2udq {ru-sae}, %zmm0, %zmm1 {%k1} 4603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2udq {rn-sae}, %zmm0, %zmm0 4604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 4605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4606*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 2) 4607*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvtps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 0) 4608*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 4609*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 4610*9880d681SAndroid Build Coastguard Worker} 4611*9880d681SAndroid Build Coastguard Worker 4612*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double>, <8 x i32>, i8, i32) 4613*9880d681SAndroid Build Coastguard Worker 4614*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvtt_pd2dq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) { 4615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2dq_512: 4616*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2dq %zmm0, %ymm1 {%k1} 4619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2dq {sae}, %zmm0, %ymm0 4620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm0, %ymm1, %ymm0 4621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4622*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4) 4623*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2dq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 8) 4624*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i32> %res, %res1 4625*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res2 4626*9880d681SAndroid Build Coastguard Worker} 4627*9880d681SAndroid Build Coastguard Worker 4628*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32>, <8 x double>, i8) 4629*9880d681SAndroid Build Coastguard Worker 4630*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_udq2pd_512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) { 4631*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_udq2pd_512: 4632*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtudq2pd %ymm0, %zmm1 {%k1} 4635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtudq2pd %ymm0, %zmm0 4636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 4637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4638*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 %x2) 4639*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtudq2pd.512(<8 x i32> %x0, <8 x double> %x1, i8 -1) 4640*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 4641*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 4642*9880d681SAndroid Build Coastguard Worker} 4643*9880d681SAndroid Build Coastguard Worker 4644*9880d681SAndroid Build Coastguard Worker 4645*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32>, <16 x float>, i16, i32) 4646*9880d681SAndroid Build Coastguard Worker 4647*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_cvt_udq2ps_512(<16 x i32> %x0, <16 x float> %x1, i16 %x2) { 4648*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_udq2ps_512: 4649*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtudq2ps %zmm0, %zmm1 {%k1} 4652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtudq2ps {rn-sae}, %zmm0, %zmm0 4653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 4654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4655*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 %x2, i32 4) 4656*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.cvtudq2ps.512(<16 x i32> %x0, <16 x float> %x1, i16 -1, i32 0) 4657*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 4658*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 4659*9880d681SAndroid Build Coastguard Worker} 4660*9880d681SAndroid Build Coastguard Worker 4661*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double>, <8 x i32>, i8, i32) 4662*9880d681SAndroid Build Coastguard Worker 4663*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_cvtt_pd2udq_512(<8 x double> %x0, <8 x i32> %x1, i8 %x2) { 4664*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2udq_512: 4665*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2udq %zmm0, %ymm1 {%k1} 4668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2udq {sae}, %zmm0, %ymm0 4669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %ymm0, %ymm1, %ymm0 4670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4671*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 %x2, i32 4) 4672*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i32> @llvm.x86.avx512.mask.cvttpd2udq.512(<8 x double> %x0, <8 x i32> %x1, i8 -1, i32 8) 4673*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i32> %res, %res1 4674*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res2 4675*9880d681SAndroid Build Coastguard Worker} 4676*9880d681SAndroid Build Coastguard Worker 4677*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float>, <16 x i32>, i16, i32) 4678*9880d681SAndroid Build Coastguard Worker 4679*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvtt_ps2dq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) { 4680*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2dq_512: 4681*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2dq %zmm0, %zmm1 {%k1} 4684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2dq {sae}, %zmm0, %zmm0 4685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 4686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4687*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 4) 4688*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvttps2dq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 8) 4689*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 4690*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 4691*9880d681SAndroid Build Coastguard Worker} 4692*9880d681SAndroid Build Coastguard Worker 4693*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float>, <16 x i32>, i16, i32) 4694*9880d681SAndroid Build Coastguard Worker 4695*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_cvtt_ps2udq_512(<16 x float> %x0, <16 x i32> %x1, i16 %x2) { 4696*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2udq_512: 4697*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2udq %zmm0, %zmm1 {%k1} 4700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2udq {sae}, %zmm0, %zmm0 4701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 4702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4703*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 %x2, i32 4) 4704*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.cvttps2udq.512(<16 x float> %x0, <16 x i32> %x1, i16 -1, i32 8) 4705*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 4706*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 4707*9880d681SAndroid Build Coastguard Worker} 4708*9880d681SAndroid Build Coastguard Worker 4709*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) nounwind readnone 4710*9880d681SAndroid Build Coastguard Worker 4711*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_getexp_ss(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) { 4712*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_ss: 4713*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 4717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpss %xmm1, %xmm0, %xmm3 {%k1} 4718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpss {sae}, %xmm1, %xmm0, %xmm2 {%k1} 4719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpss {sae}, %xmm1, %xmm0, %xmm4 {%k1} {z} 4720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpss {sae}, %xmm1, %xmm0, %xmm0 4721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm2, %xmm3, %xmm1 4722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm4, %xmm0 4723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm1, %xmm0 4724*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4725*9880d681SAndroid Build Coastguard Worker %res0 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 4) 4726*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> %a2, i8 %mask, i32 8) 4727*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 %mask, i32 8) 4728*9880d681SAndroid Build Coastguard Worker %res3 = call <4 x float> @llvm.x86.avx512.mask.getexp.ss(<4 x float>%a0, <4 x float> %a1, <4 x float> zeroinitializer, i8 -1, i32 8) 4729*9880d681SAndroid Build Coastguard Worker 4730*9880d681SAndroid Build Coastguard Worker %res.1 = fadd <4 x float> %res0, %res1 4731*9880d681SAndroid Build Coastguard Worker %res.2 = fadd <4 x float> %res2, %res3 4732*9880d681SAndroid Build Coastguard Worker %res = fadd <4 x float> %res.1, %res.2 4733*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 4734*9880d681SAndroid Build Coastguard Worker} 4735*9880d681SAndroid Build Coastguard Worker 4736*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) nounwind readnone 4737*9880d681SAndroid Build Coastguard Worker 4738*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_getexp_sd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) { 4739*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_getexp_sd: 4740*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4742*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 4744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpsd %xmm1, %xmm0, %xmm3 {%k1} 4745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpsd %xmm1, %xmm0, %xmm4 4746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpsd {sae}, %xmm1, %xmm0, %xmm2 {%k1} 4747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetexpsd {sae}, %xmm1, %xmm0, %xmm0 {%k1} {z} 4748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm2, %xmm3, %xmm1 4749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm4, %xmm0, %xmm0 4750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm1, %xmm0 4751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4752*9880d681SAndroid Build Coastguard Worker %res0 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 4) 4753*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> %a2, i8 %mask, i32 8) 4754*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 %mask, i32 8) 4755*9880d681SAndroid Build Coastguard Worker %res3 = call <2 x double> @llvm.x86.avx512.mask.getexp.sd(<2 x double>%a0, <2 x double> %a1, <2 x double> zeroinitializer, i8 -1, i32 4) 4756*9880d681SAndroid Build Coastguard Worker 4757*9880d681SAndroid Build Coastguard Worker %res.1 = fadd <2 x double> %res0, %res1 4758*9880d681SAndroid Build Coastguard Worker %res.2 = fadd <2 x double> %res2, %res3 4759*9880d681SAndroid Build Coastguard Worker %res = fadd <2 x double> %res.1, %res.2 4760*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 4761*9880d681SAndroid Build Coastguard Worker} 4762*9880d681SAndroid Build Coastguard Worker 4763*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double>, <2 x double>, i32, i8, i32) 4764*9880d681SAndroid Build Coastguard Worker 4765*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_sd(<2 x double> %x0, <2 x double> %x1, i8 %x3, i32 %x4) { 4766*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_sd: 4767*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4770*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpnltsd {sae}, %xmm1, %xmm0, %k0 {%k1} 4771*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 4772*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 4773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4774*9880d681SAndroid Build Coastguard Worker 4775*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 5, i8 %x3, i32 8) 4776*9880d681SAndroid Build Coastguard Worker ret i8 %res4 4777*9880d681SAndroid Build Coastguard Worker} 4778*9880d681SAndroid Build Coastguard Worker 4779*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_sd_all(<2 x double> %x0, <2 x double> %x1, i8 %x3, i32 %x4) { 4780*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_sd_all: 4781*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4782*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpunordsd {sae}, %xmm1, %xmm0, %k0 4783*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmplesd %xmm1, %xmm0, %k1 4784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: korw %k0, %k1, %k0 4785*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpnltsd {sae}, %xmm1, %xmm0, %k1 4786*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqsd %xmm1, %xmm0, %k2 4787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: korw %k1, %k2, %k1 4788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k2 4790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kandw %k2, %k1, %k1 4791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: korw %k1, %k0, %k0 4792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 4793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 4794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4795*9880d681SAndroid Build Coastguard Worker 4796*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 2, i8 -1, i32 4) 4797*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 3, i8 -1, i32 8) 4798*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 4, i8 %x3, i32 4) 4799*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.cmp.sd(<2 x double> %x0, <2 x double> %x1, i32 5, i8 %x3, i32 8) 4800*9880d681SAndroid Build Coastguard Worker 4801*9880d681SAndroid Build Coastguard Worker %res11 = or i8 %res1, %res2 4802*9880d681SAndroid Build Coastguard Worker %res12 = or i8 %res3, %res4 4803*9880d681SAndroid Build Coastguard Worker %res13 = or i8 %res11, %res12 4804*9880d681SAndroid Build Coastguard Worker ret i8 %res13 4805*9880d681SAndroid Build Coastguard Worker} 4806*9880d681SAndroid Build Coastguard Worker 4807*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float>, <4 x float>, i32, i8, i32) 4808*9880d681SAndroid Build Coastguard Worker 4809*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_ss(<4 x float> %x0, <4 x float> %x1, i8 %x3, i32 %x4) { 4810*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_ss: 4811*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpunordss %xmm1, %xmm0, %k0 {%k1} 4815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 4816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 4817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4818*9880d681SAndroid Build Coastguard Worker 4819*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 3, i8 %x3, i32 4) 4820*9880d681SAndroid Build Coastguard Worker ret i8 %res2 4821*9880d681SAndroid Build Coastguard Worker} 4822*9880d681SAndroid Build Coastguard Worker 4823*9880d681SAndroid Build Coastguard Worker 4824*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_mask_cmp_ss_all(<4 x float> %x0, <4 x float> %x1, i8 %x3, i32 %x4) { 4825*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cmp_ss_all: 4826*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpless %xmm1, %xmm0, %k1 4828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpunordss {sae}, %xmm1, %xmm0, %k0 {%k1} 4829*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4830*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4831*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpneqss %xmm1, %xmm0, %k2 {%k1} 4832*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k2, %ecx 4833*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpnltss {sae}, %xmm1, %xmm0, %k1 {%k1} 4834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k1, %eax 4835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %edx 4836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andb %cl, %al 4837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andb %dl, %al 4838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 4839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4840*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 2, i8 -1, i32 4) 4841*9880d681SAndroid Build Coastguard Worker %res2 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 3, i8 -1, i32 8) 4842*9880d681SAndroid Build Coastguard Worker %res3 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 4, i8 %x3, i32 4) 4843*9880d681SAndroid Build Coastguard Worker %res4 = call i8 @llvm.x86.avx512.mask.cmp.ss(<4 x float> %x0, <4 x float> %x1, i32 5, i8 %x3, i32 8) 4844*9880d681SAndroid Build Coastguard Worker 4845*9880d681SAndroid Build Coastguard Worker %res11 = and i8 %res1, %res2 4846*9880d681SAndroid Build Coastguard Worker %res12 = and i8 %res3, %res4 4847*9880d681SAndroid Build Coastguard Worker %res13 = and i8 %res11, %res12 4848*9880d681SAndroid Build Coastguard Worker ret i8 %res13 4849*9880d681SAndroid Build Coastguard Worker} 4850*9880d681SAndroid Build Coastguard Worker 4851*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float>, <16 x float>, i32, <16 x float>, i16) 4852*9880d681SAndroid Build Coastguard Worker 4853*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_shuf_f32x4(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) { 4854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_f32x4: 4855*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm2 {%k1} = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3] 4858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm0 = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3] 4859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 4860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4861*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 %x4) 4862*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.shuf.f32x4(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 -1) 4863*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 4864*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 4865*9880d681SAndroid Build Coastguard Worker} 4866*9880d681SAndroid Build Coastguard Worker 4867*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double>, <8 x double>, i32, <8 x double>, i8) 4868*9880d681SAndroid Build Coastguard Worker 4869*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_shuf_f64x2(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) { 4870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_f64x2: 4871*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm2 {%k1} = zmm0[4,5,2,3],zmm1[2,3,0,1] 4874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm3 {%k1} {z} = zmm0[4,5,2,3],zmm1[2,3,0,1] 4875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm0 = zmm0[4,5,2,3],zmm1[2,3,0,1] 4876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 4877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm3, %zmm0, %zmm0 4878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4879*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 %x4) 4880*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 -1) 4881*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.shuf.f64x2(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> zeroinitializer, i8 %x4) 4882*9880d681SAndroid Build Coastguard Worker 4883*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 4884*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 4885*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 4886*9880d681SAndroid Build Coastguard Worker} 4887*9880d681SAndroid Build Coastguard Worker 4888*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32>, <16 x i32>, i32, <16 x i32>, i16) 4889*9880d681SAndroid Build Coastguard Worker 4890*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_shuf_i32x4(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x3, i16 %x4) { 4891*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_i32x4: 4892*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4893*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4894*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm2 {%k1} = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3] 4895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm0 = zmm0[8,9,10,11,4,5,6,7],zmm1[4,5,6,7,0,1,2,3] 4896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 4897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4898*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32> %x0, <16 x i32> %x1, i32 22, <16 x i32> %x3, i16 %x4) 4899*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.shuf.i32x4(<16 x i32> %x0, <16 x i32> %x1, i32 22, <16 x i32> %x3, i16 -1) 4900*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 4901*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 4902*9880d681SAndroid Build Coastguard Worker} 4903*9880d681SAndroid Build Coastguard Worker 4904*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64>, <8 x i64>, i32, <8 x i64>, i8) 4905*9880d681SAndroid Build Coastguard Worker 4906*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_shuf_i64x2(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x3, i8 %x4) { 4907*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_i64x2: 4908*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4910*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm2 {%k1} = zmm0[4,5,2,3],zmm1[2,3,0,1] 4911*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[4,5,2,3],zmm1[2,3,0,1] 4912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 4913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4914*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64> %x0, <8 x i64> %x1, i32 22, <8 x i64> %x3, i8 %x4) 4915*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.shuf.i64x2(<8 x i64> %x0, <8 x i64> %x1, i32 22, <8 x i64> %x3, i8 -1) 4916*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 4917*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 4918*9880d681SAndroid Build Coastguard Worker} 4919*9880d681SAndroid Build Coastguard Worker 4920*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double>, i32, <8 x double>, i8, i32) 4921*9880d681SAndroid Build Coastguard Worker 4922*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_getmant_pd_512(<8 x double> %x0, <8 x double> %x2, i8 %x3) { 4923*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_pd_512: 4924*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4925*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4926*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantpd $11, %zmm0, %zmm1 {%k1} 4927*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantpd $11, {sae}, %zmm0, %zmm0 4928*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 4929*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4930*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %x0, i32 11, <8 x double> %x2, i8 %x3, i32 4) 4931*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.getmant.pd.512(<8 x double> %x0, i32 11, <8 x double> %x2, i8 -1, i32 8) 4932*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 4933*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 4934*9880d681SAndroid Build Coastguard Worker} 4935*9880d681SAndroid Build Coastguard Worker 4936*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float>, i32, <16 x float>, i16, i32) 4937*9880d681SAndroid Build Coastguard Worker 4938*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_getmant_ps_512(<16 x float> %x0, <16 x float> %x2, i16 %x3) { 4939*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_ps_512: 4940*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantps $11, %zmm0, %zmm1 {%k1} 4943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantps $11, {sae}, %zmm0, %zmm0 4944*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 4945*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4946*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 %x3, i32 4) 4947*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.getmant.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 -1, i32 8) 4948*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 4949*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 4950*9880d681SAndroid Build Coastguard Worker} 4951*9880d681SAndroid Build Coastguard Worker 4952*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double>, <2 x double>, i32, <2 x double>, i8, i32) 4953*9880d681SAndroid Build Coastguard Worker 4954*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_getmant_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) { 4955*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_sd: 4956*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 4960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantsd $11, %xmm1, %xmm0, %xmm3 {%k1} 4961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantsd $11, %xmm1, %xmm0, %xmm4 {%k1} {z} 4962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantsd $11, %xmm1, %xmm0, %xmm5 4963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantsd $11, {sae}, %xmm1, %xmm0, %xmm2 {%k1} 4964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm4, %xmm3, %xmm0 4965*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm5, %xmm2, %xmm1 4966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm1, %xmm0, %xmm0 4967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4968*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 %x3, i32 4) 4969*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> zeroinitializer, i8 %x3, i32 4) 4970*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 %x3, i32 8) 4971*9880d681SAndroid Build Coastguard Worker %res3 = call <2 x double> @llvm.x86.avx512.mask.getmant.sd(<2 x double> %x0, <2 x double> %x1, i32 11, <2 x double> %x2, i8 -1, i32 4) 4972*9880d681SAndroid Build Coastguard Worker %res11 = fadd <2 x double> %res, %res1 4973*9880d681SAndroid Build Coastguard Worker %res12 = fadd <2 x double> %res2, %res3 4974*9880d681SAndroid Build Coastguard Worker %res13 = fadd <2 x double> %res11, %res12 4975*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res13 4976*9880d681SAndroid Build Coastguard Worker} 4977*9880d681SAndroid Build Coastguard Worker 4978*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float>, <4 x float>, i32, <4 x float>, i8, i32) 4979*9880d681SAndroid Build Coastguard Worker 4980*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_getmant_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) { 4981*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_getmant_ss: 4982*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 4983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 4984*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 4985*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantss $11, %xmm1, %xmm0, %xmm2 {%k1} 4986*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantss $11, %xmm1, %xmm0, %xmm3 {%k1} {z} 4987*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantss $11, %xmm1, %xmm0, %xmm4 4988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vgetmantss $11, {sae}, %xmm1, %xmm0, %xmm0 4989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm3, %xmm2, %xmm1 4990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm4, %xmm0, %xmm0 4991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm1, %xmm0 4992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 4993*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 %x3, i32 4) 4994*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> zeroinitializer, i8 %x3, i32 4) 4995*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 -1, i32 8) 4996*9880d681SAndroid Build Coastguard Worker %res3 = call <4 x float> @llvm.x86.avx512.mask.getmant.ss(<4 x float> %x0, <4 x float> %x1, i32 11, <4 x float> %x2, i8 -1, i32 4) 4997*9880d681SAndroid Build Coastguard Worker %res11 = fadd <4 x float> %res, %res1 4998*9880d681SAndroid Build Coastguard Worker %res12 = fadd <4 x float> %res2, %res3 4999*9880d681SAndroid Build Coastguard Worker %res13 = fadd <4 x float> %res11, %res12 5000*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res13 5001*9880d681SAndroid Build Coastguard Worker} 5002*9880d681SAndroid Build Coastguard Worker 5003*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double>, <8 x double>, i32, <8 x double>, i8) 5004*9880d681SAndroid Build Coastguard Worker 5005*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_shuf_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) { 5006*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_pd_512: 5007*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufpd {{.*#+}} zmm2 {%k1} = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6] 5010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufpd {{.*#+}} zmm3 {%k1} {z} = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6] 5011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufpd {{.*#+}} zmm0 = zmm0[0],zmm1[1],zmm0[3],zmm1[2],zmm0[5],zmm1[4],zmm0[6],zmm1[6] 5012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 5013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm3, %zmm0, %zmm0 5014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5015*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 %x4) 5016*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> %x3, i8 -1) 5017*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.shuf.pd.512(<8 x double> %x0, <8 x double> %x1, i32 22, <8 x double> zeroinitializer, i8 %x4) 5018*9880d681SAndroid Build Coastguard Worker 5019*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 5020*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 5021*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 5022*9880d681SAndroid Build Coastguard Worker} 5023*9880d681SAndroid Build Coastguard Worker 5024*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float>, <16 x float>, i32, <16 x float>, i16) 5025*9880d681SAndroid Build Coastguard Worker 5026*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_shuf_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) { 5027*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_shuf_ps_512: 5028*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5029*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufps {{.*#+}} zmm2 {%k1} = zmm0[2,1],zmm1[1,0],zmm0[6,5],zmm1[5,4],zmm0[10,9],zmm1[9,8],zmm0[14,13],zmm1[13,12] 5031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufps {{.*#+}} zmm0 = zmm0[2,1],zmm1[1,0],zmm0[6,5],zmm1[5,4],zmm0[10,9],zmm1[9,8],zmm0[14,13],zmm1[13,12] 5032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 5033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5034*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 %x4) 5035*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.shuf.ps.512(<16 x float> %x0, <16 x float> %x1, i32 22, <16 x float> %x3, i16 -1) 5036*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 5037*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 5038*9880d681SAndroid Build Coastguard Worker} 5039*9880d681SAndroid Build Coastguard Worker 5040*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double>, <8 x i64>, <8 x double>, i8) 5041*9880d681SAndroid Build Coastguard Worker 5042*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_vpermilvar_pd_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) { 5043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermilvar_pd_512: 5044*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilpd %zmm1, %zmm0, %zmm2 {%k1} 5047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilpd %zmm1, %zmm0, %zmm3 {%k1} {z} 5048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilpd %zmm1, %zmm0, %zmm0 5049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm3, %zmm2, %zmm1 5050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm1, %zmm0, %zmm0 5051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5052*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) 5053*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> zeroinitializer, i8 %x3) 5054*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.vpermilvar.pd.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1) 5055*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 5056*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res2, %res3 5057*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 5058*9880d681SAndroid Build Coastguard Worker} 5059*9880d681SAndroid Build Coastguard Worker 5060*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float>, <16 x i32>, <16 x float>, i16) 5061*9880d681SAndroid Build Coastguard Worker 5062*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_vpermilvar_ps_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) { 5063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermilvar_ps_512: 5064*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilps %zmm1, %zmm0, %zmm2 {%k1} 5067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilps %zmm1, %zmm0, %zmm3 {%k1} {z} 5068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermilps %zmm1, %zmm0, %zmm0 5069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm3, %zmm2, %zmm1 5070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 5071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5072*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) 5073*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> zeroinitializer, i16 %x3) 5074*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.vpermilvar.ps.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1) 5075*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 5076*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res2, %res3 5077*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 5078*9880d681SAndroid Build Coastguard Worker} 5079*9880d681SAndroid Build Coastguard Worker 5080*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float>, <4 x float>, i32, <16 x float>, i16) 5081*9880d681SAndroid Build Coastguard Worker 5082*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_insertf32x4_512(<16 x float> %x0, <4 x float> %x1, <16 x float> %x3, i16 %x4) { 5083*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf32x4_512: 5084*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x4 $1, %xmm1, %zmm0, %zmm2 {%k1} 5087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x4 $1, %xmm1, %zmm0, %zmm3 {%k1} {z} 5088*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x4 $1, %xmm1, %zmm0, %zmm0 5089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 5090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm3, %zmm0 5091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5092*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> %x3, i16 %x4) 5093*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> %x3, i16 -1) 5094*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.insertf32x4.512(<16 x float> %x0, <4 x float> %x1, i32 1, <16 x float> zeroinitializer, i16 %x4) 5095*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 5096*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res2, %res3 5097*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 5098*9880d681SAndroid Build Coastguard Worker} 5099*9880d681SAndroid Build Coastguard Worker 5100*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32>, <4 x i32>, i32, <16 x i32>, i16) 5101*9880d681SAndroid Build Coastguard Worker 5102*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_inserti32x4_512(<16 x i32> %x0, <4 x i32> %x1, <16 x i32> %x3, i16 %x4) { 5103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti32x4_512: 5104*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x4 $1, %xmm1, %zmm0, %zmm2 {%k1} 5107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x4 $1, %xmm1, %zmm0, %zmm3 {%k1} {z} 5108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x4 $1, %xmm1, %zmm0, %zmm0 5109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 5110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm3, %zmm0 5111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5112*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> %x3, i16 %x4) 5113*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> %x3, i16 -1) 5114*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x4.512(<16 x i32> %x0, <4 x i32> %x1, i32 1, <16 x i32> zeroinitializer, i16 %x4) 5115*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5116*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res2, %res3 5117*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5118*9880d681SAndroid Build Coastguard Worker} 5119*9880d681SAndroid Build Coastguard Worker 5120*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double>, <4 x double>, i32, <8 x double>, i8) 5121*9880d681SAndroid Build Coastguard Worker 5122*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_insertf64x4_512(<8 x double> %x0, <4 x double> %x1, <8 x double> %x3, i8 %x4) { 5123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf64x4_512: 5124*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm2 {%k1} 5127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm3 {%k1} {z} 5128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x4 $1, %ymm1, %zmm0, %zmm0 5129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 5130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm3, %zmm0 5131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5132*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> %x3, i8 %x4) 5133*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> %x3, i8 -1) 5134*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.insertf64x4.512(<8 x double> %x0, <4 x double> %x1, i32 1, <8 x double> zeroinitializer, i8 %x4) 5135*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 5136*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res2, %res3 5137*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 5138*9880d681SAndroid Build Coastguard Worker} 5139*9880d681SAndroid Build Coastguard Worker 5140*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64>, <4 x i64>, i32, <8 x i64>, i8) 5141*9880d681SAndroid Build Coastguard Worker 5142*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_inserti64x4_512(<8 x i64> %x0, <4 x i64> %x1, <8 x i64> %x3, i8 %x4) { 5143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti64x4_512: 5144*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm2 {%k1} 5147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm3 {%k1} {z} 5148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 5149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 5150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm3, %zmm0 5151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5152*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> %x3, i8 %x4) 5153*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> %x3, i8 -1) 5154*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x4.512(<8 x i64> %x0, <4 x i64> %x1, i32 1, <8 x i64> zeroinitializer, i8 %x4) 5155*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5156*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res2, %res3 5157*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5158*9880d681SAndroid Build Coastguard Worker} 5159*9880d681SAndroid Build Coastguard Worker 5160*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double>, <4 x float>, <2 x double>, i8, i32) 5161*9880d681SAndroid Build Coastguard Worker 5162*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_cvt_ss2sd_round(<2 x double> %x0,<4 x float> %x1, <2 x double> %x2, i8 %x3) { 5163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ss2sd_round: 5164*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2sd %xmm1, %xmm0, %xmm2 {%k1} 5168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtss2sd {sae}, %xmm1, %xmm0, %xmm0 5169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm2, %xmm0 5170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5171*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double> %x0, <4 x float> %x1, <2 x double> %x2, i8 %x3, i32 4) 5172*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.cvtss2sd.round(<2 x double> %x0, <4 x float> %x1, <2 x double> %x2, i8 -1, i32 8) 5173*9880d681SAndroid Build Coastguard Worker %res2 = fadd <2 x double> %res, %res1 5174*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res2 5175*9880d681SAndroid Build Coastguard Worker} 5176*9880d681SAndroid Build Coastguard Worker 5177*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float>, <2 x double>, <4 x float>, i8, i32) 5178*9880d681SAndroid Build Coastguard Worker 5179*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_cvt_sd2ss_round(<4 x float> %x0,<2 x double> %x1, <4 x float> %x2, i8 %x3) { 5180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_sd2ss_round: 5181*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2ss {rz-sae}, %xmm1, %xmm0, %xmm2 {%k1} 5185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtsd2ss {rn-sae}, %xmm1, %xmm0, %xmm0 5186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm2, %xmm0 5187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5188*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float> %x0, <2 x double> %x1, <4 x float> %x2, i8 %x3, i32 3) 5189*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.cvtsd2ss.round(<4 x float> %x0, <2 x double> %x1, <4 x float> %x2, i8 -1, i32 8) 5190*9880d681SAndroid Build Coastguard Worker %res2 = fadd <4 x float> %res, %res1 5191*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res2 5192*9880d681SAndroid Build Coastguard Worker} 5193*9880d681SAndroid Build Coastguard Worker 5194*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32, i16) 5195*9880d681SAndroid Build Coastguard Worker 5196*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pternlog_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x4) { 5197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pternlog_d_512: 5198*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 5201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogd $33, %zmm2, %zmm1, %zmm3 {%k1} 5202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogd $33, %zmm2, %zmm1, %zmm0 5203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm3, %zmm0 5204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5205*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 %x4) 5206*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 -1) 5207*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 5208*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 5209*9880d681SAndroid Build Coastguard Worker} 5210*9880d681SAndroid Build Coastguard Worker 5211*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i32, i16) 5212*9880d681SAndroid Build Coastguard Worker 5213*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_maskz_pternlog_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x4) { 5214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_pternlog_d_512: 5215*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 5218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogd $33, %zmm2, %zmm1, %zmm3 {%k1} {z} 5219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogd $33, %zmm2, %zmm1, %zmm0 5220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm3, %zmm0 5221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5222*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 %x4) 5223*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.maskz.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 33, i16 -1) 5224*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 5225*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 5226*9880d681SAndroid Build Coastguard Worker} 5227*9880d681SAndroid Build Coastguard Worker 5228*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32, i8) 5229*9880d681SAndroid Build Coastguard Worker 5230*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pternlog_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x4) { 5231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pternlog_q_512: 5232*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 5235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogq $33, %zmm2, %zmm1, %zmm3 {%k1} 5236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogq $33, %zmm2, %zmm1, %zmm0 5237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm3, %zmm0 5238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5239*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 %x4) 5240*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 -1) 5241*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 5242*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 5243*9880d681SAndroid Build Coastguard Worker} 5244*9880d681SAndroid Build Coastguard Worker 5245*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i32, i8) 5246*9880d681SAndroid Build Coastguard Worker 5247*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_maskz_pternlog_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x4) { 5248*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_pternlog_q_512: 5249*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 5252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogq $33, %zmm2, %zmm1, %zmm3 {%k1} {z} 5253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpternlogq $33, %zmm2, %zmm1, %zmm0 5254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm3, %zmm0 5255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5256*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 %x4) 5257*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.maskz.pternlog.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i32 33, i8 -1) 5258*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 5259*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 5260*9880d681SAndroid Build Coastguard Worker} 5261*9880d681SAndroid Build Coastguard Worker 5262*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) { 5263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_eq_sae: 5264*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpeqsd {sae}, %xmm1, %xmm0, %k0 5266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5268*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 8) 5269*9880d681SAndroid Build Coastguard Worker ret i32 %res 5270*9880d681SAndroid Build Coastguard Worker} 5271*9880d681SAndroid Build Coastguard Worker 5272*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_eq_sae(<2 x double> %a0, <2 x double> %a1) { 5273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq_sae: 5274*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpeq_uqsd {sae}, %xmm1, %xmm0, %k0 5276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5278*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 8) 5279*9880d681SAndroid Build Coastguard Worker ret i32 %res 5280*9880d681SAndroid Build Coastguard Worker} 5281*9880d681SAndroid Build Coastguard Worker 5282*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_eq(<2 x double> %a0, <2 x double> %a1) { 5283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_eq: 5284*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpeqsd %xmm1, %xmm0, %k0 5286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5288*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 0, i32 4) 5289*9880d681SAndroid Build Coastguard Worker ret i32 %res 5290*9880d681SAndroid Build Coastguard Worker} 5291*9880d681SAndroid Build Coastguard Worker 5292*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_eq(<2 x double> %a0, <2 x double> %a1) { 5293*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_eq: 5294*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpeq_uqsd %xmm1, %xmm0, %k0 5296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5298*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 8, i32 4) 5299*9880d681SAndroid Build Coastguard Worker ret i32 %res 5300*9880d681SAndroid Build Coastguard Worker} 5301*9880d681SAndroid Build Coastguard Worker 5302*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) { 5303*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_lt_sae: 5304*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpltsd {sae}, %xmm1, %xmm0, %k0 5306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5308*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 8) 5309*9880d681SAndroid Build Coastguard Worker ret i32 %res 5310*9880d681SAndroid Build Coastguard Worker} 5311*9880d681SAndroid Build Coastguard Worker 5312*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_lt_sae(<2 x double> %a0, <2 x double> %a1) { 5313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt_sae: 5314*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpngesd {sae}, %xmm1, %xmm0, %k0 5316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5318*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 8) 5319*9880d681SAndroid Build Coastguard Worker ret i32 %res 5320*9880d681SAndroid Build Coastguard Worker} 5321*9880d681SAndroid Build Coastguard Worker 5322*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_comi_sd_lt(<2 x double> %a0, <2 x double> %a1) { 5323*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_comi_sd_lt: 5324*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpltsd %xmm1, %xmm0, %k0 5326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5328*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 1, i32 4) 5329*9880d681SAndroid Build Coastguard Worker ret i32 %res 5330*9880d681SAndroid Build Coastguard Worker} 5331*9880d681SAndroid Build Coastguard Worker 5332*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_sd_lt(<2 x double> %a0, <2 x double> %a1) { 5333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_sd_lt: 5334*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpngesd %xmm1, %xmm0, %k0 5336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5338*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.sd(<2 x double> %a0, <2 x double> %a1, i32 9, i32 4) 5339*9880d681SAndroid Build Coastguard Worker ret i32 %res 5340*9880d681SAndroid Build Coastguard Worker} 5341*9880d681SAndroid Build Coastguard Worker 5342*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcomi.sd(<2 x double>, <2 x double>, i32, i32) 5343*9880d681SAndroid Build Coastguard Worker 5344*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx512_ucomi_ss_lt(<4 x float> %a0, <4 x float> %a1) { 5345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_x86_avx512_ucomi_ss_lt: 5346*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcmpngess %xmm1, %xmm0, %k0 5348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 5349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5350*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.vcomi.ss(<4 x float> %a0, <4 x float> %a1, i32 9, i32 4) 5351*9880d681SAndroid Build Coastguard Worker ret i32 %res 5352*9880d681SAndroid Build Coastguard Worker} 5353*9880d681SAndroid Build Coastguard Worker 5354*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.vcomi.ss(<4 x float>, <4 x float>, i32, i32) 5355*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float>, <4 x float>, <4 x float>, i8) 5356*9880d681SAndroid Build Coastguard Worker 5357*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rrk(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) { 5358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rrk: 5359*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss %xmm1, %xmm0, %xmm2 {%k1} 5363*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 5364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5365*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) 5366*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 5367*9880d681SAndroid Build Coastguard Worker} 5368*9880d681SAndroid Build Coastguard Worker 5369*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rrkz(<4 x float> %x0, <4 x float> %x1, i8 %x2) { 5370*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rrkz: 5371*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss %xmm1, %xmm0, %xmm0 {%k1} {z} 5375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5376*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> zeroinitializer, i8 %x2) 5377*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 5378*9880d681SAndroid Build Coastguard Worker} 5379*9880d681SAndroid Build Coastguard Worker 5380*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_move_ss_rr(<4 x float> %x0, <4 x float> %x1, i8 %x2) { 5381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_ss_rr: 5382*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovss %xmm1, %xmm0, %xmm0 5384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5385*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.move.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> zeroinitializer, i8 -1) 5386*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 5387*9880d681SAndroid Build Coastguard Worker} 5388*9880d681SAndroid Build Coastguard Worker 5389*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double>, <2 x double>, <2 x double>, i8) 5390*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rr(<2 x double> %x0, <2 x double> %x1, i8 %x2) { 5391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rr: 5392*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovsd %xmm1, %xmm0, %xmm0 5394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5395*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> zeroinitializer, i8 -1) 5396*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 5397*9880d681SAndroid Build Coastguard Worker} 5398*9880d681SAndroid Build Coastguard Worker 5399*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rrkz(<2 x double> %x0, <2 x double> %x1, i8 %x2) { 5400*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rrkz: 5401*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovsd %xmm1, %xmm0, %xmm0 {%k1} {z} 5405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5406*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> zeroinitializer, i8 %x2) 5407*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 5408*9880d681SAndroid Build Coastguard Worker} 5409*9880d681SAndroid Build Coastguard Worker 5410*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_move_sd_rrk(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) { 5411*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_move_sd_rrk: 5412*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 5414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovsd %xmm1, %xmm0, %xmm2 {%k1} 5416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm0 5417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5418*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.move.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) 5419*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 5420*9880d681SAndroid Build Coastguard Worker} 5421*9880d681SAndroid Build Coastguard Worker 5422*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float>, <16 x float>, i16) 5423*9880d681SAndroid Build Coastguard Worker 5424*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x4_512(<4 x float> %x0, <16 x float> %x2, i16 %mask) { 5425*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x4_512: 5426*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def> 5428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 5433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 5434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5435*9880d681SAndroid Build Coastguard Worker 5436*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> %x2, i16 -1) 5437*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> %x2, i16 %mask) 5438*9880d681SAndroid Build Coastguard Worker %res3 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x4.512(<4 x float> %x0, <16 x float> zeroinitializer, i16 %mask) 5439*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res1, %res2 5440*9880d681SAndroid Build Coastguard Worker %res5 = fadd <16 x float> %res3, %res4 5441*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res5 5442*9880d681SAndroid Build Coastguard Worker} 5443*9880d681SAndroid Build Coastguard Worker 5444*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double>, <8 x double>, i8) 5445*9880d681SAndroid Build Coastguard Worker 5446*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_broadcastf64x4_512(<4 x double> %x0, <8 x double> %x2, i8 %mask) { 5447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf64x4_512: 5448*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def> 5450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3] 5452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3] 5453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3] 5454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm1, %zmm0, %zmm0 5455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 5456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5457*9880d681SAndroid Build Coastguard Worker 5458*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> %x2, i8 -1) 5459*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> %x2, i8 %mask) 5460*9880d681SAndroid Build Coastguard Worker %res3 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x4.512(<4 x double> %x0, <8 x double> zeroinitializer, i8 %mask) 5461*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res1, %res2 5462*9880d681SAndroid Build Coastguard Worker %res5 = fadd <8 x double> %res3, %res4 5463*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res5 5464*9880d681SAndroid Build Coastguard Worker} 5465*9880d681SAndroid Build Coastguard Worker 5466*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32>, <16 x i32>, i16) 5467*9880d681SAndroid Build Coastguard Worker 5468*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x4_512(<4 x i32> %x0, <16 x i32> %x2, i16 %mask) { 5469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x4_512: 5470*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def> 5472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3] 5476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 5477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 5478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5479*9880d681SAndroid Build Coastguard Worker 5480*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> %x2, i16 -1) 5481*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> %x2, i16 %mask) 5482*9880d681SAndroid Build Coastguard Worker %res3 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x4.512(<4 x i32> %x0, <16 x i32> zeroinitializer, i16 %mask) 5483*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res1, %res2 5484*9880d681SAndroid Build Coastguard Worker %res5 = add <16 x i32> %res3, %res4 5485*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res5 5486*9880d681SAndroid Build Coastguard Worker} 5487*9880d681SAndroid Build Coastguard Worker 5488*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64>, <8 x i64>, i8) 5489*9880d681SAndroid Build Coastguard Worker 5490*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_broadcasti64x4_512(<4 x i64> %x0, <8 x i64> %x2, i8 %mask) { 5491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti64x4_512: 5492*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def> 5494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,0,1,2,3] 5496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,0,1,2,3] 5497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3,0,1,2,3] 5498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm0 5499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 5500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5501*9880d681SAndroid Build Coastguard Worker 5502*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> %x2, i8 -1) 5503*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> %x2, i8 %mask) 5504*9880d681SAndroid Build Coastguard Worker %res3 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x4.512(<4 x i64> %x0, <8 x i64> zeroinitializer, i8 %mask) 5505*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res1, %res2 5506*9880d681SAndroid Build Coastguard Worker %res5 = add <8 x i64> %res3, %res4 5507*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res5 5508*9880d681SAndroid Build Coastguard Worker} 5509*9880d681SAndroid Build Coastguard Worker 5510*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64>, i32, <8 x i64>, i8) 5511*9880d681SAndroid Build Coastguard Worker 5512*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psrl_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) { 5513*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_qi_512: 5514*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq $255, %zmm0, %zmm1 {%k1} 5517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq $255, %zmm0, %zmm2 {%k1} {z} 5518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrlq $255, %zmm0, %zmm0 5519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm0, %zmm0 5521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5522*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> %x2, i8 %x3) 5523*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> %x2, i8 -1) 5524*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.psrl.qi.512(<8 x i64> %x0, i32 255, <8 x i64> zeroinitializer, i8 %x3) 5525*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5526*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5527*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5528*9880d681SAndroid Build Coastguard Worker} 5529*9880d681SAndroid Build Coastguard Worker 5530*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32>, i32, <16 x i32>, i16) 5531*9880d681SAndroid Build Coastguard Worker 5532*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psrl_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) { 5533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_di_512: 5534*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld $255, %zmm0, %zmm1 {%k1} 5537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld $255, %zmm0, %zmm2 {%k1} {z} 5538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrld $255, %zmm0, %zmm0 5539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm0, %zmm0 5541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5542*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> %x2, i16 %x3) 5543*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> %x2, i16 -1) 5544*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.psrl.di.512(<16 x i32> %x0, i32 255, <16 x i32> zeroinitializer, i16 %x3) 5545*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5546*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5547*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5548*9880d681SAndroid Build Coastguard Worker} 5549*9880d681SAndroid Build Coastguard Worker 5550*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32>, i32, <16 x i32>, i16) 5551*9880d681SAndroid Build Coastguard Worker 5552*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psra_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) { 5553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_di_512: 5554*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $3, %zmm0, %zmm1 {%k1} 5557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $3, %zmm0, %zmm2 {%k1} {z} 5558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsrad $3, %zmm0, %zmm0 5559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5560*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5561*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5562*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3) 5563*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3) 5564*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.psra.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1) 5565*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5566*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5567*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5568*9880d681SAndroid Build Coastguard Worker} 5569*9880d681SAndroid Build Coastguard Worker 5570*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64>, i32, <8 x i64>, i8) 5571*9880d681SAndroid Build Coastguard Worker 5572*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psra_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) { 5573*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_qi_512: 5574*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq $3, %zmm0, %zmm1 {%k1} 5577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq $3, %zmm0, %zmm2 {%k1} {z} 5578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsraq $3, %zmm0, %zmm0 5579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5581*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5582*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3) 5583*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3) 5584*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.psra.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1) 5585*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5586*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5587*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5588*9880d681SAndroid Build Coastguard Worker} 5589*9880d681SAndroid Build Coastguard Worker 5590*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32>, i32, <16 x i32>, i16) 5591*9880d681SAndroid Build Coastguard Worker 5592*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_psll_di_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) { 5593*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_di_512: 5594*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5595*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $3, %zmm0, %zmm1 {%k1} 5597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $3, %zmm0, %zmm2 {%k1} {z} 5598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpslld $3, %zmm0, %zmm0 5599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5602*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3) 5603*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3) 5604*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.psll.di.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1) 5605*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5606*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5607*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5608*9880d681SAndroid Build Coastguard Worker} 5609*9880d681SAndroid Build Coastguard Worker 5610*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64>, i32, <8 x i64>, i8) 5611*9880d681SAndroid Build Coastguard Worker 5612*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psll_qi_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) { 5613*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_qi_512: 5614*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5615*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq $3, %zmm0, %zmm1 {%k1} 5617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq $3, %zmm0, %zmm2 {%k1} {z} 5618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpsllq $3, %zmm0, %zmm0 5619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5622*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3) 5623*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3) 5624*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.psll.qi.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1) 5625*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5626*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5627*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5628*9880d681SAndroid Build Coastguard Worker} 5629*9880d681SAndroid Build Coastguard Worker 5630*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 5631*9880d681SAndroid Build Coastguard Worker 5632*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_prorv_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 5633*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prorv_d_512: 5634*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvd %zmm1, %zmm0, %zmm2 {%k1} 5637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvd %zmm1, %zmm0, %zmm3 {%k1} {z} 5638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvd %zmm1, %zmm0, %zmm0 5639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm3, %zmm2, %zmm1 5640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5642*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 5643*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> zeroinitializer, i16 %x3) 5644*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.prorv.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 5645*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5646*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5647*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5648*9880d681SAndroid Build Coastguard Worker} 5649*9880d681SAndroid Build Coastguard Worker 5650*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 5651*9880d681SAndroid Build Coastguard Worker 5652*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_prorv_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 5653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prorv_q_512: 5654*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvq %zmm1, %zmm0, %zmm2 {%k1} 5657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvq %zmm1, %zmm0, %zmm3 {%k1} {z} 5658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprorvq %zmm1, %zmm0, %zmm0 5659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm3, %zmm2, %zmm1 5660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5661*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5662*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 5663*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> zeroinitializer, i8 %x3) 5664*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.prorv.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 5665*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5666*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5667*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5668*9880d681SAndroid Build Coastguard Worker} 5669*9880d681SAndroid Build Coastguard Worker 5670*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32>, i32, <16 x i32>, i16) 5671*9880d681SAndroid Build Coastguard Worker 5672*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_prol_d_512(<16 x i32> %x0, i32 %x1, <16 x i32> %x2, i16 %x3) { 5673*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prol_d_512: 5674*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprold $3, %zmm0, %zmm1 {%k1} 5677*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprold $3, %zmm0, %zmm2 {%k1} {z} 5678*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprold $3, %zmm0, %zmm0 5679*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5682*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 %x3) 5683*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> zeroinitializer, i16 %x3) 5684*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.prol.d.512(<16 x i32> %x0, i32 3, <16 x i32> %x2, i16 -1) 5685*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5686*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5687*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5688*9880d681SAndroid Build Coastguard Worker} 5689*9880d681SAndroid Build Coastguard Worker 5690*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64>, i32, <8 x i64>, i8) 5691*9880d681SAndroid Build Coastguard Worker 5692*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_prol_q_512(<8 x i64> %x0, i32 %x1, <8 x i64> %x2, i8 %x3) { 5693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_prol_q_512: 5694*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 5696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprolq $3, %zmm0, %zmm1 {%k1} 5697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprolq $3, %zmm0, %zmm2 {%k1} {z} 5698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprolq $3, %zmm0, %zmm0 5699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5702*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 %x3) 5703*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> zeroinitializer, i8 %x3) 5704*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.prol.q.512(<8 x i64> %x0, i32 3, <8 x i64> %x2, i8 -1) 5705*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5706*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5707*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5708*9880d681SAndroid Build Coastguard Worker} 5709*9880d681SAndroid Build Coastguard Worker 5710*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8>, <16 x i32>, i16) 5711*9880d681SAndroid Build Coastguard Worker 5712*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovzxb_d_512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) { 5713*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_d_512: 5714*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbd {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 5717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbd {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 5718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero 5719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5722*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) 5723*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> zeroinitializer, i16 %x2) 5724*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 -1) 5725*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5726*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5727*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5728*9880d681SAndroid Build Coastguard Worker} 5729*9880d681SAndroid Build Coastguard Worker 5730*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8>, <8 x i64>, i8) 5731*9880d681SAndroid Build Coastguard Worker 5732*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxb_q_512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) { 5733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_q_512: 5734*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbq {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero 5737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbq {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero 5738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxbq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,zero,zero,zero,xmm0[2],zero,zero,zero,zero,zero,zero,zero,xmm0[3],zero,zero,zero,zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,zero,zero,zero,xmm0[5],zero,zero,zero,zero,zero,zero,zero,xmm0[6],zero,zero,zero,zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,zero,zero,zero 5739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5742*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) 5743*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> zeroinitializer, i8 %x2) 5744*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 -1) 5745*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5746*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5747*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5748*9880d681SAndroid Build Coastguard Worker} 5749*9880d681SAndroid Build Coastguard Worker 5750*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32>, <8 x i64>, i8) 5751*9880d681SAndroid Build Coastguard Worker 5752*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxd_q_512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) { 5753*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxd_q_512: 5754*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxdq {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero 5757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxdq {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero 5758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxdq {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero 5759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5762*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) 5763*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> zeroinitializer, i8 %x2) 5764*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 -1) 5765*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5766*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5767*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5768*9880d681SAndroid Build Coastguard Worker} 5769*9880d681SAndroid Build Coastguard Worker 5770*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16>, <16 x i32>, i16) 5771*9880d681SAndroid Build Coastguard Worker 5772*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovzxw_d_512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) { 5773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxw_d_512: 5774*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwd {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 5777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwd {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 5778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero 5779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5782*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) 5783*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> zeroinitializer, i16 %x2) 5784*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovzxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 -1) 5785*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5786*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5787*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5788*9880d681SAndroid Build Coastguard Worker} 5789*9880d681SAndroid Build Coastguard Worker 5790*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16>, <8 x i64>, i8) 5791*9880d681SAndroid Build Coastguard Worker 5792*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovzxw_q_512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) { 5793*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxw_q_512: 5794*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwq {{.*#+}} zmm1 {%k1} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 5797*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwq {{.*#+}} zmm2 {%k1} {z} = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 5798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovzxwq {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero 5799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5800*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5801*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5802*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) 5803*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> zeroinitializer, i8 %x2) 5804*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovzxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 -1) 5805*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5806*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5807*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5808*9880d681SAndroid Build Coastguard Worker} 5809*9880d681SAndroid Build Coastguard Worker 5810*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8>, <16 x i32>, i16) 5811*9880d681SAndroid Build Coastguard Worker 5812*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovsxb_d_512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) { 5813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_d_512: 5814*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbd %xmm0, %zmm1 {%k1} 5817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbd %xmm0, %zmm2 {%k1} {z} 5818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbd %xmm0, %zmm0 5819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5820*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5821*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5822*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 %x2) 5823*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> zeroinitializer, i16 %x2) 5824*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxb.d.512(<16 x i8> %x0, <16 x i32> %x1, i16 -1) 5825*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5826*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5827*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5828*9880d681SAndroid Build Coastguard Worker} 5829*9880d681SAndroid Build Coastguard Worker 5830*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8>, <8 x i64>, i8) 5831*9880d681SAndroid Build Coastguard Worker 5832*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxb_q_512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) { 5833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_q_512: 5834*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbq %xmm0, %zmm1 {%k1} 5837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbq %xmm0, %zmm2 {%k1} {z} 5838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxbq %xmm0, %zmm0 5839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5842*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 %x2) 5843*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> zeroinitializer, i8 %x2) 5844*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxb.q.512(<16 x i8> %x0, <8 x i64> %x1, i8 -1) 5845*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5846*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5847*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5848*9880d681SAndroid Build Coastguard Worker} 5849*9880d681SAndroid Build Coastguard Worker 5850*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32>, <8 x i64>, i8) 5851*9880d681SAndroid Build Coastguard Worker 5852*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxd_q_512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) { 5853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxd_q_512: 5854*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxdq %ymm0, %zmm1 {%k1} 5857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxdq %ymm0, %zmm2 {%k1} {z} 5858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxdq %ymm0, %zmm0 5859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5862*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 %x2) 5863*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> zeroinitializer, i8 %x2) 5864*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxd.q.512(<8 x i32> %x0, <8 x i64> %x1, i8 -1) 5865*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5866*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5867*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5868*9880d681SAndroid Build Coastguard Worker} 5869*9880d681SAndroid Build Coastguard Worker 5870*9880d681SAndroid Build Coastguard Worker 5871*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16>, <16 x i32>, i16) 5872*9880d681SAndroid Build Coastguard Worker 5873*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmovsxw_d_512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) { 5874*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxw_d_512: 5875*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwd %ymm0, %zmm1 {%k1} 5878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwd %ymm0, %zmm2 {%k1} {z} 5879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwd %ymm0, %zmm0 5880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 5881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5882*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5883*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 %x2) 5884*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> zeroinitializer, i16 %x2) 5885*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.pmovsxw.d.512(<16 x i16> %x0, <16 x i32> %x1, i16 -1) 5886*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5887*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5888*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5889*9880d681SAndroid Build Coastguard Worker} 5890*9880d681SAndroid Build Coastguard Worker 5891*9880d681SAndroid Build Coastguard Worker 5892*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16>, <8 x i64>, i8) 5893*9880d681SAndroid Build Coastguard Worker 5894*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pmovsxw_q_512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) { 5895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxw_q_512: 5896*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwq %xmm0, %zmm1 {%k1} 5899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwq %xmm0, %zmm2 {%k1} {z} 5900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovsxwq %xmm0, %zmm0 5901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm2, %zmm1, %zmm1 5902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5904*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 %x2) 5905*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> zeroinitializer, i8 %x2) 5906*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pmovsxw.q.512(<8 x i16> %x0, <8 x i64> %x1, i8 -1) 5907*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5908*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5909*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5910*9880d681SAndroid Build Coastguard Worker} 5911*9880d681SAndroid Build Coastguard Worker 5912*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double>, <8 x i64>, <8 x double>, i8) 5913*9880d681SAndroid Build Coastguard Worker 5914*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_permvar_df_512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) { 5915*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_df_512: 5916*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermpd %zmm0, %zmm1, %zmm2 {%k1} 5919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermpd %zmm0, %zmm1, %zmm3 {%k1} {z} 5920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermpd %zmm0, %zmm1, %zmm0 5921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm3, %zmm2, %zmm1 5922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 5923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5924*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 %x3) 5925*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> zeroinitializer, i8 %x3) 5926*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.permvar.df.512(<8 x double> %x0, <8 x i64> %x1, <8 x double> %x2, i8 -1) 5927*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 5928*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 5929*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 5930*9880d681SAndroid Build Coastguard Worker} 5931*9880d681SAndroid Build Coastguard Worker 5932*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64>, <8 x i64>, <8 x i64>, i8) 5933*9880d681SAndroid Build Coastguard Worker 5934*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_permvar_di_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) { 5935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_di_512: 5936*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5938*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermq %zmm0, %zmm1, %zmm2 {%k1} 5939*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermq %zmm0, %zmm1, %zmm3 {%k1} {z} 5940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermq %zmm0, %zmm1, %zmm0 5941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm3, %zmm2, %zmm1 5942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 5943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5944*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) 5945*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> zeroinitializer, i8 %x3) 5946*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.permvar.di.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1) 5947*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 5948*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res3, %res2 5949*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 5950*9880d681SAndroid Build Coastguard Worker} 5951*9880d681SAndroid Build Coastguard Worker 5952*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float>, <16 x i32>, <16 x float>, i16) 5953*9880d681SAndroid Build Coastguard Worker 5954*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_permvar_sf_512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) { 5955*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_sf_512: 5956*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermps %zmm0, %zmm1, %zmm2 {%k1} 5959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermps %zmm0, %zmm1, %zmm3 {%k1} {z} 5960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermps %zmm0, %zmm1, %zmm0 5961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm3, %zmm2, %zmm1 5962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 5963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5964*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 %x3) 5965*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> zeroinitializer, i16 %x3) 5966*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.permvar.sf.512(<16 x float> %x0, <16 x i32> %x1, <16 x float> %x2, i16 -1) 5967*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 5968*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res3, %res2 5969*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 5970*9880d681SAndroid Build Coastguard Worker} 5971*9880d681SAndroid Build Coastguard Worker 5972*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32>, <16 x i32>, <16 x i32>, i16) 5973*9880d681SAndroid Build Coastguard Worker 5974*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_permvar_si_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) { 5975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_si_512: 5976*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5977*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5978*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermd %zmm0, %zmm1, %zmm2 {%k1} 5979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermd %zmm0, %zmm1, %zmm3 {%k1} {z} 5980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermd %zmm0, %zmm1, %zmm0 5981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm3, %zmm2, %zmm1 5982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 5983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 5984*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) 5985*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> zeroinitializer, i16 %x3) 5986*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.permvar.si.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1) 5987*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 5988*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 5989*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 5990*9880d681SAndroid Build Coastguard Worker} 5991*9880d681SAndroid Build Coastguard Worker 5992*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double>, <8 x double>, <8 x i64>, i32, i8, i32) 5993*9880d681SAndroid Build Coastguard Worker 5994*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_fixupimm_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i8 %x4) { 5995*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_pd_512: 5996*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 5997*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 5998*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 5999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $4, %zmm2, %zmm1, %zmm3 {%k1} 6000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm4, %zmm4, %zmm4 6001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $5, %zmm2, %zmm1, %zmm4 {%k1} {z} 6002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $3, {sae}, %zmm2, %zmm1, %zmm0 6003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm4, %zmm3, %zmm1 6004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 6005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6006*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 4, i8 %x4, i32 4) 6007*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> zeroinitializer, <8 x double> %x1, <8 x i64> %x2, i32 5, i8 %x4, i32 4) 6008*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 3, i8 -1, i32 8) 6009*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 6010*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 6011*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 6012*9880d681SAndroid Build Coastguard Worker} 6013*9880d681SAndroid Build Coastguard Worker 6014*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double>, <8 x double>, <8 x i64>, i32, i8, i32) 6015*9880d681SAndroid Build Coastguard Worker 6016*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_maskz_fixupimm_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i8 %x4) { 6017*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_pd_512: 6018*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6021*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $3, %zmm2, %zmm1, %zmm3 {%k1} {z} 6022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm4, %zmm4, %zmm4 6023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $5, %zmm4, %zmm1, %zmm5 {%k1} {z} 6025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmpd $2, {sae}, %zmm2, %zmm1, %zmm0 6026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm5, %zmm3, %zmm1 6027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 6028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6029*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 3, i8 %x4, i32 4) 6030*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> zeroinitializer, i32 5, i8 %x4, i32 4) 6031*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.maskz.fixupimm.pd.512(<8 x double> %x0, <8 x double> %x1, <8 x i64> %x2, i32 2, i8 -1, i32 8) 6032*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 6033*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 6034*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 6035*9880d681SAndroid Build Coastguard Worker} 6036*9880d681SAndroid Build Coastguard Worker 6037*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float>, <4 x float>, <4 x i32>, i32, i8, i32) 6038*9880d681SAndroid Build Coastguard Worker 6039*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_fixupimm_ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i8 %x4) { 6040*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_ss: 6041*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, %xmm2, %xmm1, %xmm3 {%k1} 6046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4 6047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, %xmm4, %xmm1, %xmm5 {%k1} 6049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, {sae}, %xmm2, %xmm1, %xmm0 6050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm5, %xmm3, %xmm1 6051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm1, %xmm0 6052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6053*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 %x4, i32 4) 6054*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> zeroinitializer, i32 5, i8 %x4, i32 4) 6055*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 -1, i32 8) 6056*9880d681SAndroid Build Coastguard Worker %res3 = fadd <4 x float> %res, %res1 6057*9880d681SAndroid Build Coastguard Worker %res4 = fadd <4 x float> %res3, %res2 6058*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res4 6059*9880d681SAndroid Build Coastguard Worker} 6060*9880d681SAndroid Build Coastguard Worker 6061*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float>, <4 x float>, <4 x i32>, i32, i8, i32) 6062*9880d681SAndroid Build Coastguard Worker 6063*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_fixupimm_ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i8 %x4) { 6064*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_ss: 6065*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, %xmm2, %xmm1, %xmm3 {%k1} {z} 6070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm4 6071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, %xmm2, %xmm1, %xmm4 6072*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2 6073*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmss $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1} {z} 6074*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm3, %xmm0 6075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm4, %xmm0, %xmm0 6076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6077*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 %x4, i32 4) 6078*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> zeroinitializer, i32 5, i8 %x4, i32 8) 6079*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.maskz.fixupimm.ss(<4 x float> %x0, <4 x float> %x1, <4 x i32> %x2, i32 5, i8 -1, i32 4) 6080*9880d681SAndroid Build Coastguard Worker %res3 = fadd <4 x float> %res, %res1 6081*9880d681SAndroid Build Coastguard Worker %res4 = fadd <4 x float> %res3, %res2 6082*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res4 6083*9880d681SAndroid Build Coastguard Worker} 6084*9880d681SAndroid Build Coastguard Worker 6085*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float>, <16 x float>, <16 x i32>, i32, i16, i32) 6086*9880d681SAndroid Build Coastguard Worker 6087*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_fixupimm_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i16 %x4) { 6088*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_ps_512: 6089*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6092*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, %zmm2, %zmm1, %zmm3 {%k1} 6093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm4, %zmm4, %zmm4 6094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6095*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, %zmm4, %zmm1, %zmm5 {%k1} 6096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, {sae}, %zmm2, %zmm1, %zmm0 6097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm5, %zmm3, %zmm1 6098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 6099*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6100*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 %x4, i32 4) 6101*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> zeroinitializer, i32 5, i16 %x4, i32 4) 6102*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 -1, i32 8) 6103*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 6104*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res3, %res2 6105*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 6106*9880d681SAndroid Build Coastguard Worker} 6107*9880d681SAndroid Build Coastguard Worker 6108*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float>, <16 x float>, <16 x i32>, i32, i16, i32) 6109*9880d681SAndroid Build Coastguard Worker 6110*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_maskz_fixupimm_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i16 %x4) { 6111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_ps_512: 6112*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, %zmm2, %zmm1, %zmm3 {%k1} {z} 6116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm4 6117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, %zmm2, %zmm1, %zmm4 6118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %zmm2, %zmm2, %zmm2 6119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmps $5, {sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} 6120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm3, %zmm0 6121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm4, %zmm0, %zmm0 6122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6123*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 %x4, i32 4) 6124*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> zeroinitializer, i32 5, i16 %x4, i32 8) 6125*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.maskz.fixupimm.ps.512(<16 x float> %x0, <16 x float> %x1, <16 x i32> %x2, i32 5, i16 -1, i32 4) 6126*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 6127*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res3, %res2 6128*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 6129*9880d681SAndroid Build Coastguard Worker} 6130*9880d681SAndroid Build Coastguard Worker 6131*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double>, <2 x double>, <2 x i64>, i32, i8, i32) 6132*9880d681SAndroid Build Coastguard Worker 6133*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_fixupimm_sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i8 %x4) { 6134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fixupimm_sd: 6135*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, %xmm2, %xmm1, %xmm3 {%k1} 6140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm4 6141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, %xmm2, %xmm1, %xmm4 6142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2 6143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1} 6144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm3, %xmm0 6145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm4, %xmm0, %xmm0 6146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6147*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 4) 6148*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> zeroinitializer, i32 5, i8 %x4, i32 8) 6149*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 -1, i32 4) 6150*9880d681SAndroid Build Coastguard Worker %res3 = fadd <2 x double> %res, %res1 6151*9880d681SAndroid Build Coastguard Worker %res4 = fadd <2 x double> %res3, %res2 6152*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res4 6153*9880d681SAndroid Build Coastguard Worker} 6154*9880d681SAndroid Build Coastguard Worker 6155*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double>, <2 x double>, <2 x i64>, i32, i8, i32) 6156*9880d681SAndroid Build Coastguard Worker 6157*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_fixupimm_sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i8 %x4) { 6158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_fixupimm_sd: 6159*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, %xmm2, %xmm1, %xmm3 {%k1} {z} 6164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxor %xmm4, %xmm4, %xmm4 6165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, {sae}, %xmm4, %xmm1, %xmm5 {%k1} {z} 6167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfixupimmsd $5, {sae}, %xmm2, %xmm1, %xmm0 {%k1} {z} 6168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm5, %xmm3, %xmm1 6169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm1, %xmm0 6170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6171*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 4) 6172*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> zeroinitializer, i32 5, i8 %x4, i32 8) 6173*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.maskz.fixupimm.sd(<2 x double> %x0, <2 x double> %x1, <2 x i64> %x2, i32 5, i8 %x4, i32 8) 6174*9880d681SAndroid Build Coastguard Worker %res3 = fadd <2 x double> %res, %res1 6175*9880d681SAndroid Build Coastguard Worker %res4 = fadd <2 x double> %res3, %res2 6176*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res4 6177*9880d681SAndroid Build Coastguard Worker} 6178*9880d681SAndroid Build Coastguard Worker 6179*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32>, <16 x i32>, i16 %x2) 6180*9880d681SAndroid Build Coastguard Worker 6181*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestnm_d_512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) { 6182*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_d_512: 6183*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestnmd %zmm1, %zmm0, %k0 {%k1} 6186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 6187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestnmd %zmm1, %zmm0, %k0 6188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 6189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 6190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 6191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6192*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32> %x0, <16 x i32> %x1, i16 %x2) 6193*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.ptestnm.d.512(<16 x i32> %x0, <16 x i32> %x1, i16-1) 6194*9880d681SAndroid Build Coastguard Worker %res2 = add i16 %res, %res1 6195*9880d681SAndroid Build Coastguard Worker ret i16 %res2 6196*9880d681SAndroid Build Coastguard Worker} 6197*9880d681SAndroid Build Coastguard Worker 6198*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64>, <8 x i64>, i8 %x2) 6199*9880d681SAndroid Build Coastguard Worker 6200*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_ptestnm_q_512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) { 6201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_q_512: 6202*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestnmq %zmm1, %zmm0, %k0 {%k1} 6205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 6206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vptestnmq %zmm1, %zmm0, %k0 6207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 6208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addb %cl, %al 6209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 6210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6211*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64> %x0, <8 x i64> %x1, i8 %x2) 6212*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.ptestnm.q.512(<8 x i64> %x0, <8 x i64> %x1, i8-1) 6213*9880d681SAndroid Build Coastguard Worker %res2 = add i8 %res, %res1 6214*9880d681SAndroid Build Coastguard Worker ret i8 %res2 6215*9880d681SAndroid Build Coastguard Worker} 6216*9880d681SAndroid Build Coastguard Worker 6217*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pbroadcastd_gpr_512(i32 %x0, <16 x i32> %x1, i16 %mask) { 6218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcastd_gpr_512: 6219*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 6221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastd %edi, %zmm0 {%k1} 6222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastd %edi, %zmm1 {%k1} {z} 6223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastd %edi, %zmm2 6224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 6225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 6226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6227*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> %x1, i16 -1) 6228*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> %x1, i16 %mask) 6229*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32 %x0, <16 x i32> zeroinitializer, i16 %mask) 6230*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 6231*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res2, %res3 6232*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 6233*9880d681SAndroid Build Coastguard Worker} 6234*9880d681SAndroid Build Coastguard Worker 6235*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pbroadcast.d.gpr.512(i32, <16 x i32>, i16) 6236*9880d681SAndroid Build Coastguard Worker 6237*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_pbroadcastq_gpr_512(i64 %x0, <8 x i64> %x1, i8 %mask) { 6238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcastq_gpr_512: 6239*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 6241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastq %rdi, %zmm0 {%k1} 6242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastq %rdi, %zmm1 {%k1} {z} 6243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpbroadcastq %rdi, %zmm2 6244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 6245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 6246*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6247*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> %x1,i8 -1) 6248*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> %x1,i8 %mask) 6249*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64 %x0, <8 x i64> zeroinitializer,i8 %mask) 6250*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 6251*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res2, %res3 6252*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 6253*9880d681SAndroid Build Coastguard Worker} 6254*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.pbroadcast.q.gpr.512(i64, <8 x i64>, i8) 6255*9880d681SAndroid Build Coastguard Worker 6256*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) 6257*9880d681SAndroid Build Coastguard Worker 6258*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){ 6259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_sd: 6260*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd132sd %xmm1, %xmm2, %xmm3 {%k1} 6265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm4 6266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd %xmm2, %xmm0, %xmm4 6267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd132sd {rz-sae}, %xmm1, %xmm2, %xmm5 {%k1} 6269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1 6270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm3, %xmm4, %xmm0 6271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm5, %xmm1, %xmm1 6272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm1, %xmm0, %xmm0 6273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6274*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 4) 6275*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4) 6276*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 3) 6277*9880d681SAndroid Build Coastguard Worker %res3 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3) 6278*9880d681SAndroid Build Coastguard Worker %res4 = fadd <2 x double> %res, %res1 6279*9880d681SAndroid Build Coastguard Worker %res5 = fadd <2 x double> %res2, %res3 6280*9880d681SAndroid Build Coastguard Worker %res6 = fadd <2 x double> %res4, %res5 6281*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res6 6282*9880d681SAndroid Build Coastguard Worker} 6283*9880d681SAndroid Build Coastguard Worker 6284*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) 6285*9880d681SAndroid Build Coastguard Worker 6286*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){ 6287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ss: 6288*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm3 6292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd132ss %xmm1, %xmm2, %xmm3 {%k1} 6293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm4 6294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss %xmm2, %xmm0, %xmm4 6295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm0, %zmm5 6296*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd132ss {rz-sae}, %xmm1, %xmm2, %xmm5 {%k1} 6297*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss {rz-sae}, %xmm2, %xmm0, %xmm1 6298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm3, %xmm4, %xmm0 6299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm5, %xmm1, %xmm1 6300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm1, %xmm0, %xmm0 6301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6302*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 4) 6303*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4) 6304*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 3) 6305*9880d681SAndroid Build Coastguard Worker %res3 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3) 6306*9880d681SAndroid Build Coastguard Worker %res4 = fadd <4 x float> %res, %res1 6307*9880d681SAndroid Build Coastguard Worker %res5 = fadd <4 x float> %res2, %res3 6308*9880d681SAndroid Build Coastguard Worker %res6 = fadd <4 x float> %res4, %res5 6309*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res6 6310*9880d681SAndroid Build Coastguard Worker} 6311*9880d681SAndroid Build Coastguard Worker 6312*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) 6313*9880d681SAndroid Build Coastguard Worker 6314*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){ 6315*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_sd: 6316*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 6320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd %xmm2, %xmm0, %xmm3 {%k1} {z} 6321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1 {%k1} {z} 6322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm1, %xmm3, %xmm0 6323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6324*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4) 6325*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3) 6326*9880d681SAndroid Build Coastguard Worker %res2 = fadd <2 x double> %res, %res1 6327*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res2 6328*9880d681SAndroid Build Coastguard Worker} 6329*9880d681SAndroid Build Coastguard Worker 6330*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) 6331*9880d681SAndroid Build Coastguard Worker 6332*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){ 6333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ss: 6334*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss %xmm2, %xmm0, %xmm1 {%k1} {z} 6338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 6339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6340*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4) 6341*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3) 6342*9880d681SAndroid Build Coastguard Worker %res2 = fadd <4 x float> %res, %res1 6343*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 6344*9880d681SAndroid Build Coastguard Worker} 6345*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) 6346*9880d681SAndroid Build Coastguard Worker 6347*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmadd_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3,i32 %x4 ){ 6348*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_sd: 6349*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 6353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd231sd %xmm1, %xmm0, %xmm3 {%k1} 6354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm4 6355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd %xmm2, %xmm0, %xmm4 6356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm5 6357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd231sd {rz-sae}, %xmm1, %xmm0, %xmm5 {%k1} 6358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213sd {rz-sae}, %xmm2, %xmm0, %xmm1 6359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm3, %xmm4, %xmm0 6360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm5, %xmm1, %xmm1 6361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm1, %xmm0, %xmm0 6362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6363*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 4) 6364*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 4) 6365*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1, i32 3) 6366*9880d681SAndroid Build Coastguard Worker %res3 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3, i32 3) 6367*9880d681SAndroid Build Coastguard Worker %res4 = fadd <2 x double> %res, %res1 6368*9880d681SAndroid Build Coastguard Worker %res5 = fadd <2 x double> %res2, %res3 6369*9880d681SAndroid Build Coastguard Worker %res6 = fadd <2 x double> %res4, %res5 6370*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res6 6371*9880d681SAndroid Build Coastguard Worker} 6372*9880d681SAndroid Build Coastguard Worker 6373*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) 6374*9880d681SAndroid Build Coastguard Worker 6375*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmadd_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3,i32 %x4 ){ 6376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ss: 6377*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 6379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 6380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm3 6381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd231ss %xmm1, %xmm0, %xmm3 {%k1} 6382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm4 6383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss %xmm2, %xmm0, %xmm4 6384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm2, %zmm5 6385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd231ss {rz-sae}, %xmm1, %xmm0, %xmm5 {%k1} 6386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss {rz-sae}, %xmm2, %xmm0, %xmm1 6387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm3, %xmm4, %xmm0 6388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm5, %xmm1, %xmm1 6389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm1, %xmm0, %xmm0 6390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6391*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 4) 6392*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 4) 6393*9880d681SAndroid Build Coastguard Worker %res2 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1, i32 3) 6394*9880d681SAndroid Build Coastguard Worker %res3 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3, i32 3) 6395*9880d681SAndroid Build Coastguard Worker %res4 = fadd <4 x float> %res, %res1 6396*9880d681SAndroid Build Coastguard Worker %res5 = fadd <4 x float> %res2, %res3 6397*9880d681SAndroid Build Coastguard Worker %res6 = fadd <4 x float> %res4, %res5 6398*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res6 6399*9880d681SAndroid Build Coastguard Worker} 6400*9880d681SAndroid Build Coastguard Worker 6401*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1, float *%ptr_b ,i8 %x3,i32 %x4) { 6402*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ss_rm: 6403*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %esi 6405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 6406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd231ss (%rdi), %xmm0, %xmm1 {%k1} 6407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 6408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6409*9880d681SAndroid Build Coastguard Worker %q = load float, float* %ptr_b 6410*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <4 x float> undef, float %q, i32 0 6411*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %x0, <4 x float> %vecinit.i, <4 x float> %x1, i8 %x3, i32 4) 6412*9880d681SAndroid Build Coastguard Worker ret < 4 x float> %res 6413*9880d681SAndroid Build Coastguard Worker} 6414*9880d681SAndroid Build Coastguard Worker 6415*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1,float *%ptr_b ,i8 %x3,i32 %x4) { 6416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ss_rm: 6417*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %esi 6419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %esi, %k1 6420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd132ss (%rdi), %xmm1, %xmm0 {%k1} 6421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6422*9880d681SAndroid Build Coastguard Worker %q = load float, float* %ptr_b 6423*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <4 x float> undef, float %q, i32 0 6424*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %x0,<4 x float> %vecinit.i, <4 x float> %x1, i8 %x3, i32 4) 6425*9880d681SAndroid Build Coastguard Worker ret < 4 x float> %res 6426*9880d681SAndroid Build Coastguard Worker} 6427*9880d681SAndroid Build Coastguard Worker 6428*9880d681SAndroid Build Coastguard Worker 6429*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmadd_ss_rm(<4 x float> %x0, <4 x float> %x1,float *%ptr_b ,i8 %x3,i32 %x4) { 6430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ss_rm: 6431*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 6432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kxorw %k0, %k0, %k1 6433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfmadd213ss (%rdi), %xmm0, %xmm1 {%k1} {z} 6434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 6435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 6436*9880d681SAndroid Build Coastguard Worker %q = load float, float* %ptr_b 6437*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <4 x float> undef, float %q, i32 0 6438*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %vecinit.i, i8 0, i32 4) 6439*9880d681SAndroid Build Coastguard Worker ret < 4 x float> %res 6440*9880d681SAndroid Build Coastguard Worker} 6441