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-unknown-unknown -mattr=+avx,+fma4,+xop | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd: 6*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $1, %xmm2, %xmm1, %xmm0, %xmm0 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 9*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 1) ; [#uses=1] 10*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vpermil2pd_mr(<2 x double> %a0, <2 x double>* %a1, <2 x i64> %a2) { 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd_mr: 14*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $1, %xmm1, (%rdi), %xmm0, %xmm0 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 17*9880d681SAndroid Build Coastguard Worker %vec = load <2 x double>, <2 x double>* %a1 18*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %vec, <2 x i64> %a2, i8 1) ; [#uses=1] 19*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, <2 x i64>* %a2) { 22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd_rm: 23*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $1, (%rdi), %xmm1, %xmm0, %xmm0 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 26*9880d681SAndroid Build Coastguard Worker %vec = load <2 x i64>, <2 x i64>* %a2 27*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %vec, i8 1) ; [#uses=1] 28*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_int_x86_xop_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) { 33*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256: 34*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $2, %ymm2, %ymm1, %ymm0, %ymm0 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 37*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 2) ; 38*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_int_x86_xop_vpermil2pd_256_mr(<4 x double> %a0, <4 x double>* %a1, <4 x i64> %a2) { 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_mr: 42*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $2, %ymm1, (%rdi), %ymm0, %ymm0 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 45*9880d681SAndroid Build Coastguard Worker %vec = load <4 x double>, <4 x double>* %a1 46*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %vec, <4 x i64> %a2, i8 2) ; 47*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_int_x86_xop_vpermil2pd_256_rm(<4 x double> %a0, <4 x double> %a1, <4 x i64>* %a2) { 50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_rm: 51*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2pd $2, (%rdi), %ymm1, %ymm0, %ymm0 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 54*9880d681SAndroid Build Coastguard Worker %vec = load <4 x i64>, <4 x i64>* %a2 55*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %vec, i8 2) ; 56*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_int_x86_xop_vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2) { 61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2ps: 62*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 65*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2, i8 3) ; 66*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_int_x86_xop_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2) { 71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpermil2ps_256: 72*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermil2ps $4, %ymm2, %ymm1, %ymm0, %ymm0 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 75*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2, i8 4) ; 76*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) { 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcmov: 82*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmov %xmm2, %xmm1, %xmm0, %xmm0 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 85*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) ; 86*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_int_x86_xop_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) { 91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcmov_256: 92*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 95*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) ; 96*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_int_x86_xop_vpcmov_256_mr(<4 x i64> %a0, <4 x i64>* %a1, <4 x i64> %a2) { 99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcmov_256_mr: 100*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmov %ymm1, (%rdi), %ymm0, %ymm0 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 103*9880d681SAndroid Build Coastguard Worker %vec = load <4 x i64>, <4 x i64>* %a1 104*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %vec, <4 x i64> %a2) ; 105*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_int_x86_xop_vpcmov_256_rm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64>* %a2) { 108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcmov_256_rm: 109*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmov (%rdi), %ymm1, %ymm0, %ymm0 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 112*9880d681SAndroid Build Coastguard Worker %vec = load <4 x i64>, <4 x i64>* %a2 113*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %vec) ; 114*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphaddbd(<16 x i8> %a0) { 119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddbd: 120*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddbd %xmm0, %xmm0 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 123*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %a0) ; 124*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphaddbq(<16 x i8> %a0) { 129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddbq: 130*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddbq %xmm0, %xmm0 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 133*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %a0) ; 134*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vphaddbw(<16 x i8> %a0) { 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddbw: 140*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddbw %xmm0, %xmm0 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 143*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %a0) ; 144*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphadddq(<4 x i32> %a0) { 149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphadddq: 150*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphadddq %xmm0, %xmm0 152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 153*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %a0) ; 154*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 155*9880d681SAndroid Build Coastguard Worker} 156*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphaddubd(<16 x i8> %a0) { 159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddubd: 160*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddubd %xmm0, %xmm0 162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 163*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %a0) ; 164*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphaddubq(<16 x i8> %a0) { 169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddubq: 170*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddubq %xmm0, %xmm0 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 173*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %a0) ; 174*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 175*9880d681SAndroid Build Coastguard Worker} 176*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vphaddubw(<16 x i8> %a0) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddubw: 180*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddubw %xmm0, %xmm0 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 183*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %a0) ; 184*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 185*9880d681SAndroid Build Coastguard Worker} 186*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphaddudq(<4 x i32> %a0) { 189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddudq: 190*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddudq %xmm0, %xmm0 192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 193*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %a0) ; 194*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 195*9880d681SAndroid Build Coastguard Worker} 196*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphadduwd(<8 x i16> %a0) { 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphadduwd: 200*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphadduwd %xmm0, %xmm0 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 203*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %a0) ; 204*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphadduwq(<8 x i16> %a0) { 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphadduwq: 210*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphadduwq %xmm0, %xmm0 212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 213*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %a0) ; 214*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 215*9880d681SAndroid Build Coastguard Worker} 216*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphaddwd(<8 x i16> %a0) { 219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddwd: 220*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddwd %xmm0, %xmm0 222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 223*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %a0) ; 224*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphaddwq(<8 x i16> %a0) { 229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphaddwq: 230*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphaddwq %xmm0, %xmm0 232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 233*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %a0) ; 234*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 235*9880d681SAndroid Build Coastguard Worker} 236*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vphsubbw(<16 x i8> %a0) { 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphsubbw: 240*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphsubbw %xmm0, %xmm0 242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 243*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %a0) ; 244*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 245*9880d681SAndroid Build Coastguard Worker} 246*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphsubdq(<4 x i32> %a0) { 249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphsubdq: 250*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphsubdq %xmm0, %xmm0 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 253*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %a0) ; 254*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vphsubdq_mem(<4 x i32>* %a0) { 257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphsubdq_mem: 258*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphsubdq (%rdi), %xmm0 260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 261*9880d681SAndroid Build Coastguard Worker %vec = load <4 x i32>, <4 x i32>* %a0 262*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %vec) ; 263*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphsubwd(<8 x i16> %a0) { 268*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphsubwd: 269*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphsubwd %xmm0, %xmm0 271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 272*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %a0) ; 273*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 274*9880d681SAndroid Build Coastguard Worker} 275*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vphsubwd_mem(<8 x i16>* %a0) { 276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vphsubwd_mem: 277*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vphsubwd (%rdi), %xmm0 279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 280*9880d681SAndroid Build Coastguard Worker %vec = load <8 x i16>, <8 x i16>* %a0 281*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %vec) ; 282*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 283*9880d681SAndroid Build Coastguard Worker} 284*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) { 287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacsdd: 288*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 291*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ; 292*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 293*9880d681SAndroid Build Coastguard Worker} 294*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacsdqh: 298*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 301*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 302*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 303*9880d681SAndroid Build Coastguard Worker} 304*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacsdql: 308*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 311*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 312*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 313*9880d681SAndroid Build Coastguard Worker} 314*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) { 317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacssdd: 318*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 321*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ; 322*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 323*9880d681SAndroid Build Coastguard Worker} 324*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacssdqh: 328*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 331*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 332*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 333*9880d681SAndroid Build Coastguard Worker} 334*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) { 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacssdql: 338*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 341*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ; 342*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 343*9880d681SAndroid Build Coastguard Worker} 344*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 347*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacsswd: 348*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 351*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 352*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) { 357*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacssww: 358*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 361*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ; 362*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 363*9880d681SAndroid Build Coastguard Worker} 364*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacswd: 368*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 371*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 372*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 373*9880d681SAndroid Build Coastguard Worker} 374*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) { 377*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmacsww: 378*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 381*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ; 382*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 383*9880d681SAndroid Build Coastguard Worker} 384*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 387*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmadcsswd: 388*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 391*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 392*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 393*9880d681SAndroid Build Coastguard Worker} 394*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 395*9880d681SAndroid Build Coastguard Worker 396*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) { 397*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmadcswd: 398*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 401*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ; 402*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 403*9880d681SAndroid Build Coastguard Worker} 404*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpmadcswd_mem(<8 x i16> %a0, <8 x i16>* %a1, <4 x i32> %a2) { 405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpmadcswd_mem: 406*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmadcswd %xmm1, (%rdi), %xmm0, %xmm0 408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 409*9880d681SAndroid Build Coastguard Worker %vec = load <8 x i16>, <8 x i16>* %a1 410*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %vec, <4 x i32> %a2) ; 411*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 412*9880d681SAndroid Build Coastguard Worker} 413*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone 414*9880d681SAndroid Build Coastguard Worker 415*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) { 416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpperm: 417*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpperm %xmm2, %xmm1, %xmm0, %xmm0 419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 420*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; 421*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 422*9880d681SAndroid Build Coastguard Worker} 423*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpperm_rm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8>* %a2) { 424*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpperm_rm: 425*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 426*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpperm (%rdi), %xmm1, %xmm0, %xmm0 427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 428*9880d681SAndroid Build Coastguard Worker %vec = load <16 x i8>, <16 x i8>* %a2 429*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %vec) ; 430*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 431*9880d681SAndroid Build Coastguard Worker} 432*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpperm_mr(<16 x i8> %a0, <16 x i8>* %a1, <16 x i8> %a2) { 433*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpperm_mr: 434*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpperm %xmm1, (%rdi), %xmm0, %xmm0 436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 437*9880d681SAndroid Build Coastguard Worker %vec = load <16 x i8>, <16 x i8>* %a1 438*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %vec, <16 x i8> %a2) ; 439*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 440*9880d681SAndroid Build Coastguard Worker} 441*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vprotb(<16 x i8> %a0, <16 x i8> %a1) { 444*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotb: 445*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotb %xmm1, %xmm0, %xmm0 447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 448*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1) ; 449*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vprotd(<4 x i32> %a0, <4 x i32> %a1) { 454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotd: 455*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotd %xmm1, %xmm0, %xmm0 457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 458*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1) ; 459*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 460*9880d681SAndroid Build Coastguard Worker} 461*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vprotq(<2 x i64> %a0, <2 x i64> %a1) { 464*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotq: 465*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotq %xmm1, %xmm0, %xmm0 467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 468*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1) ; 469*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 470*9880d681SAndroid Build Coastguard Worker} 471*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vprotw(<8 x i16> %a0, <8 x i16> %a1) { 474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotw: 475*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotw %xmm1, %xmm0, %xmm0 477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 478*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1) ; 479*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 480*9880d681SAndroid Build Coastguard Worker} 481*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vprotbi(<16 x i8> %a0) { 484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotbi: 485*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotb $1, %xmm0, %xmm0 487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 488*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 1) ; 489*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 490*9880d681SAndroid Build Coastguard Worker} 491*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone 492*9880d681SAndroid Build Coastguard Worker 493*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vprotdi(<4 x i32> %a0) { 494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotdi: 495*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotd $254, %xmm0, %xmm0 497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 498*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 -2) ; 499*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 500*9880d681SAndroid Build Coastguard Worker} 501*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vprotqi(<2 x i64> %a0) { 504*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotqi: 505*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotq $3, %xmm0, %xmm0 507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 508*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 3) ; 509*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 510*9880d681SAndroid Build Coastguard Worker} 511*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone 512*9880d681SAndroid Build Coastguard Worker 513*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vprotwi(<8 x i16> %a0) { 514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vprotwi: 515*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vprotw $252, %xmm0, %xmm0 517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 518*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 -4) ; 519*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 520*9880d681SAndroid Build Coastguard Worker} 521*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone 522*9880d681SAndroid Build Coastguard Worker 523*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpshab(<16 x i8> %a0, <16 x i8> %a1) { 524*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshab: 525*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshab %xmm1, %xmm0, %xmm0 527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 528*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a0, <16 x i8> %a1) ; 529*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpshad(<4 x i32> %a0, <4 x i32> %a1) { 534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshad: 535*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshad %xmm1, %xmm0, %xmm0 537*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 538*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a0, <4 x i32> %a1) ; 539*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 540*9880d681SAndroid Build Coastguard Worker} 541*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpshaq(<2 x i64> %a0, <2 x i64> %a1) { 544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshaq: 545*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshaq %xmm1, %xmm0, %xmm0 547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 548*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1) ; 549*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 550*9880d681SAndroid Build Coastguard Worker} 551*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpshaw(<8 x i16> %a0, <8 x i16> %a1) { 554*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshaw: 555*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshaw %xmm1, %xmm0, %xmm0 557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 558*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a0, <8 x i16> %a1) ; 559*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 560*9880d681SAndroid Build Coastguard Worker} 561*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone 562*9880d681SAndroid Build Coastguard Worker 563*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpshlb(<16 x i8> %a0, <16 x i8> %a1) { 564*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshlb: 565*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshlb %xmm1, %xmm0, %xmm0 567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 568*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a0, <16 x i8> %a1) ; 569*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 570*9880d681SAndroid Build Coastguard Worker} 571*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpshld(<4 x i32> %a0, <4 x i32> %a1) { 574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshld: 575*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshld %xmm1, %xmm0, %xmm0 577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 578*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a0, <4 x i32> %a1) ; 579*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 580*9880d681SAndroid Build Coastguard Worker} 581*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone 582*9880d681SAndroid Build Coastguard Worker 583*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpshlq(<2 x i64> %a0, <2 x i64> %a1) { 584*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshlq: 585*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 586*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshlq %xmm1, %xmm0, %xmm0 587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 588*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1) ; 589*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 590*9880d681SAndroid Build Coastguard Worker} 591*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpshlw(<8 x i16> %a0, <8 x i16> %a1) { 594*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshlw: 595*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshlw %xmm1, %xmm0, %xmm0 597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 598*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %a1) ; 599*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 600*9880d681SAndroid Build Coastguard Worker} 601*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpshlw_rm(<8 x i16> %a0, <8 x i16>* %a1) { 602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshlw_rm: 603*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshlw (%rdi), %xmm0, %xmm0 605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 606*9880d681SAndroid Build Coastguard Worker %vec = load <8 x i16>, <8 x i16>* %a1 607*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %vec) ; 608*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 609*9880d681SAndroid Build Coastguard Worker} 610*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpshlw_mr(<8 x i16>* %a0, <8 x i16> %a1) { 611*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpshlw_mr: 612*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpshlw %xmm0, (%rdi), %xmm0 614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 615*9880d681SAndroid Build Coastguard Worker %vec = load <8 x i16>, <8 x i16>* %a0 616*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %vec, <8 x i16> %a1) ; 617*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 618*9880d681SAndroid Build Coastguard Worker} 619*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone 620*9880d681SAndroid Build Coastguard Worker 621*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_int_x86_xop_vfrcz_ss(<4 x float> %a0) { 622*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ss: 623*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczss %xmm0, %xmm0 625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 626*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0) ; 627*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 628*9880d681SAndroid Build Coastguard Worker} 629*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_int_x86_xop_vfrcz_ss_mem(float* %a0) { 630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ss_mem: 631*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczss (%rdi), %xmm0 633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 634*9880d681SAndroid Build Coastguard Worker %elem = load float, float* %a0 635*9880d681SAndroid Build Coastguard Worker %vec = insertelement <4 x float> undef, float %elem, i32 0 636*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %vec) ; 637*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 638*9880d681SAndroid Build Coastguard Worker} 639*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone 640*9880d681SAndroid Build Coastguard Worker 641*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vfrcz_sd(<2 x double> %a0) { 642*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_sd: 643*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 644*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczsd %xmm0, %xmm0 645*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 646*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0) ; 647*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 648*9880d681SAndroid Build Coastguard Worker} 649*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vfrcz_sd_mem(double* %a0) { 650*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_sd_mem: 651*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczsd (%rdi), %xmm0 653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 654*9880d681SAndroid Build Coastguard Worker %elem = load double, double* %a0 655*9880d681SAndroid Build Coastguard Worker %vec = insertelement <2 x double> undef, double %elem, i32 0 656*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %vec) ; 657*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 658*9880d681SAndroid Build Coastguard Worker} 659*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone 660*9880d681SAndroid Build Coastguard Worker 661*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vfrcz_pd(<2 x double> %a0) { 662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_pd: 663*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczpd %xmm0, %xmm0 665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 666*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0) ; 667*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 668*9880d681SAndroid Build Coastguard Worker} 669*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_int_x86_xop_vfrcz_pd_mem(<2 x double>* %a0) { 670*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_mem: 671*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczpd (%rdi), %xmm0 673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 674*9880d681SAndroid Build Coastguard Worker %vec = load <2 x double>, <2 x double>* %a0 675*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %vec) ; 676*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 677*9880d681SAndroid Build Coastguard Worker} 678*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_int_x86_xop_vfrcz_pd_256(<4 x double> %a0) { 681*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256: 682*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczpd %ymm0, %ymm0 684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 685*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0) ; 686*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 687*9880d681SAndroid Build Coastguard Worker} 688*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_int_x86_xop_vfrcz_pd_256_mem(<4 x double>* %a0) { 689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256_mem: 690*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczpd (%rdi), %ymm0 692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 693*9880d681SAndroid Build Coastguard Worker %vec = load <4 x double>, <4 x double>* %a0 694*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %vec) ; 695*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 696*9880d681SAndroid Build Coastguard Worker} 697*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_int_x86_xop_vfrcz_ps(<4 x float> %a0) { 700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ps: 701*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczps %xmm0, %xmm0 703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 704*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0) ; 705*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 706*9880d681SAndroid Build Coastguard Worker} 707*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_int_x86_xop_vfrcz_ps_mem(<4 x float>* %a0) { 708*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_mem: 709*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczps (%rdi), %xmm0 711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 712*9880d681SAndroid Build Coastguard Worker %vec = load <4 x float>, <4 x float>* %a0 713*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %vec) ; 714*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 715*9880d681SAndroid Build Coastguard Worker} 716*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone 717*9880d681SAndroid Build Coastguard Worker 718*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_int_x86_xop_vfrcz_ps_256(<8 x float> %a0) { 719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256: 720*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczps %ymm0, %ymm0 722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 723*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0) ; 724*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 725*9880d681SAndroid Build Coastguard Worker} 726*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_int_x86_xop_vfrcz_ps_256_mem(<8 x float>* %a0) { 727*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256_mem: 728*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vfrczps (%rdi), %ymm0 730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 731*9880d681SAndroid Build Coastguard Worker %vec = load <8 x float>, <8 x float>* %a0 732*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %vec) ; 733*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 734*9880d681SAndroid Build Coastguard Worker} 735*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone 736*9880d681SAndroid Build Coastguard Worker 737*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpcomb(<16 x i8> %a0, <16 x i8> %a1) { 738*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomb: 739*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltb %xmm1, %xmm0, %xmm0 741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 742*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0) ; 743*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 744*9880d681SAndroid Build Coastguard Worker} 745*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone 746*9880d681SAndroid Build Coastguard Worker 747*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpcomw(<8 x i16> %a0, <8 x i16> %a1) { 748*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomw: 749*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltw %xmm1, %xmm0, %xmm0 751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 752*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ; 753*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 754*9880d681SAndroid Build Coastguard Worker} 755*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone 756*9880d681SAndroid Build Coastguard Worker 757*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpcomd(<4 x i32> %a0, <4 x i32> %a1) { 758*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomd: 759*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltd %xmm1, %xmm0, %xmm0 761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 762*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0) ; 763*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 764*9880d681SAndroid Build Coastguard Worker} 765*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone 766*9880d681SAndroid Build Coastguard Worker 767*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpcomq(<2 x i64> %a0, <2 x i64> %a1) { 768*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomq: 769*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 770*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltq %xmm1, %xmm0, %xmm0 771*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 772*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; 773*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 774*9880d681SAndroid Build Coastguard Worker} 775*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone 776*9880d681SAndroid Build Coastguard Worker 777*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_int_x86_xop_vpcomub(<16 x i8> %a0, <16 x i8> %a1) { 778*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomub: 779*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltub %xmm1, %xmm0, %xmm0 781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 782*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0) ; 783*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 784*9880d681SAndroid Build Coastguard Worker} 785*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone 786*9880d681SAndroid Build Coastguard Worker 787*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_int_x86_xop_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) { 788*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomuw: 789*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0 791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 792*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ; 793*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 794*9880d681SAndroid Build Coastguard Worker} 795*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone 796*9880d681SAndroid Build Coastguard Worker 797*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_int_x86_xop_vpcomud(<4 x i32> %a0, <4 x i32> %a1) { 798*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomud: 799*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 800*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltud %xmm1, %xmm0, %xmm0 801*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 802*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0) ; 803*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 804*9880d681SAndroid Build Coastguard Worker} 805*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone 806*9880d681SAndroid Build Coastguard Worker 807*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_int_x86_xop_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) { 808*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_xop_vpcomuq: 809*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0 811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 812*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; 813*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 814*9880d681SAndroid Build Coastguard Worker} 815*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone 816*9880d681SAndroid Build Coastguard Worker 817