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=skx | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_1(<4 x i64> %x, <4 x i64> %y) nounwind { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_1: 6*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq %ymm1, %ymm0, %k1 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm0, %ymm1, %ymm0 {%k1} 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 10*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <4 x i64> %x, %y 11*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %y 12*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_2(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1) nounwind { 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_2: 17*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq %ymm1, %ymm0, %k1 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm2, %ymm1, %ymm0 {%k1} 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 21*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt <4 x i64> %x, %y 22*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x1, <4 x i64> %y 23*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_3(<8 x i32> %x, <8 x i32> %y, <8 x i32> %x1) nounwind { 27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_3: 28*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %ymm0, %ymm1, %k1 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm2, %ymm1, %ymm0 {%k1} 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 32*9880d681SAndroid Build Coastguard Worker %mask = icmp sge <8 x i32> %x, %y 33*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x1, <8 x i32> %y 34*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_4(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1) nounwind { 38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_4: 39*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleuq %ymm1, %ymm0, %k1 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm2, %ymm1, %ymm0 {%k1} 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 43*9880d681SAndroid Build Coastguard Worker %mask = icmp ugt <4 x i64> %x, %y 44*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x1, <4 x i64> %y 45*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_5(<8 x i32> %x, <8 x i32> %x1, <8 x i32>* %yp) nounwind { 49*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_5: 50*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd (%rdi), %ymm0, %k1 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 54*9880d681SAndroid Build Coastguard Worker %y = load <8 x i32>, <8 x i32>* %yp, align 4 55*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <8 x i32> %x, %y 56*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 57*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_6(<8 x i32> %x, <8 x i32> %x1, <8 x i32>* %y.ptr) nounwind { 61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_6: 62*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtd (%rdi), %ymm0, %k1 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 66*9880d681SAndroid Build Coastguard Worker %y = load <8 x i32>, <8 x i32>* %y.ptr, align 4 67*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt <8 x i32> %x, %y 68*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 69*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_7(<8 x i32> %x, <8 x i32> %x1, <8 x i32>* %y.ptr) nounwind { 73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_7: 74*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled (%rdi), %ymm0, %k1 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 78*9880d681SAndroid Build Coastguard Worker %y = load <8 x i32>, <8 x i32>* %y.ptr, align 4 79*9880d681SAndroid Build Coastguard Worker %mask = icmp sle <8 x i32> %x, %y 80*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 81*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_8(<8 x i32> %x, <8 x i32> %x1, <8 x i32>* %y.ptr) nounwind { 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_8: 86*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud (%rdi), %ymm0, %k1 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 90*9880d681SAndroid Build Coastguard Worker %y = load <8 x i32>, <8 x i32>* %y.ptr, align 4 91*9880d681SAndroid Build Coastguard Worker %mask = icmp ule <8 x i32> %x, %y 92*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 93*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 94*9880d681SAndroid Build Coastguard Worker} 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_9(<8 x i32> %x, <8 x i32> %y, <8 x i32> %x1, <8 x i32> %y1) nounwind { 97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_9: 98*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %ymm1, %ymm0, %k1 100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %ymm3, %ymm2, %k1 {%k1} 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 103*9880d681SAndroid Build Coastguard Worker %mask1 = icmp eq <8 x i32> %x1, %y1 104*9880d681SAndroid Build Coastguard Worker %mask0 = icmp eq <8 x i32> %x, %y 105*9880d681SAndroid Build Coastguard Worker %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer 106*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %y 107*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 108*9880d681SAndroid Build Coastguard Worker} 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_10(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1, <4 x i64> %y1) nounwind { 111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_10: 112*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %ymm1, %ymm0, %k1 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %ymm2, %ymm3, %k1 {%k1} 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm0, %ymm2, %ymm0 {%k1} 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 117*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <4 x i64> %x1, %y1 118*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sle <4 x i64> %x, %y 119*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 120*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1 121*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 122*9880d681SAndroid Build Coastguard Worker} 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_11(<4 x i64> %x, <4 x i64>* %y.ptr, <4 x i64> %x1, <4 x i64> %y1) nounwind { 125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_11: 126*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq %ymm2, %ymm1, %k1 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq (%rdi), %ymm0, %k1 {%k1} 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm0, %ymm1, %ymm0 {%k1} 130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 131*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sgt <4 x i64> %x1, %y1 132*9880d681SAndroid Build Coastguard Worker %y = load <4 x i64>, <4 x i64>* %y.ptr, align 4 133*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <4 x i64> %x, %y 134*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 135*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1 136*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_12(<8 x i32> %x, <8 x i32>* %y.ptr, <8 x i32> %x1, <8 x i32> %y1) nounwind { 140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_12: 141*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %ymm1, %ymm2, %k1 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud (%rdi), %ymm0, %k1 {%k1} 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 146*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <8 x i32> %x1, %y1 147*9880d681SAndroid Build Coastguard Worker %y = load <8 x i32>, <8 x i32>* %y.ptr, align 4 148*9880d681SAndroid Build Coastguard Worker %mask0 = icmp ule <8 x i32> %x, %y 149*9880d681SAndroid Build Coastguard Worker %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer 150*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 151*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_13(<4 x i64> %x, <4 x i64> %x1, i64* %yb.ptr) nounwind { 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_13: 156*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq (%rdi){1to4}, %ymm0, %k1 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm0, %ymm1, %ymm0 {%k1} 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 160*9880d681SAndroid Build Coastguard Worker %yb = load i64, i64* %yb.ptr, align 4 161*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <4 x i64> undef, i64 %yb, i32 0 162*9880d681SAndroid Build Coastguard Worker %y = shufflevector <4 x i64> %y.0, <4 x i64> undef, <4 x i32> zeroinitializer 163*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <4 x i64> %x, %y 164*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1 165*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 166*9880d681SAndroid Build Coastguard Worker} 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_14(<8 x i32> %x, i32* %yb.ptr, <8 x i32> %x1) nounwind { 169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_14: 170*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled (%rdi){1to8}, %ymm0, %k1 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 174*9880d681SAndroid Build Coastguard Worker %yb = load i32, i32* %yb.ptr, align 4 175*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <8 x i32> undef, i32 %yb, i32 0 176*9880d681SAndroid Build Coastguard Worker %y = shufflevector <8 x i32> %y.0, <8 x i32> undef, <8 x i32> zeroinitializer 177*9880d681SAndroid Build Coastguard Worker %mask = icmp sle <8 x i32> %x, %y 178*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 179*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 180*9880d681SAndroid Build Coastguard Worker} 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test256_15(<8 x i32> %x, i32* %yb.ptr, <8 x i32> %x1, <8 x i32> %y1) nounwind { 183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_15: 184*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %ymm1, %ymm2, %k1 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtd (%rdi){1to8}, %ymm0, %k1 {%k1} 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %ymm0, %ymm1, %ymm0 {%k1} 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 189*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <8 x i32> %x1, %y1 190*9880d681SAndroid Build Coastguard Worker %yb = load i32, i32* %yb.ptr, align 4 191*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <8 x i32> undef, i32 %yb, i32 0 192*9880d681SAndroid Build Coastguard Worker %y = shufflevector <8 x i32> %y.0, <8 x i32> undef, <8 x i32> zeroinitializer 193*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <8 x i32> %x, %y 194*9880d681SAndroid Build Coastguard Worker %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer 195*9880d681SAndroid Build Coastguard Worker %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1 196*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %max 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test256_16(<4 x i64> %x, i64* %yb.ptr, <4 x i64> %x1, <4 x i64> %y1) nounwind { 200*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test256_16: 201*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %ymm1, %ymm2, %k1 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq (%rdi){1to4}, %ymm0, %k1 {%k1} 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %ymm0, %ymm1, %ymm0 {%k1} 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 206*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <4 x i64> %x1, %y1 207*9880d681SAndroid Build Coastguard Worker %yb = load i64, i64* %yb.ptr, align 4 208*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <4 x i64> undef, i64 %yb, i32 0 209*9880d681SAndroid Build Coastguard Worker %y = shufflevector <4 x i64> %y.0, <4 x i64> undef, <4 x i32> zeroinitializer 210*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <4 x i64> %x, %y 211*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 212*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1 213*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %max 214*9880d681SAndroid Build Coastguard Worker} 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_1(<2 x i64> %x, <2 x i64> %y) nounwind { 217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_1: 218*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq %xmm1, %xmm0, %k1 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm0, %xmm1, %xmm0 {%k1} 221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 222*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <2 x i64> %x, %y 223*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %y 224*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_2(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1) nounwind { 228*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_2: 229*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq %xmm1, %xmm0, %k1 231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm2, %xmm1, %xmm0 {%k1} 232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 233*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt <2 x i64> %x, %y 234*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x1, <2 x i64> %y 235*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 236*9880d681SAndroid Build Coastguard Worker} 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_3(<4 x i32> %x, <4 x i32> %y, <4 x i32> %x1) nounwind { 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_3: 240*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %xmm0, %xmm1, %k1 242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm2, %xmm1, %xmm0 {%k1} 243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 244*9880d681SAndroid Build Coastguard Worker %mask = icmp sge <4 x i32> %x, %y 245*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x1, <4 x i32> %y 246*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 247*9880d681SAndroid Build Coastguard Worker} 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_4(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1) nounwind { 250*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_4: 251*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleuq %xmm1, %xmm0, %k1 253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm2, %xmm1, %xmm0 {%k1} 254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 255*9880d681SAndroid Build Coastguard Worker %mask = icmp ugt <2 x i64> %x, %y 256*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x1, <2 x i64> %y 257*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 258*9880d681SAndroid Build Coastguard Worker} 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_5(<4 x i32> %x, <4 x i32> %x1, <4 x i32>* %yp) nounwind { 261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_5: 262*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd (%rdi), %xmm0, %k1 264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 266*9880d681SAndroid Build Coastguard Worker %y = load <4 x i32>, <4 x i32>* %yp, align 4 267*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <4 x i32> %x, %y 268*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 269*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_6(<4 x i32> %x, <4 x i32> %x1, <4 x i32>* %y.ptr) nounwind { 273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_6: 274*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtd (%rdi), %xmm0, %k1 276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 278*9880d681SAndroid Build Coastguard Worker %y = load <4 x i32>, <4 x i32>* %y.ptr, align 4 279*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt <4 x i32> %x, %y 280*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 281*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 282*9880d681SAndroid Build Coastguard Worker} 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_7(<4 x i32> %x, <4 x i32> %x1, <4 x i32>* %y.ptr) nounwind { 285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_7: 286*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 287*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled (%rdi), %xmm0, %k1 288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 290*9880d681SAndroid Build Coastguard Worker %y = load <4 x i32>, <4 x i32>* %y.ptr, align 4 291*9880d681SAndroid Build Coastguard Worker %mask = icmp sle <4 x i32> %x, %y 292*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 293*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 294*9880d681SAndroid Build Coastguard Worker} 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_8(<4 x i32> %x, <4 x i32> %x1, <4 x i32>* %y.ptr) nounwind { 297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_8: 298*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud (%rdi), %xmm0, %k1 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 302*9880d681SAndroid Build Coastguard Worker %y = load <4 x i32>, <4 x i32>* %y.ptr, align 4 303*9880d681SAndroid Build Coastguard Worker %mask = icmp ule <4 x i32> %x, %y 304*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 305*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 306*9880d681SAndroid Build Coastguard Worker} 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_9(<4 x i32> %x, <4 x i32> %y, <4 x i32> %x1, <4 x i32> %y1) nounwind { 309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_9: 310*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %xmm1, %xmm0, %k1 312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqd %xmm3, %xmm2, %k1 {%k1} 313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 315*9880d681SAndroid Build Coastguard Worker %mask1 = icmp eq <4 x i32> %x1, %y1 316*9880d681SAndroid Build Coastguard Worker %mask0 = icmp eq <4 x i32> %x, %y 317*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 318*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %y 319*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 320*9880d681SAndroid Build Coastguard Worker} 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_10(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1, <2 x i64> %y1) nounwind { 323*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_10: 324*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %xmm1, %xmm0, %k1 326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %xmm2, %xmm3, %k1 {%k1} 327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm0, %xmm2, %xmm0 {%k1} 328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 329*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <2 x i64> %x1, %y1 330*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sle <2 x i64> %x, %y 331*9880d681SAndroid Build Coastguard Worker %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer 332*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1 333*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 334*9880d681SAndroid Build Coastguard Worker} 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_11(<2 x i64> %x, <2 x i64>* %y.ptr, <2 x i64> %x1, <2 x i64> %y1) nounwind { 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_11: 338*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq %xmm2, %xmm1, %k1 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq (%rdi), %xmm0, %k1 {%k1} 341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm0, %xmm1, %xmm0 {%k1} 342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 343*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sgt <2 x i64> %x1, %y1 344*9880d681SAndroid Build Coastguard Worker %y = load <2 x i64>, <2 x i64>* %y.ptr, align 4 345*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <2 x i64> %x, %y 346*9880d681SAndroid Build Coastguard Worker %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer 347*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1 348*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 349*9880d681SAndroid Build Coastguard Worker} 350*9880d681SAndroid Build Coastguard Worker 351*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_12(<4 x i32> %x, <4 x i32>* %y.ptr, <4 x i32> %x1, <4 x i32> %y1) nounwind { 352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_12: 353*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %xmm1, %xmm2, %k1 355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleud (%rdi), %xmm0, %k1 {%k1} 356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 358*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <4 x i32> %x1, %y1 359*9880d681SAndroid Build Coastguard Worker %y = load <4 x i32>, <4 x i32>* %y.ptr, align 4 360*9880d681SAndroid Build Coastguard Worker %mask0 = icmp ule <4 x i32> %x, %y 361*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 362*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 363*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 364*9880d681SAndroid Build Coastguard Worker} 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_13(<2 x i64> %x, <2 x i64> %x1, i64* %yb.ptr) nounwind { 367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_13: 368*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpeqq (%rdi){1to2}, %xmm0, %k1 370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm0, %xmm1, %xmm0 {%k1} 371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 372*9880d681SAndroid Build Coastguard Worker %yb = load i64, i64* %yb.ptr, align 4 373*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <2 x i64> undef, i64 %yb, i32 0 374*9880d681SAndroid Build Coastguard Worker %y = insertelement <2 x i64> %y.0, i64 %yb, i32 1 375*9880d681SAndroid Build Coastguard Worker %mask = icmp eq <2 x i64> %x, %y 376*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1 377*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 378*9880d681SAndroid Build Coastguard Worker} 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_14(<4 x i32> %x, i32* %yb.ptr, <4 x i32> %x1) nounwind { 381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_14: 382*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled (%rdi){1to4}, %xmm0, %k1 384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 386*9880d681SAndroid Build Coastguard Worker %yb = load i32, i32* %yb.ptr, align 4 387*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <4 x i32> undef, i32 %yb, i32 0 388*9880d681SAndroid Build Coastguard Worker %y = shufflevector <4 x i32> %y.0, <4 x i32> undef, <4 x i32> zeroinitializer 389*9880d681SAndroid Build Coastguard Worker %mask = icmp sle <4 x i32> %x, %y 390*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 391*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 392*9880d681SAndroid Build Coastguard Worker} 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test128_15(<4 x i32> %x, i32* %yb.ptr, <4 x i32> %x1, <4 x i32> %y1) nounwind { 395*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_15: 396*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 397*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpled %xmm1, %xmm2, %k1 398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtd (%rdi){1to4}, %xmm0, %k1 {%k1} 399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmd %xmm0, %xmm1, %xmm0 {%k1} 400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 401*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <4 x i32> %x1, %y1 402*9880d681SAndroid Build Coastguard Worker %yb = load i32, i32* %yb.ptr, align 4 403*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <4 x i32> undef, i32 %yb, i32 0 404*9880d681SAndroid Build Coastguard Worker %y = shufflevector <4 x i32> %y.0, <4 x i32> undef, <4 x i32> zeroinitializer 405*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <4 x i32> %x, %y 406*9880d681SAndroid Build Coastguard Worker %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer 407*9880d681SAndroid Build Coastguard Worker %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1 408*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %max 409*9880d681SAndroid Build Coastguard Worker} 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test128_16(<2 x i64> %x, i64* %yb.ptr, <2 x i64> %x1, <2 x i64> %y1) nounwind { 412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test128_16: 413*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpleq %xmm1, %xmm2, %k1 415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpgtq (%rdi){1to2}, %xmm0, %k1 {%k1} 416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpblendmq %xmm0, %xmm1, %xmm0 {%k1} 417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 418*9880d681SAndroid Build Coastguard Worker %mask1 = icmp sge <2 x i64> %x1, %y1 419*9880d681SAndroid Build Coastguard Worker %yb = load i64, i64* %yb.ptr, align 4 420*9880d681SAndroid Build Coastguard Worker %y.0 = insertelement <2 x i64> undef, i64 %yb, i32 0 421*9880d681SAndroid Build Coastguard Worker %y = insertelement <2 x i64> %y.0, i64 %yb, i32 1 422*9880d681SAndroid Build Coastguard Worker %mask0 = icmp sgt <2 x i64> %x, %y 423*9880d681SAndroid Build Coastguard Worker %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer 424*9880d681SAndroid Build Coastguard Worker %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1 425*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %max 426*9880d681SAndroid Build Coastguard Worker} 427