1*9880d681SAndroid Build Coastguard Worker; Test v4f32 comparisons. 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Test oeq. 6*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f1(<4 x float> %val1, <4 x float> %val2) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1: 8*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 9*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 10*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 11*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 12*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 13*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 14*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 15*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 16*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 17*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 18*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]] 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 20*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq <4 x float> %val1, %val2 21*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 22*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; Test one. 26*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f2(<4 x float> %val1, <4 x float> %val2) { 27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2: 28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 29*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 30*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 31*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 32*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 33*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 34*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 35*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 36*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 37*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 38*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 39*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]] 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]] 42*9880d681SAndroid Build Coastguard Worker; CHECK: vo %v24, [[RES1]], [[RES0]] 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 44*9880d681SAndroid Build Coastguard Worker %cmp = fcmp one <4 x float> %val1, %val2 45*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 46*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; Test ogt. 50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f3(<4 x float> %val1, <4 x float> %val2) { 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3: 52*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 53*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 54*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 55*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 56*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 57*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 58*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 62*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]] 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 64*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt <4 x float> %val1, %val2 65*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 66*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; Test oge. 70*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f4(<4 x float> %val1, <4 x float> %val2) { 71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4: 72*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 73*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 74*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 75*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 76*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 77*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 78*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 79*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 80*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 82*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]] 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 84*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge <4 x float> %val1, %val2 85*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 86*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; Test ole. 90*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f5(<4 x float> %val1, <4 x float> %val2) { 91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5: 92*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 93*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 94*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 95*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 96*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 97*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 98*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 99*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 100*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 101*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 102*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]] 103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 104*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole <4 x float> %val1, %val2 105*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 106*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; Test olt. 110*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f6(<4 x float> %val1, <4 x float> %val2) { 111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6: 112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 115*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 116*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 117*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 118*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 119*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 120*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 121*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 122*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]] 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 124*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt <4 x float> %val1, %val2 125*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 126*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker; Test ueq. 130*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f7(<4 x float> %val1, <4 x float> %val2) { 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f7: 132*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 133*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 134*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 135*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 136*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 137*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 138*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 139*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 140*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 141*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 142*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 143*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 144*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]] 145*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]] 146*9880d681SAndroid Build Coastguard Worker; CHECK: vno %v24, [[RES1]], [[RES0]] 147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 148*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ueq <4 x float> %val1, %val2 149*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 150*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 151*9880d681SAndroid Build Coastguard Worker} 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; Test une. 154*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f8(<4 x float> %val1, <4 x float> %val2) { 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f8: 156*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 157*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 158*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 159*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 160*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 161*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 162*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 163*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 164*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 165*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 166*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]] 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]] 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 169*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une <4 x float> %val1, %val2 170*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 171*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Worker; Test ugt. 175*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f9(<4 x float> %val1, <4 x float> %val2) { 176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f9: 177*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 178*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 179*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 180*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 181*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 182*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 185*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 186*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 187*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]] 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]] 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 190*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ugt <4 x float> %val1, %val2 191*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 192*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker; Test uge. 196*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f10(<4 x float> %val1, <4 x float> %val2) { 197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f10: 198*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 199*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 200*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 201*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 202*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 203*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 204*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 205*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 206*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 207*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 208*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]] 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]] 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 211*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uge <4 x float> %val1, %val2 212*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 213*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 214*9880d681SAndroid Build Coastguard Worker} 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker; Test ule. 217*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f11(<4 x float> %val1, <4 x float> %val2) { 218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f11: 219*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 220*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 223*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 224*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 225*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 226*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 227*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 228*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 229*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]] 230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]] 231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 232*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ule <4 x float> %val1, %val2 233*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 234*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 235*9880d681SAndroid Build Coastguard Worker} 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; Test ult. 238*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f12(<4 x float> %val1, <4 x float> %val2) { 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f12: 240*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 241*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 242*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 247*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 248*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 249*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 250*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]] 251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]] 252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 253*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ult <4 x float> %val1, %val2 254*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 255*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 256*9880d681SAndroid Build Coastguard Worker} 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker; Test ord. 259*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f13(<4 x float> %val1, <4 x float> %val2) { 260*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f13: 261*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 262*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 263*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 264*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 265*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 266*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 267*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 268*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 269*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 270*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 271*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 272*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 273*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]] 274*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]] 275*9880d681SAndroid Build Coastguard Worker; CHECK: vo %v24, [[RES1]], [[RES0]] 276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 277*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ord <4 x float> %val1, %val2 278*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 279*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 280*9880d681SAndroid Build Coastguard Worker} 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Worker; Test uno. 283*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f14(<4 x float> %val1, <4 x float> %val2) { 284*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f14: 285*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24 286*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24 287*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26 288*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26 289*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]] 290*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]] 291*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]] 292*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]] 293*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]] 294*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]] 295*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]] 296*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]] 297*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]] 298*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]] 299*9880d681SAndroid Build Coastguard Worker; CHECK: vno %v24, [[RES1]], [[RES0]] 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 301*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uno <4 x float> %val1, %val2 302*9880d681SAndroid Build Coastguard Worker %ret = sext <4 x i1> %cmp to <4 x i32> 303*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %ret 304*9880d681SAndroid Build Coastguard Worker} 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Worker; Test oeq selects. 307*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f15(<4 x float> %val1, <4 x float> %val2, 308*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f15: 310*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 313*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq <4 x float> %val1, %val2 314*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 315*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 316*9880d681SAndroid Build Coastguard Worker} 317*9880d681SAndroid Build Coastguard Worker 318*9880d681SAndroid Build Coastguard Worker; Test one selects. 319*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f16(<4 x float> %val1, <4 x float> %val2, 320*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 321*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f16: 322*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]], 323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 325*9880d681SAndroid Build Coastguard Worker %cmp = fcmp one <4 x float> %val1, %val2 326*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 327*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 328*9880d681SAndroid Build Coastguard Worker} 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Worker; Test ogt selects. 331*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f17(<4 x float> %val1, <4 x float> %val2, 332*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f17: 334*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 337*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt <4 x float> %val1, %val2 338*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 339*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 340*9880d681SAndroid Build Coastguard Worker} 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Worker; Test oge selects. 343*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f18(<4 x float> %val1, <4 x float> %val2, 344*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f18: 346*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 349*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge <4 x float> %val1, %val2 350*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 351*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 352*9880d681SAndroid Build Coastguard Worker} 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker; Test ole selects. 355*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f19(<4 x float> %val1, <4 x float> %val2, 356*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 357*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f19: 358*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 361*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole <4 x float> %val1, %val2 362*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 363*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 364*9880d681SAndroid Build Coastguard Worker} 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker; Test olt selects. 367*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f20(<4 x float> %val1, <4 x float> %val2, 368*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 369*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f20: 370*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 373*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt <4 x float> %val1, %val2 374*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 375*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 376*9880d681SAndroid Build Coastguard Worker} 377*9880d681SAndroid Build Coastguard Worker 378*9880d681SAndroid Build Coastguard Worker; Test ueq selects. 379*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f21(<4 x float> %val1, <4 x float> %val2, 380*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f21: 382*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]], 383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 385*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ueq <4 x float> %val1, %val2 386*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 387*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 388*9880d681SAndroid Build Coastguard Worker} 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Worker; Test une selects. 391*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f22(<4 x float> %val1, <4 x float> %val2, 392*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 393*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f22: 394*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 397*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une <4 x float> %val1, %val2 398*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 399*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 400*9880d681SAndroid Build Coastguard Worker} 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Worker; Test ugt selects. 403*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f23(<4 x float> %val1, <4 x float> %val2, 404*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f23: 406*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 409*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ugt <4 x float> %val1, %val2 410*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 411*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 412*9880d681SAndroid Build Coastguard Worker} 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Worker; Test uge selects. 415*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f24(<4 x float> %val1, <4 x float> %val2, 416*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 417*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f24: 418*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 421*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uge <4 x float> %val1, %val2 422*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 423*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 424*9880d681SAndroid Build Coastguard Worker} 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Worker; Test ule selects. 427*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f25(<4 x float> %val1, <4 x float> %val2, 428*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f25: 430*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 433*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ule <4 x float> %val1, %val2 434*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 435*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 436*9880d681SAndroid Build Coastguard Worker} 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Worker; Test ult selects. 439*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f26(<4 x float> %val1, <4 x float> %val2, 440*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 441*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f26: 442*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]], 443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 445*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ult <4 x float> %val1, %val2 446*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 447*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 448*9880d681SAndroid Build Coastguard Worker} 449*9880d681SAndroid Build Coastguard Worker 450*9880d681SAndroid Build Coastguard Worker; Test ord selects. 451*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f27(<4 x float> %val1, <4 x float> %val2, 452*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f27: 454*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]], 455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]] 456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 457*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ord <4 x float> %val1, %val2 458*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 459*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 460*9880d681SAndroid Build Coastguard Worker} 461*9880d681SAndroid Build Coastguard Worker 462*9880d681SAndroid Build Coastguard Worker; Test uno selects. 463*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f28(<4 x float> %val1, <4 x float> %val2, 464*9880d681SAndroid Build Coastguard Worker <4 x float> %val3, <4 x float> %val4) { 465*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f28: 466*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]], 467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]] 468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14 469*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uno <4 x float> %val1, %val2 470*9880d681SAndroid Build Coastguard Worker %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4 471*9880d681SAndroid Build Coastguard Worker ret <4 x float> %ret 472*9880d681SAndroid Build Coastguard Worker} 473