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 -mattr=+avx512dq | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double>, <8 x i64>, i8, i32) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_pd2qq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2qq_512: 8*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2qq {ru-sae}, %zmm0, %zmm1 {%k1} 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2qq {rn-sae}, %zmm0, %zmm0 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 14*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 2) 15*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 0) 16*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 17*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double>, <8 x i64>, i8, i32) 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_pd2uqq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) { 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_pd2uqq_512: 24*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2uqq {ru-sae}, %zmm0, %zmm1 {%k1} 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtpd2uqq {rn-sae}, %zmm0, %zmm0 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 30*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 2) 31*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 0) 32*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 33*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float>, <8 x i64>, i8, i32) 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_ps2qq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) { 39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2qq_512: 40*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2qq {ru-sae}, %ymm0, %zmm1 {%k1} 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2qq {rn-sae}, %ymm0, %zmm0 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 46*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 2) 47*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 0) 48*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 49*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float>, <8 x i64>, i8, i32) 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvt_ps2uqq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_ps2uqq_512: 56*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2uqq {ru-sae}, %ymm0, %zmm1 {%k1} 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtps2uqq {rn-sae}, %ymm0, %zmm0 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 62*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 2) 63*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvtps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 0) 64*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 65*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64>, <8 x double>, i8, i32) 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_qq2pd_512(<8 x i64> %x0, <8 x double> %x1, i8 %x2) { 71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2pd_512: 72*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtqq2pd %zmm0, %zmm1 {%k1} 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtqq2pd {rn-sae}, %zmm0, %zmm0 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 78*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 %x2, i32 4) 79*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 -1, i32 0) 80*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 81*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64>, <8 x float>, i8, i32) 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_qq2ps_512(<8 x i64> %x0, <8 x float> %x1, i8 %x2) { 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_qq2ps_512: 88*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtqq2ps %zmm0, %ymm1 {%k1} 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtqq2ps {rn-sae}, %zmm0, %ymm0 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %ymm0, %ymm1, %ymm0 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 94*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 %x2, i32 4) 95*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 -1, i32 0) 96*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x float> %res, %res1 97*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res2 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double>, <8 x i64>, i8, i32) 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_pd2qq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) { 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2qq_512: 104*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2qq %zmm0, %zmm1 {%k1} 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2qq {sae}, %zmm0, %zmm0 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 110*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 4) 111*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2qq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 8) 112*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 113*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double>, <8 x i64>, i8, i32) 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_pd2uqq_512(<8 x double> %x0, <8 x i64> %x1, i8 %x2) { 119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_pd2uqq_512: 120*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2uqq %zmm0, %zmm1 {%k1} 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttpd2uqq {sae}, %zmm0, %zmm0 124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 126*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 %x2, i32 4) 127*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttpd2uqq.512(<8 x double> %x0, <8 x i64> %x1, i8 -1, i32 8) 128*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 129*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float>, <8 x i64>, i8, i32) 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_ps2qq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) { 135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2qq_512: 136*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2qq %ymm0, %zmm1 {%k1} 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2qq {sae}, %ymm0, %zmm0 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 142*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 4) 143*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttps2qq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 8) 144*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 145*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 146*9880d681SAndroid Build Coastguard Worker} 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float>, <8 x i64>, i8, i32) 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_cvtt_ps2uqq_512(<8 x float> %x0, <8 x i64> %x1, i8 %x2) { 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvtt_ps2uqq_512: 152*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2uqq %ymm0, %zmm1 {%k1} 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvttps2uqq {sae}, %ymm0, %zmm0 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm1, %zmm0 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 158*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 %x2, i32 4) 159*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.cvttps2uqq.512(<8 x float> %x0, <8 x i64> %x1, i8 -1, i32 8) 160*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 161*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64>, <8 x double>, i8, i32) 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_cvt_uqq2pd_512(<8 x i64> %x0, <8 x double> %x1, i8 %x2) { 167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2pd_512: 168*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtuqq2pd %zmm0, %zmm1 {%k1} 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtuqq2pd {rn-sae}, %zmm0, %zmm0 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 174*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 %x2, i32 4) 175*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.cvtuqq2pd.512(<8 x i64> %x0, <8 x double> %x1, i8 -1, i32 0) 176*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 177*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 178*9880d681SAndroid Build Coastguard Worker} 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64>, <8 x float>, i8, i32) 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_cvt_uqq2ps_512(<8 x i64> %x0, <8 x float> %x1, i8 %x2) { 183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_cvt_uqq2ps_512: 184*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtuqq2ps %zmm0, %ymm1 {%k1} 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vcvtuqq2ps {rn-sae}, %zmm0, %ymm0 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %ymm0, %ymm1, %ymm0 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 190*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 %x2, i32 4) 191*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x float> @llvm.x86.avx512.mask.cvtuqq2ps.512(<8 x i64> %x0, <8 x float> %x1, i8 -1, i32 0) 192*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x float> %res, %res1 193*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res2 194*9880d681SAndroid Build Coastguard Worker} 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double>, i32, <8 x double>, i8, i32) 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_reduce_pd_512(<8 x double> %x0, <8 x double> %x2, i8 %x3) { 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_pd_512: 200*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducepd $8, %zmm0, %zmm1 {%k1} 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducepd $4, {sae}, %zmm0, %zmm0 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 206*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double> %x0, i32 8, <8 x double> %x2, i8 %x3, i32 4) 207*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.reduce.pd.512(<8 x double> %x0, i32 4, <8 x double> %x2, i8 -1, i32 8) 208*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 209*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 210*9880d681SAndroid Build Coastguard Worker} 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float>, i32, <16 x float>, i16, i32) 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_reduce_ps_512(<16 x float> %x0, <16 x float> %x2, i16 %x3) { 215*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ps_512: 216*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreduceps $44, {sae}, %zmm0, %zmm1 {%k1} 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreduceps $11, %zmm0, %zmm0 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 222*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float> %x0, i32 44, <16 x float> %x2, i16 %x3, i32 8) 223*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.reduce.ps.512(<16 x float> %x0, i32 11, <16 x float> %x2, i16 -1, i32 4) 224*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 225*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double>, <8 x double>, i32, <8 x double>, i8, i32) 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_range_pd_512(<8 x double> %x0, <8 x double> %x1, <8 x double> %x3, i8 %x4) { 231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_pd_512: 232*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangepd $8, %zmm1, %zmm0, %zmm2 {%k1} 235*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangepd $4, {sae}, %zmm1, %zmm0, %zmm0 236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 238*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double> %x0, <8 x double> %x1, i32 8, <8 x double> %x3, i8 %x4, i32 4) 239*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.range.pd.512(<8 x double> %x0, <8 x double> %x1, i32 4, <8 x double> %x3, i8 -1, i32 8) 240*9880d681SAndroid Build Coastguard Worker %res2 = fadd <8 x double> %res, %res1 241*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res2 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float>, <16 x float>, i32, <16 x float>, i16, i32) 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_range_ps_512(<16 x float> %x0, <16 x float> %x1, <16 x float> %x3, i16 %x4) { 247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ps_512: 248*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangeps $88, %zmm1, %zmm0, %zmm2 {%k1} 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangeps $4, {sae}, %zmm1, %zmm0, %zmm0 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 254*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float> %x0, <16 x float> %x1, i32 88, <16 x float> %x3, i16 %x4, i32 4) 255*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.range.ps.512(<16 x float> %x0, <16 x float> %x1, i32 4, <16 x float> %x3, i16 -1, i32 8) 256*9880d681SAndroid Build Coastguard Worker %res2 = fadd <16 x float> %res, %res1 257*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res2 258*9880d681SAndroid Build Coastguard Worker} 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float>, <4 x float>,<4 x float>, i8, i32, i32) 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_reduce_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4) { 263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_ss: 264*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducess $4, %xmm1, %xmm0, %xmm2 {%k1} 268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducess $4, {sae}, %xmm1, %xmm0, %xmm0 269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm2, %xmm0 270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 271*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4, i32 4, i32 4) 272*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.reduce.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 -1, i32 4, i32 8) 273*9880d681SAndroid Build Coastguard Worker %res2 = fadd <4 x float> %res, %res1 274*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res2 275*9880d681SAndroid Build Coastguard Worker} 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float>, <4 x float>,<4 x float>, i8, i32, i32) 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_range_ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4) { 280*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_ss: 281*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangess $4, {sae}, %xmm1, %xmm0, %xmm2 {%k1} 285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangess $4, {sae}, %xmm1, %xmm0, %xmm0 286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %xmm0, %xmm2, %xmm0 287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 288*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 %x4, i32 4, i32 8) 289*9880d681SAndroid Build Coastguard Worker %res1 = call <4 x float> @llvm.x86.avx512.mask.range.ss(<4 x float> %x0, <4 x float> %x1, <4 x float> %x3, i8 -1, i32 4, i32 8) 290*9880d681SAndroid Build Coastguard Worker %res2 = fadd <4 x float> %res, %res1 291*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res2 292*9880d681SAndroid Build Coastguard Worker} 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double>, <2 x double>,<2 x double>, i8, i32, i32) 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_reduce_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4) { 297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_reduce_sd: 298*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducesd $4, %xmm1, %xmm0, %xmm2 {%k1} 302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vreducesd $4, {sae}, %xmm1, %xmm0, %xmm0 303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm2, %xmm0 304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 305*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4, i32 4, i32 4) 306*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.reduce.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 -1, i32 4, i32 8) 307*9880d681SAndroid Build Coastguard Worker %res2 = fadd <2 x double> %res, %res1 308*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res2 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double>, <2 x double>,<2 x double>, i8, i32, i32) 312*9880d681SAndroid Build Coastguard Worker 313*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_range_sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4) { 314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_range_sd: 315*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangesd $4, %xmm1, %xmm0, %xmm2 {%k1} 319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vrangesd $4, {sae}, %xmm1, %xmm0, %xmm0 320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm2, %xmm0 321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 322*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 %x4, i32 4, i32 4) 323*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.range.sd(<2 x double> %x0, <2 x double> %x1, <2 x double> %x3, i8 -1, i32 4, i32 8) 324*9880d681SAndroid Build Coastguard Worker %res2 = fadd <2 x double> %res, %res1 325*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res2 326*9880d681SAndroid Build Coastguard Worker} 327*9880d681SAndroid Build Coastguard Worker 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double>, i32, <2 x double>, i8) 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vextractf64x2_512(<8 x double> %x0, <2 x double> %x2, i8 %x3) { 332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vextractf64x2_512: 333*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf64x2 $1, %zmm0, %xmm1 {%k1} 336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf64x2 $1, %zmm0, %xmm2 {%k1} {z} 337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf64x2 $1, %zmm0, %xmm0 338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm1, %xmm0 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %xmm0, %xmm2, %xmm0 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 341*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> %x2, i8 %x3) 342*9880d681SAndroid Build Coastguard Worker %res2 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 %x3) 343*9880d681SAndroid Build Coastguard Worker %res1 = call <2 x double> @llvm.x86.avx512.mask.vextractf64x2.512(<8 x double> %x0,i32 1, <2 x double> zeroinitializer, i8 -1) 344*9880d681SAndroid Build Coastguard Worker %res3 = fadd <2 x double> %res, %res1 345*9880d681SAndroid Build Coastguard Worker %res4 = fadd <2 x double> %res2, %res3 346*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res4 347*9880d681SAndroid Build Coastguard Worker} 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float>, i32, <8 x float>, i8) 350*9880d681SAndroid Build Coastguard Worker 351*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vextractf32x8(<16 x float> %x0, <8 x float> %x2, i8 %x3) { 352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vextractf32x8: 353*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf32x8 $1, %zmm0, %ymm1 {%k1} 356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf32x8 $1, %zmm0, %ymm2 {%k1} {z} 357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vextractf32x8 $1, %zmm0, %ymm0 358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %ymm0, %ymm1, %ymm0 359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %ymm0, %ymm2, %ymm0 360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 361*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> %x2, i8 %x3) 362*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> zeroinitializer, i8 %x3) 363*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x float> @llvm.x86.avx512.mask.vextractf32x8.512(<16 x float> %x0,i32 1, <8 x float> zeroinitializer, i8 -1) 364*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x float> %res, %res1 365*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x float> %res2, %res3 366*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res4 367*9880d681SAndroid Build Coastguard Worker} 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float>, <8 x float>, i32, <16 x float>, i16) 370*9880d681SAndroid Build Coastguard Worker 371*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_insertf32x8_512(<16 x float> %x0, <8 x float> %x1, <16 x float> %x3, i16 %x4) { 372*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf32x8_512: 373*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x8 $1, %ymm1, %zmm0, %zmm2 {%k1} 376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x8 $1, %ymm1, %zmm0, %zmm3 {%k1} {z} 377*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf32x8 $1, %ymm1, %zmm0, %zmm0 378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm3, %zmm2, %zmm1 379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 381*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> %x3, i16 %x4) 382*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> zeroinitializer, i16 %x4) 383*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.insertf32x8.512(<16 x float> %x0, <8 x float> %x1, i32 1, <16 x float> %x3, i16 -1) 384*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 385*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res2, %res3 386*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 387*9880d681SAndroid Build Coastguard Worker} 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double>, <2 x double>, i32, <8 x double>, i8) 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_insertf64x2_512(<8 x double> %x0, <2 x double> %x1,<8 x double> %x3, i8 %x4) { 392*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_insertf64x2_512: 393*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x2 $1, %xmm1, %zmm0, %zmm2 {%k1} 396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x2 $1, %xmm1, %zmm0, %zmm3 {%k1} {z} 397*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinsertf64x2 $1, %xmm1, %zmm0, %zmm0 398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm3, %zmm2, %zmm1 399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm1, %zmm0 400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 401*9880d681SAndroid Build Coastguard Worker %res = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> %x3, i8 %x4) 402*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> zeroinitializer, i8 %x4) 403*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.insertf64x2.512(<8 x double> %x0, <2 x double> %x1, i32 1, <8 x double> %x3, i8 -1) 404*9880d681SAndroid Build Coastguard Worker %res3 = fadd <8 x double> %res, %res1 405*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res3, %res2 406*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res4 407*9880d681SAndroid Build Coastguard Worker} 408*9880d681SAndroid Build Coastguard Worker 409*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32>, <8 x i32>, i32, <16 x i32>, i16) 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_inserti32x8_512(<16 x i32> %x0, <8 x i32> %x1, <16 x i32> %x3, i16 %x4) { 412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti32x8_512: 413*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm2 {%k1} 416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm3 {%k1} {z} 417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti32x8 $1, %ymm1, %zmm0, %zmm0 418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm3, %zmm2, %zmm1 419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 421*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> %x3, i16 %x4) 422*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> zeroinitializer, i16 %x4) 423*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.inserti32x8.512(<16 x i32> %x0, <8 x i32> %x1, i32 1, <16 x i32> %x3, i16 -1) 424*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 425*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 426*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 427*9880d681SAndroid Build Coastguard Worker} 428*9880d681SAndroid Build Coastguard Worker 429*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64>, <2 x i64>, i32, <8 x i64>, i8) 430*9880d681SAndroid Build Coastguard Worker 431*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_inserti64x2_512(<8 x i64> %x0, <2 x i64> %x1, <8 x i64> %x3, i8 %x4) { 432*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_inserti64x2_512: 433*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x2 $1, %xmm1, %zmm0, %zmm2 {%k1} 436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x2 $1, %xmm1, %zmm0, %zmm3 {%k1} {z} 437*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vinserti64x2 $1, %xmm1, %zmm0, %zmm0 438*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm3, %zmm2, %zmm1 439*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm0 440*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 441*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> %x3, i8 %x4) 442*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> zeroinitializer, i8 %x4) 443*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.inserti64x2.512(<8 x i64> %x0, <2 x i64> %x1, i32 1, <8 x i64> %x3, i8 -1) 444*9880d681SAndroid Build Coastguard Worker %res3 = add <8 x i64> %res, %res1 445*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res2, %res3 446*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res4 447*9880d681SAndroid Build Coastguard Worker} 448*9880d681SAndroid Build Coastguard Worker 449*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double>, i32, i8) 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_pd_512(<8 x double> %x0, i8 %x1) { 452*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_pd_512: 453*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclasspd $2, %zmm0, %k0 {%k1} 456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %k0, %ecx 457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclasspd $4, %zmm0, %k0 458*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %k0, %eax 459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addb %cl, %al 460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 462*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double> %x0, i32 2, i8 %x1) 463*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.fpclass.pd.512(<8 x double> %x0, i32 4, i8 -1) 464*9880d681SAndroid Build Coastguard Worker %res2 = add i8 %res, %res1 465*9880d681SAndroid Build Coastguard Worker ret i8 %res2 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float>, i32, i16) 468*9880d681SAndroid Build Coastguard Worker 469*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_mask_fpclass_ps_512(<16 x float> %x0, i16 %x1) { 470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ps_512: 471*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclassps $4, %zmm0, %k0 {%k1} 474*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclassps $4, %zmm0, %k0 476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl %ecx, %eax 478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 480*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float> %x0, i32 4, i16 %x1) 481*9880d681SAndroid Build Coastguard Worker %res1 = call i16 @llvm.x86.avx512.mask.fpclass.ps.512(<16 x float> %x0, i32 4, i16 -1) 482*9880d681SAndroid Build Coastguard Worker %res2 = add i16 %res, %res1 483*9880d681SAndroid Build Coastguard Worker ret i16 %res2 484*9880d681SAndroid Build Coastguard Worker} 485*9880d681SAndroid Build Coastguard Worker 486*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double>, i32, i8) 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_sd(<2 x double> %x0, i8 %x1) { 489*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_sd: 490*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclasssd $2, %xmm0, %k0 {%k1} 494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 495*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testb %al, %al 496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je LBB28_2 497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## BB#1: 498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb $-1, %al 499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LBB28_2: 500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclasssd $4, %xmm0, %k0 501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testb %cl, %cl 503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je LBB28_4 504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## BB#3: 505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb $-1, %cl 506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LBB28_4: 507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addb %cl, %al 508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 510*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double> %x0, i32 2, i8 %x1) 511*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.fpclass.sd(<2 x double> %x0, i32 4, i8 -1) 512*9880d681SAndroid Build Coastguard Worker %res2 = add i8 %res, %res1 513*9880d681SAndroid Build Coastguard Worker ret i8 %res2 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float>, i32, i8) 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Workerdefine i8 @test_int_x86_avx512_mask_fpclass_ss(<4 x float> %x0, i8 %x1) { 519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_fpclass_ss: 520*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclassss $4, %xmm0, %k0 {%k1} 524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testb %al, %al 526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je LBB29_2 527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## BB#1: 528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb $-1, %al 529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LBB29_2: 530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfpclassss $4, %xmm0, %k0 531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %ecx 532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testb %cl, %cl 533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je LBB29_4 534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## BB#3: 535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb $-1, %cl 536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LBB29_4: 537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addb %cl, %al 538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 540*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float> %x0, i32 4, i8 %x1) 541*9880d681SAndroid Build Coastguard Worker %res1 = call i8 @llvm.x86.avx512.mask.fpclass.ss(<4 x float> %x0, i32 4, i8 -1) 542*9880d681SAndroid Build Coastguard Worker %res2 = add i8 %res, %res1 543*9880d681SAndroid Build Coastguard Worker ret i8 %res2 544*9880d681SAndroid Build Coastguard Worker} 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float>, <16 x float>, i16) 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x2_512(<4 x float> %x0, <16 x float> %x2, i16 %x3) { 549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x2_512: 550*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcastf32x2 %xmm0, %zmm1 {%k1} 553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcastf32x2 %xmm0, %zmm2 {%k1} {z} 554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcastf32x2 %xmm0, %zmm0 555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm2, %zmm1, %zmm1 556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm1, %zmm0 557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 558*9880d681SAndroid Build Coastguard Worker %res = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float> %x0, <16 x float> %x2, i16 %x3) 559*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float> %x0, <16 x float> zeroinitializer, i16 %x3) 560*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x2.512(<4 x float> %x0, <16 x float> %x2, i16 -1) 561*9880d681SAndroid Build Coastguard Worker %res3 = fadd <16 x float> %res, %res1 562*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res3, %res2 563*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res4 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32>, <16 x i32>, i16) 567*9880d681SAndroid Build Coastguard Worker 568*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x2_512(<4 x i32> %x0, <16 x i32> %x2, i16 %x3) { 569*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x2_512: 570*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcasti32x2 %xmm0, %zmm1 {%k1} 573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcasti32x2 %xmm0, %zmm2 {%k1} {z} 574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vbroadcasti32x2 %xmm0, %zmm0 575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm2, %zmm1, %zmm1 576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm1, %zmm0 577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 578*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32> %x0, <16 x i32> %x2, i16 %x3) 579*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32> %x0, <16 x i32> zeroinitializer, i16 %x3) 580*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x2.512(<4 x i32> %x0, <16 x i32> %x2, i16 -1) 581*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i32> %res, %res1 582*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res3, %res2 583*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res4 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Worker 586*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.cvtd2mask.512(<16 x i32>) 587*9880d681SAndroid Build Coastguard Worker 588*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_cvtd2mask_512(<16 x i32> %x0) { 589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtd2mask_512: 590*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovd2m %zmm0, %k0 592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 593*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 594*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 595*9880d681SAndroid Build Coastguard Worker %res = call i16 @llvm.x86.avx512.cvtd2mask.512(<16 x i32> %x0) 596*9880d681SAndroid Build Coastguard Worker ret i16 %res 597*9880d681SAndroid Build Coastguard Worker} 598*9880d681SAndroid Build Coastguard Worker 599*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtq2mask.512(<8 x i64>) 600*9880d681SAndroid Build Coastguard Worker 601*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtq2mask_512(<8 x i64> %x0) { 602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtq2mask_512: 603*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovq2m %zmm0, %k0 605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %k0, %eax 606*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 608*9880d681SAndroid Build Coastguard Worker %res = call i8 @llvm.x86.avx512.cvtq2mask.512(<8 x i64> %x0) 609*9880d681SAndroid Build Coastguard Worker ret i8 %res 610*9880d681SAndroid Build Coastguard Worker} 611*9880d681SAndroid Build Coastguard Worker 612*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.cvtmask2d.512(i16) 613*9880d681SAndroid Build Coastguard Worker 614*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_cvtmask2d_512(i16 %x0) { 615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2d_512: 616*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k0 618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovm2d %k0, %zmm0 619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 620*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.cvtmask2d.512(i16 %x0) 621*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res 622*9880d681SAndroid Build Coastguard Worker} 623*9880d681SAndroid Build Coastguard Worker 624*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.cvtmask2q.512(i8) 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_cvtmask2q_512(i8 %x0) { 627*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2q_512: 628*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k0 630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmovm2q %k0, %zmm0 631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 632*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.cvtmask2q.512(i8 %x0) 633*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res 634*9880d681SAndroid Build Coastguard Worker} 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Workerdeclare <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float>, <16 x float>, i16) 637*9880d681SAndroid Build Coastguard Worker 638*9880d681SAndroid Build Coastguard Workerdefine <16 x float>@test_int_x86_avx512_mask_broadcastf32x8_512(<8 x float> %x0, <16 x float> %x2, i16 %mask) { 639*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf32x8_512: 640*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def> 642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 643*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 646*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm1, %zmm0, %zmm0 647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddps %zmm0, %zmm2, %zmm0 648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 649*9880d681SAndroid Build Coastguard Worker 650*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> %x2, i16 -1) 651*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> %x2, i16 %mask) 652*9880d681SAndroid Build Coastguard Worker %res3 = call <16 x float> @llvm.x86.avx512.mask.broadcastf32x8.512(<8 x float> %x0, <16 x float> zeroinitializer, i16 %mask) 653*9880d681SAndroid Build Coastguard Worker %res4 = fadd <16 x float> %res1, %res2 654*9880d681SAndroid Build Coastguard Worker %res5 = fadd <16 x float> %res3, %res4 655*9880d681SAndroid Build Coastguard Worker ret <16 x float> %res5 656*9880d681SAndroid Build Coastguard Worker} 657*9880d681SAndroid Build Coastguard Worker 658*9880d681SAndroid Build Coastguard Workerdeclare <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double>, <8 x double>, i8) 659*9880d681SAndroid Build Coastguard Worker 660*9880d681SAndroid Build Coastguard Workerdefine <8 x double>@test_int_x86_avx512_mask_broadcastf64x2_512(<2 x double> %x0, <8 x double> %x2, i8 %mask) { 661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcastf64x2_512: 662*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def> 664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,0,1,0,1,0,1] 666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,0,1,0,1,0,1] 667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1,0,1,0,1] 668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm1, %zmm0, %zmm0 669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vaddpd %zmm0, %zmm2, %zmm0 670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 671*9880d681SAndroid Build Coastguard Worker 672*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> %x2, i8 -1) 673*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> %x2, i8 %mask) 674*9880d681SAndroid Build Coastguard Worker %res3 = call <8 x double> @llvm.x86.avx512.mask.broadcastf64x2.512(<2 x double> %x0, <8 x double> zeroinitializer, i8 %mask) 675*9880d681SAndroid Build Coastguard Worker %res4 = fadd <8 x double> %res1, %res2 676*9880d681SAndroid Build Coastguard Worker %res5 = fadd <8 x double> %res3, %res4 677*9880d681SAndroid Build Coastguard Worker ret <8 x double> %res5 678*9880d681SAndroid Build Coastguard Worker} 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32>, <16 x i32>, i16) 681*9880d681SAndroid Build Coastguard Worker 682*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_broadcasti32x8_512(<8 x i32> %x0, <16 x i32> %x2, i16 %mask) { 683*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti32x8_512: 684*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %YMM0<def> %YMM0<kill> %ZMM0<def> 686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm1 {%k1} = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 689*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi32x4 {{.*#+}} zmm0 = zmm0[0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7] 690*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm1, %zmm0, %zmm0 691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddd %zmm0, %zmm2, %zmm0 692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 693*9880d681SAndroid Build Coastguard Worker 694*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> %x2, i16 -1) 695*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> %x2, i16 %mask) 696*9880d681SAndroid Build Coastguard Worker %res3 = call <16 x i32> @llvm.x86.avx512.mask.broadcasti32x8.512(<8 x i32> %x0, <16 x i32> zeroinitializer, i16 %mask) 697*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i32> %res1, %res2 698*9880d681SAndroid Build Coastguard Worker %res5 = add <16 x i32> %res3, %res4 699*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res5 700*9880d681SAndroid Build Coastguard Worker} 701*9880d681SAndroid Build Coastguard Worker 702*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64>, <8 x i64>, i8) 703*9880d681SAndroid Build Coastguard Worker 704*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_broadcasti64x2_512(<2 x i64> %x0, <8 x i64> %x2, i8 %mask) { 705*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_broadcasti64x2_512: 706*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def> 708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovb %edi, %k1 709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm2 {%k1} {z} = zmm0[0,1,0,1,0,1,0,1] 710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm1 {%k1} = zmm0[0,1,0,1,0,1,0,1] 711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,0,1,0,1,0,1] 712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm1, %zmm0, %zmm0 713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddq %zmm0, %zmm2, %zmm0 714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 715*9880d681SAndroid Build Coastguard Worker 716*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> %x2, i8 -1) 717*9880d681SAndroid Build Coastguard Worker %res2 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> %x2, i8 %mask) 718*9880d681SAndroid Build Coastguard Worker %res3 = call <8 x i64> @llvm.x86.avx512.mask.broadcasti64x2.512(<2 x i64> %x0, <8 x i64> zeroinitializer, i8 %mask) 719*9880d681SAndroid Build Coastguard Worker %res4 = add <8 x i64> %res1, %res2 720*9880d681SAndroid Build Coastguard Worker %res5 = add <8 x i64> %res3, %res4 721*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res5 722*9880d681SAndroid Build Coastguard Worker} 723