1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmeq8xi8(<8 x i8> %A, <8 x i8> %B) { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq8xi8: 5*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 6*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <8 x i8> %A, %B; 7*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 8*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmeq16xi8(<16 x i8> %A, <16 x i8> %B) { 12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq16xi8: 13*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 14*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <16 x i8> %A, %B; 15*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 16*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmeq4xi16(<4 x i16> %A, <4 x i16> %B) { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq4xi16: 21*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 22*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <4 x i16> %A, %B; 23*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 24*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmeq8xi16(<8 x i16> %A, <8 x i16> %B) { 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq8xi16: 29*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 30*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <8 x i16> %A, %B; 31*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 32*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmeq2xi32(<2 x i32> %A, <2 x i32> %B) { 36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq2xi32: 37*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 38*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <2 x i32> %A, %B; 39*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 40*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmeq4xi32(<4 x i32> %A, <4 x i32> %B) { 44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq4xi32: 45*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 46*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <4 x i32> %A, %B; 47*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 48*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmeq2xi64(<2 x i64> %A, <2 x i64> %B) { 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq2xi64: 53*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 54*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <2 x i64> %A, %B; 55*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 56*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmne8xi8(<8 x i8> %A, <8 x i8> %B) { 60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne8xi8: 61*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 63*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <8 x i8> %A, %B; 64*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 65*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmne16xi8(<16 x i8> %A, <16 x i8> %B) { 69*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne16xi8: 70*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 72*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <16 x i8> %A, %B; 73*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 74*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmne4xi16(<4 x i16> %A, <4 x i16> %B) { 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne4xi16: 79*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 81*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <4 x i16> %A, %B; 82*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 83*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmne8xi16(<8 x i16> %A, <8 x i16> %B) { 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne8xi16: 88*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 90*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <8 x i16> %A, %B; 91*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 92*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmne2xi32(<2 x i32> %A, <2 x i32> %B) { 96*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne2xi32: 97*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 99*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <2 x i32> %A, %B; 100*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 101*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmne4xi32(<4 x i32> %A, <4 x i32> %B) { 105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne4xi32: 106*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 108*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <4 x i32> %A, %B; 109*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 110*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmne2xi64(<2 x i64> %A, <2 x i64> %B) { 114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne2xi64: 115*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 117*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <2 x i64> %A, %B; 118*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 119*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgt8xi8(<8 x i8> %A, <8 x i8> %B) { 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt8xi8: 124*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 125*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <8 x i8> %A, %B; 126*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 127*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 128*9880d681SAndroid Build Coastguard Worker} 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgt16xi8(<16 x i8> %A, <16 x i8> %B) { 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt16xi8: 132*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 133*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <16 x i8> %A, %B; 134*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 135*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgt4xi16(<4 x i16> %A, <4 x i16> %B) { 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt4xi16: 140*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 141*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <4 x i16> %A, %B; 142*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 143*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 144*9880d681SAndroid Build Coastguard Worker} 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgt8xi16(<8 x i16> %A, <8 x i16> %B) { 147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt8xi16: 148*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 149*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <8 x i16> %A, %B; 150*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 151*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgt2xi32(<2 x i32> %A, <2 x i32> %B) { 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt2xi32: 156*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 157*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <2 x i32> %A, %B; 158*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 159*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 160*9880d681SAndroid Build Coastguard Worker} 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgt4xi32(<4 x i32> %A, <4 x i32> %B) { 163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt4xi32: 164*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 165*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <4 x i32> %A, %B; 166*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 167*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 168*9880d681SAndroid Build Coastguard Worker} 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgt2xi64(<2 x i64> %A, <2 x i64> %B) { 171*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt2xi64: 172*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 173*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <2 x i64> %A, %B; 174*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 175*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 176*9880d681SAndroid Build Coastguard Worker} 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlt8xi8(<8 x i8> %A, <8 x i8> %B) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt8xi8: 180*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 181*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 182*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, v1.8b, v0.8b 183*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <8 x i8> %A, %B; 184*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 185*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 186*9880d681SAndroid Build Coastguard Worker} 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlt16xi8(<16 x i8> %A, <16 x i8> %B) { 189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt16xi8: 190*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 191*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 192*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, v1.16b, v0.16b 193*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <16 x i8> %A, %B; 194*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 195*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 196*9880d681SAndroid Build Coastguard Worker} 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlt4xi16(<4 x i16> %A, <4 x i16> %B) { 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt4xi16: 200*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 201*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 202*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, v1.4h, v0.4h 203*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <4 x i16> %A, %B; 204*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 205*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 206*9880d681SAndroid Build Coastguard Worker} 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlt8xi16(<8 x i16> %A, <8 x i16> %B) { 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt8xi16: 210*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 211*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 212*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, v1.8h, v0.8h 213*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <8 x i16> %A, %B; 214*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 215*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 216*9880d681SAndroid Build Coastguard Worker} 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlt2xi32(<2 x i32> %A, <2 x i32> %B) { 219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt2xi32: 220*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 221*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 222*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 223*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <2 x i32> %A, %B; 224*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 225*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlt4xi32(<4 x i32> %A, <4 x i32> %B) { 229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt4xi32: 230*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 231*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 232*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 233*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <4 x i32> %A, %B; 234*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 235*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 236*9880d681SAndroid Build Coastguard Worker} 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlt2xi64(<2 x i64> %A, <2 x i64> %B) { 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt2xi64: 240*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 241*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands. 242*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 243*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <2 x i64> %A, %B; 244*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 245*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmge8xi8(<8 x i8> %A, <8 x i8> %B) { 249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge8xi8: 250*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 251*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <8 x i8> %A, %B; 252*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 253*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 254*9880d681SAndroid Build Coastguard Worker} 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmge16xi8(<16 x i8> %A, <16 x i8> %B) { 257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge16xi8: 258*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 259*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <16 x i8> %A, %B; 260*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 261*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 262*9880d681SAndroid Build Coastguard Worker} 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmge4xi16(<4 x i16> %A, <4 x i16> %B) { 265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge4xi16: 266*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 267*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <4 x i16> %A, %B; 268*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 269*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmge8xi16(<8 x i16> %A, <8 x i16> %B) { 273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge8xi16: 274*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 275*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <8 x i16> %A, %B; 276*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 277*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 278*9880d681SAndroid Build Coastguard Worker} 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmge2xi32(<2 x i32> %A, <2 x i32> %B) { 281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge2xi32: 282*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 283*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <2 x i32> %A, %B; 284*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 285*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 286*9880d681SAndroid Build Coastguard Worker} 287*9880d681SAndroid Build Coastguard Worker 288*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmge4xi32(<4 x i32> %A, <4 x i32> %B) { 289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge4xi32: 290*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 291*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <4 x i32> %A, %B; 292*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 293*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 294*9880d681SAndroid Build Coastguard Worker} 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmge2xi64(<2 x i64> %A, <2 x i64> %B) { 297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge2xi64: 298*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 299*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <2 x i64> %A, %B; 300*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 301*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 302*9880d681SAndroid Build Coastguard Worker} 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmle8xi8(<8 x i8> %A, <8 x i8> %B) { 305*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle8xi8: 306*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 307*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 308*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, v1.8b, v0.8b 309*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <8 x i8> %A, %B; 310*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 311*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 312*9880d681SAndroid Build Coastguard Worker} 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmle16xi8(<16 x i8> %A, <16 x i8> %B) { 315*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle16xi8: 316*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 317*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 318*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, v1.16b, v0.16b 319*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <16 x i8> %A, %B; 320*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 321*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmle4xi16(<4 x i16> %A, <4 x i16> %B) { 325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle4xi16: 326*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 327*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 328*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, v1.4h, v0.4h 329*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <4 x i16> %A, %B; 330*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 331*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 332*9880d681SAndroid Build Coastguard Worker} 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmle8xi16(<8 x i16> %A, <8 x i16> %B) { 335*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle8xi16: 336*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 337*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 338*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, v1.8h, v0.8h 339*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <8 x i16> %A, %B; 340*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 341*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmle2xi32(<2 x i32> %A, <2 x i32> %B) { 345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle2xi32: 346*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 347*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 348*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, v1.2s, v0.2s 349*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <2 x i32> %A, %B; 350*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 351*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 352*9880d681SAndroid Build Coastguard Worker} 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmle4xi32(<4 x i32> %A, <4 x i32> %B) { 355*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle4xi32: 356*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 357*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 358*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, v1.4s, v0.4s 359*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <4 x i32> %A, %B; 360*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 361*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 362*9880d681SAndroid Build Coastguard Worker} 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmle2xi64(<2 x i64> %A, <2 x i64> %B) { 365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle2xi64: 366*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 367*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands. 368*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, v1.2d, v0.2d 369*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <2 x i64> %A, %B; 370*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 371*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 372*9880d681SAndroid Build Coastguard Worker} 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhi8xi8(<8 x i8> %A, <8 x i8> %B) { 375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi8xi8: 376*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 377*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <8 x i8> %A, %B; 378*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 379*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 380*9880d681SAndroid Build Coastguard Worker} 381*9880d681SAndroid Build Coastguard Worker 382*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhi16xi8(<16 x i8> %A, <16 x i8> %B) { 383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi16xi8: 384*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 385*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <16 x i8> %A, %B; 386*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 387*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 388*9880d681SAndroid Build Coastguard Worker} 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhi4xi16(<4 x i16> %A, <4 x i16> %B) { 391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi4xi16: 392*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 393*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <4 x i16> %A, %B; 394*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 395*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 396*9880d681SAndroid Build Coastguard Worker} 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhi8xi16(<8 x i16> %A, <8 x i16> %B) { 399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi8xi16: 400*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 401*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <8 x i16> %A, %B; 402*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 403*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 404*9880d681SAndroid Build Coastguard Worker} 405*9880d681SAndroid Build Coastguard Worker 406*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhi2xi32(<2 x i32> %A, <2 x i32> %B) { 407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi2xi32: 408*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 409*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <2 x i32> %A, %B; 410*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 411*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 412*9880d681SAndroid Build Coastguard Worker} 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhi4xi32(<4 x i32> %A, <4 x i32> %B) { 415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi4xi32: 416*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 417*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <4 x i32> %A, %B; 418*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 419*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 420*9880d681SAndroid Build Coastguard Worker} 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhi2xi64(<2 x i64> %A, <2 x i64> %B) { 423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi2xi64: 424*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 425*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <2 x i64> %A, %B; 426*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 427*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 428*9880d681SAndroid Build Coastguard Worker} 429*9880d681SAndroid Build Coastguard Worker 430*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlo8xi8(<8 x i8> %A, <8 x i8> %B) { 431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo8xi8: 432*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 433*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 434*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8b, v1.8b, v0.8b 435*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <8 x i8> %A, %B; 436*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 437*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 438*9880d681SAndroid Build Coastguard Worker} 439*9880d681SAndroid Build Coastguard Worker 440*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlo16xi8(<16 x i8> %A, <16 x i8> %B) { 441*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo16xi8: 442*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 443*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 444*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b 445*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <16 x i8> %A, %B; 446*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 447*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 448*9880d681SAndroid Build Coastguard Worker} 449*9880d681SAndroid Build Coastguard Worker 450*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlo4xi16(<4 x i16> %A, <4 x i16> %B) { 451*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo4xi16: 452*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 453*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 454*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h 455*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <4 x i16> %A, %B; 456*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 457*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 458*9880d681SAndroid Build Coastguard Worker} 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlo8xi16(<8 x i16> %A, <8 x i16> %B) { 461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo8xi16: 462*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 463*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 464*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h 465*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <8 x i16> %A, %B; 466*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 467*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 468*9880d681SAndroid Build Coastguard Worker} 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlo2xi32(<2 x i32> %A, <2 x i32> %B) { 471*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo2xi32: 472*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 473*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 474*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s 475*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <2 x i32> %A, %B; 476*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 477*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 478*9880d681SAndroid Build Coastguard Worker} 479*9880d681SAndroid Build Coastguard Worker 480*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlo4xi32(<4 x i32> %A, <4 x i32> %B) { 481*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo4xi32: 482*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 483*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 484*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s 485*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <4 x i32> %A, %B; 486*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 487*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 488*9880d681SAndroid Build Coastguard Worker} 489*9880d681SAndroid Build Coastguard Worker 490*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlo2xi64(<2 x i64> %A, <2 x i64> %B) { 491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo2xi64: 492*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 493*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 494*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d 495*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <2 x i64> %A, %B; 496*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 497*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 498*9880d681SAndroid Build Coastguard Worker} 499*9880d681SAndroid Build Coastguard Worker 500*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhs8xi8(<8 x i8> %A, <8 x i8> %B) { 501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs8xi8: 502*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 503*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <8 x i8> %A, %B; 504*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 505*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 506*9880d681SAndroid Build Coastguard Worker} 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhs16xi8(<16 x i8> %A, <16 x i8> %B) { 509*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs16xi8: 510*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 511*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <16 x i8> %A, %B; 512*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 513*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhs4xi16(<4 x i16> %A, <4 x i16> %B) { 517*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs4xi16: 518*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 519*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <4 x i16> %A, %B; 520*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 521*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 522*9880d681SAndroid Build Coastguard Worker} 523*9880d681SAndroid Build Coastguard Worker 524*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhs8xi16(<8 x i16> %A, <8 x i16> %B) { 525*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs8xi16: 526*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 527*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <8 x i16> %A, %B; 528*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 529*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhs2xi32(<2 x i32> %A, <2 x i32> %B) { 533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs2xi32: 534*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 535*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <2 x i32> %A, %B; 536*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 537*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 538*9880d681SAndroid Build Coastguard Worker} 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhs4xi32(<4 x i32> %A, <4 x i32> %B) { 541*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs4xi32: 542*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 543*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <4 x i32> %A, %B; 544*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 545*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 546*9880d681SAndroid Build Coastguard Worker} 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhs2xi64(<2 x i64> %A, <2 x i64> %B) { 549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs2xi64: 550*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 551*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <2 x i64> %A, %B; 552*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 553*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 554*9880d681SAndroid Build Coastguard Worker} 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmls8xi8(<8 x i8> %A, <8 x i8> %B) { 557*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls8xi8: 558*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 559*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 560*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b 561*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <8 x i8> %A, %B; 562*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 563*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmls16xi8(<16 x i8> %A, <16 x i8> %B) { 567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls16xi8: 568*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 569*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 570*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b 571*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <16 x i8> %A, %B; 572*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 573*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 574*9880d681SAndroid Build Coastguard Worker} 575*9880d681SAndroid Build Coastguard Worker 576*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmls4xi16(<4 x i16> %A, <4 x i16> %B) { 577*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls4xi16: 578*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 579*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 580*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h 581*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <4 x i16> %A, %B; 582*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 583*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 584*9880d681SAndroid Build Coastguard Worker} 585*9880d681SAndroid Build Coastguard Worker 586*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmls8xi16(<8 x i16> %A, <8 x i16> %B) { 587*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls8xi16: 588*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 589*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 590*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h 591*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <8 x i16> %A, %B; 592*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 593*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 594*9880d681SAndroid Build Coastguard Worker} 595*9880d681SAndroid Build Coastguard Worker 596*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmls2xi32(<2 x i32> %A, <2 x i32> %B) { 597*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls2xi32: 598*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 599*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 600*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s 601*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <2 x i32> %A, %B; 602*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 603*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 604*9880d681SAndroid Build Coastguard Worker} 605*9880d681SAndroid Build Coastguard Worker 606*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmls4xi32(<4 x i32> %A, <4 x i32> %B) { 607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls4xi32: 608*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 609*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 610*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s 611*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <4 x i32> %A, %B; 612*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 613*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 614*9880d681SAndroid Build Coastguard Worker} 615*9880d681SAndroid Build Coastguard Worker 616*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmls2xi64(<2 x i64> %A, <2 x i64> %B) { 617*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls2xi64: 618*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 619*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 620*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d 621*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <2 x i64> %A, %B; 622*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 623*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 624*9880d681SAndroid Build Coastguard Worker} 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmtst8xi8(<8 x i8> %A, <8 x i8> %B) { 627*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst8xi8: 628*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 629*9880d681SAndroid Build Coastguard Worker %tmp3 = and <8 x i8> %A, %B 630*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer 631*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <8 x i1> %tmp4 to <8 x i8> 632*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 633*9880d681SAndroid Build Coastguard Worker} 634*9880d681SAndroid Build Coastguard Worker 635*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmtst16xi8(<16 x i8> %A, <16 x i8> %B) { 636*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst16xi8: 637*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 638*9880d681SAndroid Build Coastguard Worker %tmp3 = and <16 x i8> %A, %B 639*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <16 x i8> %tmp3, zeroinitializer 640*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <16 x i1> %tmp4 to <16 x i8> 641*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 642*9880d681SAndroid Build Coastguard Worker} 643*9880d681SAndroid Build Coastguard Worker 644*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmtst4xi16(<4 x i16> %A, <4 x i16> %B) { 645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst4xi16: 646*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 647*9880d681SAndroid Build Coastguard Worker %tmp3 = and <4 x i16> %A, %B 648*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <4 x i16> %tmp3, zeroinitializer 649*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <4 x i1> %tmp4 to <4 x i16> 650*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 651*9880d681SAndroid Build Coastguard Worker} 652*9880d681SAndroid Build Coastguard Worker 653*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmtst8xi16(<8 x i16> %A, <8 x i16> %B) { 654*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst8xi16: 655*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 656*9880d681SAndroid Build Coastguard Worker %tmp3 = and <8 x i16> %A, %B 657*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <8 x i16> %tmp3, zeroinitializer 658*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <8 x i1> %tmp4 to <8 x i16> 659*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 660*9880d681SAndroid Build Coastguard Worker} 661*9880d681SAndroid Build Coastguard Worker 662*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmtst2xi32(<2 x i32> %A, <2 x i32> %B) { 663*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst2xi32: 664*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 665*9880d681SAndroid Build Coastguard Worker %tmp3 = and <2 x i32> %A, %B 666*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <2 x i32> %tmp3, zeroinitializer 667*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <2 x i1> %tmp4 to <2 x i32> 668*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 669*9880d681SAndroid Build Coastguard Worker} 670*9880d681SAndroid Build Coastguard Worker 671*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmtst4xi32(<4 x i32> %A, <4 x i32> %B) { 672*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst4xi32: 673*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 674*9880d681SAndroid Build Coastguard Worker %tmp3 = and <4 x i32> %A, %B 675*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <4 x i32> %tmp3, zeroinitializer 676*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <4 x i1> %tmp4 to <4 x i32> 677*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 678*9880d681SAndroid Build Coastguard Worker} 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmtst2xi64(<2 x i64> %A, <2 x i64> %B) { 681*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst2xi64: 682*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 683*9880d681SAndroid Build Coastguard Worker %tmp3 = and <2 x i64> %A, %B 684*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp ne <2 x i64> %tmp3, zeroinitializer 685*9880d681SAndroid Build Coastguard Worker %tmp5 = sext <2 x i1> %tmp4 to <2 x i64> 686*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 687*9880d681SAndroid Build Coastguard Worker} 688*9880d681SAndroid Build Coastguard Worker 689*9880d681SAndroid Build Coastguard Worker 690*9880d681SAndroid Build Coastguard Worker 691*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmeqz8xi8(<8 x i8> %A) { 692*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz8xi8: 693*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 694*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <8 x i8> %A, zeroinitializer; 695*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 696*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 697*9880d681SAndroid Build Coastguard Worker} 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmeqz16xi8(<16 x i8> %A) { 700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz16xi8: 701*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 702*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <16 x i8> %A, zeroinitializer; 703*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 704*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 705*9880d681SAndroid Build Coastguard Worker} 706*9880d681SAndroid Build Coastguard Worker 707*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmeqz4xi16(<4 x i16> %A) { 708*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz4xi16: 709*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 710*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <4 x i16> %A, zeroinitializer; 711*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 712*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 713*9880d681SAndroid Build Coastguard Worker} 714*9880d681SAndroid Build Coastguard Worker 715*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmeqz8xi16(<8 x i16> %A) { 716*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz8xi16: 717*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 718*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <8 x i16> %A, zeroinitializer; 719*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 720*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 721*9880d681SAndroid Build Coastguard Worker} 722*9880d681SAndroid Build Coastguard Worker 723*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmeqz2xi32(<2 x i32> %A) { 724*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz2xi32: 725*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 726*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <2 x i32> %A, zeroinitializer; 727*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 728*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 729*9880d681SAndroid Build Coastguard Worker} 730*9880d681SAndroid Build Coastguard Worker 731*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmeqz4xi32(<4 x i32> %A) { 732*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz4xi32: 733*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 734*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <4 x i32> %A, zeroinitializer; 735*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 736*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 737*9880d681SAndroid Build Coastguard Worker} 738*9880d681SAndroid Build Coastguard Worker 739*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmeqz2xi64(<2 x i64> %A) { 740*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz2xi64: 741*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 742*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp eq <2 x i64> %A, zeroinitializer; 743*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 744*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 745*9880d681SAndroid Build Coastguard Worker} 746*9880d681SAndroid Build Coastguard Worker 747*9880d681SAndroid Build Coastguard Worker 748*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgez8xi8(<8 x i8> %A) { 749*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi8: 750*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 751*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <8 x i8> %A, zeroinitializer; 752*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 753*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 754*9880d681SAndroid Build Coastguard Worker} 755*9880d681SAndroid Build Coastguard Worker 756*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgez16xi8(<16 x i8> %A) { 757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez16xi8: 758*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 759*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <16 x i8> %A, zeroinitializer; 760*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 761*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 762*9880d681SAndroid Build Coastguard Worker} 763*9880d681SAndroid Build Coastguard Worker 764*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgez4xi16(<4 x i16> %A) { 765*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi16: 766*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 767*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <4 x i16> %A, zeroinitializer; 768*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 769*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Worker 772*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgez8xi16(<8 x i16> %A) { 773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi16: 774*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 775*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <8 x i16> %A, zeroinitializer; 776*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 777*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 778*9880d681SAndroid Build Coastguard Worker} 779*9880d681SAndroid Build Coastguard Worker 780*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgez2xi32(<2 x i32> %A) { 781*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi32: 782*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 783*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <2 x i32> %A, zeroinitializer; 784*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 785*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 786*9880d681SAndroid Build Coastguard Worker} 787*9880d681SAndroid Build Coastguard Worker 788*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgez4xi32(<4 x i32> %A) { 789*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi32: 790*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 791*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <4 x i32> %A, zeroinitializer; 792*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 793*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 794*9880d681SAndroid Build Coastguard Worker} 795*9880d681SAndroid Build Coastguard Worker 796*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgez2xi64(<2 x i64> %A) { 797*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi64: 798*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 799*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sge <2 x i64> %A, zeroinitializer; 800*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 801*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 802*9880d681SAndroid Build Coastguard Worker} 803*9880d681SAndroid Build Coastguard Worker 804*9880d681SAndroid Build Coastguard Worker 805*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgez8xi8_alt(<8 x i8> %A) { 806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi8_alt: 807*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 808*9880d681SAndroid Build Coastguard Worker %sign = ashr <8 x i8> %A, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> 809*9880d681SAndroid Build Coastguard Worker %not = xor <8 x i8> %sign, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 810*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %not 811*9880d681SAndroid Build Coastguard Worker} 812*9880d681SAndroid Build Coastguard Worker 813*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgez16xi8_alt(<16 x i8> %A) { 814*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez16xi8_alt: 815*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 816*9880d681SAndroid Build Coastguard Worker %sign = ashr <16 x i8> %A, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> 817*9880d681SAndroid Build Coastguard Worker %not = xor <16 x i8> %sign, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 818*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %not 819*9880d681SAndroid Build Coastguard Worker} 820*9880d681SAndroid Build Coastguard Worker 821*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgez4xi16_alt(<4 x i16> %A) { 822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi16_alt: 823*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 824*9880d681SAndroid Build Coastguard Worker %sign = ashr <4 x i16> %A, <i16 15, i16 15, i16 15, i16 15> 825*9880d681SAndroid Build Coastguard Worker %not = xor <4 x i16> %sign, <i16 -1, i16 -1, i16 -1, i16 -1> 826*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %not 827*9880d681SAndroid Build Coastguard Worker} 828*9880d681SAndroid Build Coastguard Worker 829*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgez8xi16_alt(<8 x i16> %A) { 830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi16_alt: 831*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 832*9880d681SAndroid Build Coastguard Worker %sign = ashr <8 x i16> %A, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15> 833*9880d681SAndroid Build Coastguard Worker %not = xor <8 x i16> %sign, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 834*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %not 835*9880d681SAndroid Build Coastguard Worker} 836*9880d681SAndroid Build Coastguard Worker 837*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgez2xi32_alt(<2 x i32> %A) { 838*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi32_alt: 839*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 840*9880d681SAndroid Build Coastguard Worker %sign = ashr <2 x i32> %A, <i32 31, i32 31> 841*9880d681SAndroid Build Coastguard Worker %not = xor <2 x i32> %sign, <i32 -1, i32 -1> 842*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %not 843*9880d681SAndroid Build Coastguard Worker} 844*9880d681SAndroid Build Coastguard Worker 845*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgez4xi32_alt(<4 x i32> %A) { 846*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi32_alt: 847*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 848*9880d681SAndroid Build Coastguard Worker %sign = ashr <4 x i32> %A, <i32 31, i32 31, i32 31, i32 31> 849*9880d681SAndroid Build Coastguard Worker %not = xor <4 x i32> %sign, <i32 -1, i32 -1, i32 -1, i32 -1> 850*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %not 851*9880d681SAndroid Build Coastguard Worker} 852*9880d681SAndroid Build Coastguard Worker 853*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgez2xi64_alt(<2 x i64> %A) { 854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi64_alt: 855*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 856*9880d681SAndroid Build Coastguard Worker %sign = ashr <2 x i64> %A, <i64 63, i64 63> 857*9880d681SAndroid Build Coastguard Worker %not = xor <2 x i64> %sign, <i64 -1, i64 -1> 858*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %not 859*9880d681SAndroid Build Coastguard Worker} 860*9880d681SAndroid Build Coastguard Worker 861*9880d681SAndroid Build Coastguard Worker 862*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgtz8xi8(<8 x i8> %A) { 863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz8xi8: 864*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 865*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <8 x i8> %A, zeroinitializer; 866*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 867*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 868*9880d681SAndroid Build Coastguard Worker} 869*9880d681SAndroid Build Coastguard Worker 870*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgtz16xi8(<16 x i8> %A) { 871*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz16xi8: 872*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 873*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <16 x i8> %A, zeroinitializer; 874*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 875*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 876*9880d681SAndroid Build Coastguard Worker} 877*9880d681SAndroid Build Coastguard Worker 878*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgtz4xi16(<4 x i16> %A) { 879*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz4xi16: 880*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 881*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <4 x i16> %A, zeroinitializer; 882*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 883*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 884*9880d681SAndroid Build Coastguard Worker} 885*9880d681SAndroid Build Coastguard Worker 886*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgtz8xi16(<8 x i16> %A) { 887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz8xi16: 888*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 889*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <8 x i16> %A, zeroinitializer; 890*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 891*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 892*9880d681SAndroid Build Coastguard Worker} 893*9880d681SAndroid Build Coastguard Worker 894*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgtz2xi32(<2 x i32> %A) { 895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz2xi32: 896*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 897*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <2 x i32> %A, zeroinitializer; 898*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 899*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 900*9880d681SAndroid Build Coastguard Worker} 901*9880d681SAndroid Build Coastguard Worker 902*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgtz4xi32(<4 x i32> %A) { 903*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz4xi32: 904*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 905*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <4 x i32> %A, zeroinitializer; 906*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 907*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 908*9880d681SAndroid Build Coastguard Worker} 909*9880d681SAndroid Build Coastguard Worker 910*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgtz2xi64(<2 x i64> %A) { 911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz2xi64: 912*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 913*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sgt <2 x i64> %A, zeroinitializer; 914*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 915*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 916*9880d681SAndroid Build Coastguard Worker} 917*9880d681SAndroid Build Coastguard Worker 918*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlez8xi8(<8 x i8> %A) { 919*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez8xi8: 920*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 921*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <8 x i8> %A, zeroinitializer; 922*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 923*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 924*9880d681SAndroid Build Coastguard Worker} 925*9880d681SAndroid Build Coastguard Worker 926*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlez16xi8(<16 x i8> %A) { 927*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez16xi8: 928*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 929*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <16 x i8> %A, zeroinitializer; 930*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 931*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 932*9880d681SAndroid Build Coastguard Worker} 933*9880d681SAndroid Build Coastguard Worker 934*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlez4xi16(<4 x i16> %A) { 935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez4xi16: 936*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 937*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <4 x i16> %A, zeroinitializer; 938*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 939*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 940*9880d681SAndroid Build Coastguard Worker} 941*9880d681SAndroid Build Coastguard Worker 942*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlez8xi16(<8 x i16> %A) { 943*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez8xi16: 944*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 945*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <8 x i16> %A, zeroinitializer; 946*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 947*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 948*9880d681SAndroid Build Coastguard Worker} 949*9880d681SAndroid Build Coastguard Worker 950*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlez2xi32(<2 x i32> %A) { 951*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez2xi32: 952*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 953*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <2 x i32> %A, zeroinitializer; 954*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 955*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 956*9880d681SAndroid Build Coastguard Worker} 957*9880d681SAndroid Build Coastguard Worker 958*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlez4xi32(<4 x i32> %A) { 959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez4xi32: 960*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 961*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <4 x i32> %A, zeroinitializer; 962*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 963*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 964*9880d681SAndroid Build Coastguard Worker} 965*9880d681SAndroid Build Coastguard Worker 966*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlez2xi64(<2 x i64> %A) { 967*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez2xi64: 968*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 969*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp sle <2 x i64> %A, zeroinitializer; 970*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 971*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 972*9880d681SAndroid Build Coastguard Worker} 973*9880d681SAndroid Build Coastguard Worker 974*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmltz8xi8(<8 x i8> %A) { 975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz8xi8: 976*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 977*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <8 x i8> %A, zeroinitializer; 978*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 979*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 980*9880d681SAndroid Build Coastguard Worker} 981*9880d681SAndroid Build Coastguard Worker 982*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmltz16xi8(<16 x i8> %A) { 983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz16xi8: 984*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 985*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <16 x i8> %A, zeroinitializer; 986*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 987*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 988*9880d681SAndroid Build Coastguard Worker} 989*9880d681SAndroid Build Coastguard Worker 990*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmltz4xi16(<4 x i16> %A) { 991*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz4xi16: 992*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 993*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <4 x i16> %A, zeroinitializer; 994*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 995*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 996*9880d681SAndroid Build Coastguard Worker} 997*9880d681SAndroid Build Coastguard Worker 998*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmltz8xi16(<8 x i16> %A) { 999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz8xi16: 1000*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 1001*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <8 x i16> %A, zeroinitializer; 1002*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1003*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1004*9880d681SAndroid Build Coastguard Worker} 1005*9880d681SAndroid Build Coastguard Worker 1006*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmltz2xi32(<2 x i32> %A) { 1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz2xi32: 1008*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 1009*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <2 x i32> %A, zeroinitializer; 1010*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1011*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1012*9880d681SAndroid Build Coastguard Worker} 1013*9880d681SAndroid Build Coastguard Worker 1014*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmltz4xi32(<4 x i32> %A) { 1015*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz4xi32: 1016*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 1017*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <4 x i32> %A, zeroinitializer; 1018*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1019*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1020*9880d681SAndroid Build Coastguard Worker} 1021*9880d681SAndroid Build Coastguard Worker 1022*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmltz2xi64(<2 x i64> %A) { 1023*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz2xi64: 1024*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 1025*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp slt <2 x i64> %A, zeroinitializer; 1026*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1027*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1028*9880d681SAndroid Build Coastguard Worker} 1029*9880d681SAndroid Build Coastguard Worker 1030*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmneqz8xi8(<8 x i8> %A) { 1031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz8xi8: 1032*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}} 1033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1034*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <8 x i8> %A, zeroinitializer; 1035*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 1036*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 1037*9880d681SAndroid Build Coastguard Worker} 1038*9880d681SAndroid Build Coastguard Worker 1039*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmneqz16xi8(<16 x i8> %A) { 1040*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz16xi8: 1041*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}} 1042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1043*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <16 x i8> %A, zeroinitializer; 1044*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 1045*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1046*9880d681SAndroid Build Coastguard Worker} 1047*9880d681SAndroid Build Coastguard Worker 1048*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmneqz4xi16(<4 x i16> %A) { 1049*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz4xi16: 1050*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}} 1051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1052*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <4 x i16> %A, zeroinitializer; 1053*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 1054*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 1055*9880d681SAndroid Build Coastguard Worker} 1056*9880d681SAndroid Build Coastguard Worker 1057*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmneqz8xi16(<8 x i16> %A) { 1058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz8xi16: 1059*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}} 1060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1061*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <8 x i16> %A, zeroinitializer; 1062*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1063*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1064*9880d681SAndroid Build Coastguard Worker} 1065*9880d681SAndroid Build Coastguard Worker 1066*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmneqz2xi32(<2 x i32> %A) { 1067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz2xi32: 1068*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}} 1069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1070*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <2 x i32> %A, zeroinitializer; 1071*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1072*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1073*9880d681SAndroid Build Coastguard Worker} 1074*9880d681SAndroid Build Coastguard Worker 1075*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmneqz4xi32(<4 x i32> %A) { 1076*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz4xi32: 1077*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}} 1078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1079*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <4 x i32> %A, zeroinitializer; 1080*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1081*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1082*9880d681SAndroid Build Coastguard Worker} 1083*9880d681SAndroid Build Coastguard Worker 1084*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmneqz2xi64(<2 x i64> %A) { 1085*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz2xi64: 1086*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}} 1087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1088*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ne <2 x i64> %A, zeroinitializer; 1089*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1090*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1091*9880d681SAndroid Build Coastguard Worker} 1092*9880d681SAndroid Build Coastguard Worker 1093*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhsz8xi8(<8 x i8> %A) { 1094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz8xi8: 1095*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1097*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <8 x i8> %A, zeroinitializer; 1098*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 1099*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 1100*9880d681SAndroid Build Coastguard Worker} 1101*9880d681SAndroid Build Coastguard Worker 1102*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhsz16xi8(<16 x i8> %A) { 1103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz16xi8: 1104*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1106*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <16 x i8> %A, zeroinitializer; 1107*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 1108*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1109*9880d681SAndroid Build Coastguard Worker} 1110*9880d681SAndroid Build Coastguard Worker 1111*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhsz4xi16(<4 x i16> %A) { 1112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz4xi16: 1113*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1115*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <4 x i16> %A, zeroinitializer; 1116*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 1117*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 1118*9880d681SAndroid Build Coastguard Worker} 1119*9880d681SAndroid Build Coastguard Worker 1120*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhsz8xi16(<8 x i16> %A) { 1121*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz8xi16: 1122*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1124*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <8 x i16> %A, zeroinitializer; 1125*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1126*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1127*9880d681SAndroid Build Coastguard Worker} 1128*9880d681SAndroid Build Coastguard Worker 1129*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhsz2xi32(<2 x i32> %A) { 1130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz2xi32: 1131*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 1133*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <2 x i32> %A, zeroinitializer; 1134*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1135*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1136*9880d681SAndroid Build Coastguard Worker} 1137*9880d681SAndroid Build Coastguard Worker 1138*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhsz4xi32(<4 x i32> %A) { 1139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz4xi32: 1140*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1142*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <4 x i32> %A, zeroinitializer; 1143*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1144*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1145*9880d681SAndroid Build Coastguard Worker} 1146*9880d681SAndroid Build Coastguard Worker 1147*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhsz2xi64(<2 x i64> %A) { 1148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz2xi64: 1149*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 1151*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp uge <2 x i64> %A, zeroinitializer; 1152*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1153*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1154*9880d681SAndroid Build Coastguard Worker} 1155*9880d681SAndroid Build Coastguard Worker 1156*9880d681SAndroid Build Coastguard Worker 1157*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhiz8xi8(<8 x i8> %A) { 1158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz8xi8: 1159*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1161*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <8 x i8> %A, zeroinitializer; 1162*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 1163*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 1164*9880d681SAndroid Build Coastguard Worker} 1165*9880d681SAndroid Build Coastguard Worker 1166*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhiz16xi8(<16 x i8> %A) { 1167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz16xi8: 1168*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1170*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <16 x i8> %A, zeroinitializer; 1171*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 1172*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1173*9880d681SAndroid Build Coastguard Worker} 1174*9880d681SAndroid Build Coastguard Worker 1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhiz4xi16(<4 x i16> %A) { 1176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz4xi16: 1177*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1179*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <4 x i16> %A, zeroinitializer; 1180*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 1181*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 1182*9880d681SAndroid Build Coastguard Worker} 1183*9880d681SAndroid Build Coastguard Worker 1184*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhiz8xi16(<8 x i16> %A) { 1185*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz8xi16: 1186*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1188*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <8 x i16> %A, zeroinitializer; 1189*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1190*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1191*9880d681SAndroid Build Coastguard Worker} 1192*9880d681SAndroid Build Coastguard Worker 1193*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhiz2xi32(<2 x i32> %A) { 1194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz2xi32: 1195*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}} 1196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 1197*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <2 x i32> %A, zeroinitializer; 1198*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1199*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1200*9880d681SAndroid Build Coastguard Worker} 1201*9880d681SAndroid Build Coastguard Worker 1202*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhiz4xi32(<4 x i32> %A) { 1203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz4xi32: 1204*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1206*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <4 x i32> %A, zeroinitializer; 1207*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1208*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1209*9880d681SAndroid Build Coastguard Worker} 1210*9880d681SAndroid Build Coastguard Worker 1211*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhiz2xi64(<2 x i64> %A) { 1212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz2xi64: 1213*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}} 1214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 1215*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ugt <2 x i64> %A, zeroinitializer; 1216*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1217*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1218*9880d681SAndroid Build Coastguard Worker} 1219*9880d681SAndroid Build Coastguard Worker 1220*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlsz8xi8(<8 x i8> %A) { 1221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz8xi8: 1222*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1223*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1224*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b 1226*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <8 x i8> %A, zeroinitializer; 1227*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 1228*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 1229*9880d681SAndroid Build Coastguard Worker} 1230*9880d681SAndroid Build Coastguard Worker 1231*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlsz16xi8(<16 x i8> %A) { 1232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz16xi8: 1233*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1234*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1235*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b 1237*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <16 x i8> %A, zeroinitializer; 1238*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 1239*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1240*9880d681SAndroid Build Coastguard Worker} 1241*9880d681SAndroid Build Coastguard Worker 1242*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlsz4xi16(<4 x i16> %A) { 1243*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz4xi16: 1244*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1245*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1246*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h 1248*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <4 x i16> %A, zeroinitializer; 1249*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 1250*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 1251*9880d681SAndroid Build Coastguard Worker} 1252*9880d681SAndroid Build Coastguard Worker 1253*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlsz8xi16(<8 x i16> %A) { 1254*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz8xi16: 1255*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1256*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1257*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h 1259*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <8 x i16> %A, zeroinitializer; 1260*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1261*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1262*9880d681SAndroid Build Coastguard Worker} 1263*9880d681SAndroid Build Coastguard Worker 1264*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlsz2xi32(<2 x i32> %A) { 1265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz2xi32: 1266*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1267*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1268*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s 1270*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <2 x i32> %A, zeroinitializer; 1271*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1272*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1273*9880d681SAndroid Build Coastguard Worker} 1274*9880d681SAndroid Build Coastguard Worker 1275*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlsz4xi32(<4 x i32> %A) { 1276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz4xi32: 1277*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1278*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1279*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s 1281*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <4 x i32> %A, zeroinitializer; 1282*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1283*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1284*9880d681SAndroid Build Coastguard Worker} 1285*9880d681SAndroid Build Coastguard Worker 1286*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlsz2xi64(<2 x i64> %A) { 1287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz2xi64: 1288*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1289*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands. 1290*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d 1292*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ule <2 x i64> %A, zeroinitializer; 1293*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1294*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1295*9880d681SAndroid Build Coastguard Worker} 1296*9880d681SAndroid Build Coastguard Worker 1297*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmloz8xi8(<8 x i8> %A) { 1298*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz8xi8: 1299*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1300*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1301*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8b, v1.8b, {{v[0-9]+}}.8b 1303*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <8 x i8> %A, zeroinitializer; 1304*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i8> 1305*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp4 1306*9880d681SAndroid Build Coastguard Worker} 1307*9880d681SAndroid Build Coastguard Worker 1308*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmloz16xi8(<16 x i8> %A) { 1309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz16xi8: 1310*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1311*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1312*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b 1314*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <16 x i8> %A, zeroinitializer; 1315*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <16 x i1> %tmp3 to <16 x i8> 1316*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1317*9880d681SAndroid Build Coastguard Worker} 1318*9880d681SAndroid Build Coastguard Worker 1319*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmloz4xi16(<4 x i16> %A) { 1320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz4xi16: 1321*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1322*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1323*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h 1325*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <4 x i16> %A, zeroinitializer; 1326*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i16> 1327*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp4 1328*9880d681SAndroid Build Coastguard Worker} 1329*9880d681SAndroid Build Coastguard Worker 1330*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmloz8xi16(<8 x i16> %A) { 1331*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz8xi16: 1332*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1333*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1334*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h 1336*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <8 x i16> %A, zeroinitializer; 1337*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <8 x i1> %tmp3 to <8 x i16> 1338*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1339*9880d681SAndroid Build Coastguard Worker} 1340*9880d681SAndroid Build Coastguard Worker 1341*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmloz2xi32(<2 x i32> %A) { 1342*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz2xi32: 1343*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1344*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1345*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}} 1346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s 1347*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <2 x i32> %A, zeroinitializer; 1348*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1349*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1350*9880d681SAndroid Build Coastguard Worker} 1351*9880d681SAndroid Build Coastguard Worker 1352*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmloz4xi32(<4 x i32> %A) { 1353*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz4xi32: 1354*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1355*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1356*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s 1358*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <4 x i32> %A, zeroinitializer; 1359*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1360*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1361*9880d681SAndroid Build Coastguard Worker} 1362*9880d681SAndroid Build Coastguard Worker 1363*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmloz2xi64(<2 x i64> %A) { 1364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz2xi64: 1365*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1366*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands. 1367*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}} 1368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d 1369*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult <2 x i64> %A, zeroinitializer; 1370*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1371*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1372*9880d681SAndroid Build Coastguard Worker} 1373*9880d681SAndroid Build Coastguard Worker 1374*9880d681SAndroid Build Coastguard Worker 1375*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoeq2xfloat(<2 x float> %A, <2 x float> %B) { 1376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq2xfloat: 1377*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 1378*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <2 x float> %A, %B 1379*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1380*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1381*9880d681SAndroid Build Coastguard Worker} 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoeq4xfloat(<4 x float> %A, <4 x float> %B) { 1384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq4xfloat: 1385*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1386*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <4 x float> %A, %B 1387*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1388*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1389*9880d681SAndroid Build Coastguard Worker} 1390*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoeq2xdouble(<2 x double> %A, <2 x double> %B) { 1391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq2xdouble: 1392*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 1393*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <2 x double> %A, %B 1394*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1395*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1396*9880d681SAndroid Build Coastguard Worker} 1397*9880d681SAndroid Build Coastguard Worker 1398*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoge2xfloat(<2 x float> %A, <2 x float> %B) { 1399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge2xfloat: 1400*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 1401*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <2 x float> %A, %B 1402*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1403*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1404*9880d681SAndroid Build Coastguard Worker} 1405*9880d681SAndroid Build Coastguard Worker 1406*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoge4xfloat(<4 x float> %A, <4 x float> %B) { 1407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge4xfloat: 1408*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1409*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <4 x float> %A, %B 1410*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1411*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1412*9880d681SAndroid Build Coastguard Worker} 1413*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoge2xdouble(<2 x double> %A, <2 x double> %B) { 1414*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge2xdouble: 1415*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 1416*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <2 x double> %A, %B 1417*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1418*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1419*9880d681SAndroid Build Coastguard Worker} 1420*9880d681SAndroid Build Coastguard Worker 1421*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogt2xfloat(<2 x float> %A, <2 x float> %B) { 1422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt2xfloat: 1423*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 1424*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <2 x float> %A, %B 1425*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1426*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1427*9880d681SAndroid Build Coastguard Worker} 1428*9880d681SAndroid Build Coastguard Worker 1429*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogt4xfloat(<4 x float> %A, <4 x float> %B) { 1430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt4xfloat: 1431*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1432*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <4 x float> %A, %B 1433*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1434*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1435*9880d681SAndroid Build Coastguard Worker} 1436*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogt2xdouble(<2 x double> %A, <2 x double> %B) { 1437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt2xdouble: 1438*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 1439*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <2 x double> %A, %B 1440*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1441*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1442*9880d681SAndroid Build Coastguard Worker} 1443*9880d681SAndroid Build Coastguard Worker 1444*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmole2xfloat(<2 x float> %A, <2 x float> %B) { 1445*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole2xfloat: 1446*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1447*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1448*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s 1449*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <2 x float> %A, %B 1450*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1451*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1452*9880d681SAndroid Build Coastguard Worker} 1453*9880d681SAndroid Build Coastguard Worker 1454*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmole4xfloat(<4 x float> %A, <4 x float> %B) { 1455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole4xfloat: 1456*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1457*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1458*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s 1459*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <4 x float> %A, %B 1460*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1461*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1462*9880d681SAndroid Build Coastguard Worker} 1463*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmole2xdouble(<2 x double> %A, <2 x double> %B) { 1464*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole2xdouble: 1465*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1466*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1467*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d 1468*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <2 x double> %A, %B 1469*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1470*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1471*9880d681SAndroid Build Coastguard Worker} 1472*9880d681SAndroid Build Coastguard Worker 1473*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmolt2xfloat(<2 x float> %A, <2 x float> %B) { 1474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt2xfloat: 1475*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1476*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1477*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1478*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <2 x float> %A, %B 1479*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1480*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1481*9880d681SAndroid Build Coastguard Worker} 1482*9880d681SAndroid Build Coastguard Worker 1483*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmolt4xfloat(<4 x float> %A, <4 x float> %B) { 1484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt4xfloat: 1485*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1486*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1487*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1488*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <4 x float> %A, %B 1489*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1490*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1491*9880d681SAndroid Build Coastguard Worker} 1492*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmolt2xdouble(<2 x double> %A, <2 x double> %B) { 1493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt2xdouble: 1494*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1495*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands. 1496*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1497*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <2 x double> %A, %B 1498*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1499*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1500*9880d681SAndroid Build Coastguard Worker} 1501*9880d681SAndroid Build Coastguard Worker 1502*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmone2xfloat(<2 x float> %A, <2 x float> %B) { 1503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone2xfloat: 1504*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1505*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands 1506*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s 1507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1509*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <2 x float> %A, %B 1510*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1511*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1512*9880d681SAndroid Build Coastguard Worker} 1513*9880d681SAndroid Build Coastguard Worker 1514*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmone4xfloat(<4 x float> %A, <4 x float> %B) { 1515*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone4xfloat: 1516*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1517*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands 1518*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s 1519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1521*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <4 x float> %A, %B 1522*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1523*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1524*9880d681SAndroid Build Coastguard Worker} 1525*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmone2xdouble(<2 x double> %A, <2 x double> %B) { 1526*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone2xdouble: 1527*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1528*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands 1529*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d 1530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1532*9880d681SAndroid Build Coastguard Worker; todo check reversed operands 1533*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <2 x double> %A, %B 1534*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1535*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1536*9880d681SAndroid Build Coastguard Worker} 1537*9880d681SAndroid Build Coastguard Worker 1538*9880d681SAndroid Build Coastguard Worker 1539*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmord2xfloat(<2 x float> %A, <2 x float> %B) { 1540*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord2xfloat: 1541*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1542*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands. 1543*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s 1544*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1546*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <2 x float> %A, %B 1547*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1548*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1549*9880d681SAndroid Build Coastguard Worker} 1550*9880d681SAndroid Build Coastguard Worker 1551*9880d681SAndroid Build Coastguard Worker 1552*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmord4xfloat(<4 x float> %A, <4 x float> %B) { 1553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord4xfloat: 1554*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1555*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands. 1556*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s 1557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1559*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <4 x float> %A, %B 1560*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1561*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1562*9880d681SAndroid Build Coastguard Worker} 1563*9880d681SAndroid Build Coastguard Worker 1564*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmord2xdouble(<2 x double> %A, <2 x double> %B) { 1565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord2xdouble: 1566*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1567*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands. 1568*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d 1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1571*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <2 x double> %A, %B 1572*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1573*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1574*9880d681SAndroid Build Coastguard Worker} 1575*9880d681SAndroid Build Coastguard Worker 1576*9880d681SAndroid Build Coastguard Worker 1577*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmuno2xfloat(<2 x float> %A, <2 x float> %B) { 1578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno2xfloat: 1579*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1580*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands. 1581*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s 1582*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1585*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <2 x float> %A, %B 1586*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1587*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1588*9880d681SAndroid Build Coastguard Worker} 1589*9880d681SAndroid Build Coastguard Worker 1590*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmuno4xfloat(<4 x float> %A, <4 x float> %B) { 1591*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno4xfloat: 1592*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1593*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands. 1594*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s 1595*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1598*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <4 x float> %A, %B 1599*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1600*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1601*9880d681SAndroid Build Coastguard Worker} 1602*9880d681SAndroid Build Coastguard Worker 1603*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmuno2xdouble(<2 x double> %A, <2 x double> %B) { 1604*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno2xdouble: 1605*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1606*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands. 1607*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d 1608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1611*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <2 x double> %A, %B 1612*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1613*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1614*9880d681SAndroid Build Coastguard Worker} 1615*9880d681SAndroid Build Coastguard Worker 1616*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmueq2xfloat(<2 x float> %A, <2 x float> %B) { 1617*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq2xfloat: 1618*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1619*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands 1620*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s 1621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1624*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <2 x float> %A, %B 1625*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1626*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1627*9880d681SAndroid Build Coastguard Worker} 1628*9880d681SAndroid Build Coastguard Worker 1629*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmueq4xfloat(<4 x float> %A, <4 x float> %B) { 1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq4xfloat: 1631*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1632*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands 1633*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s 1634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1637*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <4 x float> %A, %B 1638*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1639*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1640*9880d681SAndroid Build Coastguard Worker} 1641*9880d681SAndroid Build Coastguard Worker 1642*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmueq2xdouble(<2 x double> %A, <2 x double> %B) { 1643*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq2xdouble: 1644*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1645*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands 1646*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d 1647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1650*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <2 x double> %A, %B 1651*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1652*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1653*9880d681SAndroid Build Coastguard Worker} 1654*9880d681SAndroid Build Coastguard Worker 1655*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmuge2xfloat(<2 x float> %A, <2 x float> %B) { 1656*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge2xfloat: 1657*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1658*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT. 1659*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s 1660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1661*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <2 x float> %A, %B 1662*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1663*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1664*9880d681SAndroid Build Coastguard Worker} 1665*9880d681SAndroid Build Coastguard Worker 1666*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmuge4xfloat(<4 x float> %A, <4 x float> %B) { 1667*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge4xfloat: 1668*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1669*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT. 1670*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s 1671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1672*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <4 x float> %A, %B 1673*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1674*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1675*9880d681SAndroid Build Coastguard Worker} 1676*9880d681SAndroid Build Coastguard Worker 1677*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmuge2xdouble(<2 x double> %A, <2 x double> %B) { 1678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge2xdouble: 1679*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1680*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT. 1681*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d 1682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1683*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <2 x double> %A, %B 1684*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1685*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1686*9880d681SAndroid Build Coastguard Worker} 1687*9880d681SAndroid Build Coastguard Worker 1688*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugt2xfloat(<2 x float> %A, <2 x float> %B) { 1689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt2xfloat: 1690*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1691*9880d681SAndroid Build Coastguard Worker; UGT = ULT with swapped operands, ULT implemented as !OGE. 1692*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s 1693*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1694*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <2 x float> %A, %B 1695*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1696*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1697*9880d681SAndroid Build Coastguard Worker} 1698*9880d681SAndroid Build Coastguard Worker 1699*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugt4xfloat(<4 x float> %A, <4 x float> %B) { 1700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt4xfloat: 1701*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1702*9880d681SAndroid Build Coastguard Worker; UGT = ULT with swapped operands, ULT implemented as !OGE. 1703*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s 1704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1705*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <4 x float> %A, %B 1706*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1707*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1708*9880d681SAndroid Build Coastguard Worker} 1709*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugt2xdouble(<2 x double> %A, <2 x double> %B) { 1710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt2xdouble: 1711*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d 1712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1713*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <2 x double> %A, %B 1714*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1715*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1716*9880d681SAndroid Build Coastguard Worker} 1717*9880d681SAndroid Build Coastguard Worker 1718*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmule2xfloat(<2 x float> %A, <2 x float> %B) { 1719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule2xfloat: 1720*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1721*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT. 1722*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s 1723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1724*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <2 x float> %A, %B 1725*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1726*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1727*9880d681SAndroid Build Coastguard Worker} 1728*9880d681SAndroid Build Coastguard Worker 1729*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmule4xfloat(<4 x float> %A, <4 x float> %B) { 1730*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule4xfloat: 1731*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1732*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT. 1733*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s 1734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1735*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <4 x float> %A, %B 1736*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1737*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1738*9880d681SAndroid Build Coastguard Worker} 1739*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmule2xdouble(<2 x double> %A, <2 x double> %B) { 1740*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule2xdouble: 1741*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1742*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT. 1743*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d 1744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1745*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <2 x double> %A, %B 1746*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1747*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1748*9880d681SAndroid Build Coastguard Worker} 1749*9880d681SAndroid Build Coastguard Worker 1750*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmult2xfloat(<2 x float> %A, <2 x float> %B) { 1751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult2xfloat: 1752*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1753*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE. 1754*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s 1755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1756*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <2 x float> %A, %B 1757*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1758*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1759*9880d681SAndroid Build Coastguard Worker} 1760*9880d681SAndroid Build Coastguard Worker 1761*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmult4xfloat(<4 x float> %A, <4 x float> %B) { 1762*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult4xfloat: 1763*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1764*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE. 1765*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s 1766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1767*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <4 x float> %A, %B 1768*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1769*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1770*9880d681SAndroid Build Coastguard Worker} 1771*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmult2xdouble(<2 x double> %A, <2 x double> %B) { 1772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult2xdouble: 1773*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1774*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE. 1775*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d 1776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1777*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <2 x double> %A, %B 1778*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1779*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1780*9880d681SAndroid Build Coastguard Worker} 1781*9880d681SAndroid Build Coastguard Worker 1782*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmune2xfloat(<2 x float> %A, <2 x float> %B) { 1783*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune2xfloat: 1784*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1785*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ. 1786*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, v0.2s, v1.2s 1787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1788*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <2 x float> %A, %B 1789*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1790*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1791*9880d681SAndroid Build Coastguard Worker} 1792*9880d681SAndroid Build Coastguard Worker 1793*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmune4xfloat(<4 x float> %A, <4 x float> %B) { 1794*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune4xfloat: 1795*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1796*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ. 1797*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, v0.4s, v1.4s 1798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1799*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <4 x float> %A, %B 1800*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1801*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1802*9880d681SAndroid Build Coastguard Worker} 1803*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmune2xdouble(<2 x double> %A, <2 x double> %B) { 1804*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune2xdouble: 1805*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd. 1806*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ. 1807*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, v0.2d, v1.2d 1808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1809*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <2 x double> %A, %B 1810*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1811*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1812*9880d681SAndroid Build Coastguard Worker} 1813*9880d681SAndroid Build Coastguard Worker 1814*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoeqz2xfloat(<2 x float> %A) { 1815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz2xfloat: 1816*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1817*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <2 x float> %A, zeroinitializer 1818*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1819*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1820*9880d681SAndroid Build Coastguard Worker} 1821*9880d681SAndroid Build Coastguard Worker 1822*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoeqz4xfloat(<4 x float> %A) { 1823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz4xfloat: 1824*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1825*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <4 x float> %A, zeroinitializer 1826*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1827*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1828*9880d681SAndroid Build Coastguard Worker} 1829*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoeqz2xdouble(<2 x double> %A) { 1830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz2xdouble: 1831*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1832*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oeq <2 x double> %A, zeroinitializer 1833*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1834*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1835*9880d681SAndroid Build Coastguard Worker} 1836*9880d681SAndroid Build Coastguard Worker 1837*9880d681SAndroid Build Coastguard Worker 1838*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogez2xfloat(<2 x float> %A) { 1839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez2xfloat: 1840*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1841*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <2 x float> %A, zeroinitializer 1842*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1843*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1844*9880d681SAndroid Build Coastguard Worker} 1845*9880d681SAndroid Build Coastguard Worker 1846*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogez4xfloat(<4 x float> %A) { 1847*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez4xfloat: 1848*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1849*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <4 x float> %A, zeroinitializer 1850*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1851*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1852*9880d681SAndroid Build Coastguard Worker} 1853*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogez2xdouble(<2 x double> %A) { 1854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez2xdouble: 1855*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1856*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp oge <2 x double> %A, zeroinitializer 1857*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1858*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1859*9880d681SAndroid Build Coastguard Worker} 1860*9880d681SAndroid Build Coastguard Worker 1861*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogtz2xfloat(<2 x float> %A) { 1862*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz2xfloat: 1863*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1864*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <2 x float> %A, zeroinitializer 1865*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1866*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1867*9880d681SAndroid Build Coastguard Worker} 1868*9880d681SAndroid Build Coastguard Worker 1869*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogtz4xfloat(<4 x float> %A) { 1870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz4xfloat: 1871*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1872*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <4 x float> %A, zeroinitializer 1873*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1874*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1875*9880d681SAndroid Build Coastguard Worker} 1876*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogtz2xdouble(<2 x double> %A) { 1877*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz2xdouble: 1878*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1879*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ogt <2 x double> %A, zeroinitializer 1880*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1881*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1882*9880d681SAndroid Build Coastguard Worker} 1883*9880d681SAndroid Build Coastguard Worker 1884*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoltz2xfloat(<2 x float> %A) { 1885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz2xfloat: 1886*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1887*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <2 x float> %A, zeroinitializer 1888*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1889*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1890*9880d681SAndroid Build Coastguard Worker} 1891*9880d681SAndroid Build Coastguard Worker 1892*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoltz4xfloat(<4 x float> %A) { 1893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz4xfloat: 1894*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1895*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <4 x float> %A, zeroinitializer 1896*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1897*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1898*9880d681SAndroid Build Coastguard Worker} 1899*9880d681SAndroid Build Coastguard Worker 1900*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoltz2xdouble(<2 x double> %A) { 1901*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz2xdouble: 1902*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1903*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp olt <2 x double> %A, zeroinitializer 1904*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1905*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1906*9880d681SAndroid Build Coastguard Worker} 1907*9880d681SAndroid Build Coastguard Worker 1908*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmolez2xfloat(<2 x float> %A) { 1909*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez2xfloat: 1910*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1911*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <2 x float> %A, zeroinitializer 1912*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1913*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1914*9880d681SAndroid Build Coastguard Worker} 1915*9880d681SAndroid Build Coastguard Worker 1916*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmolez4xfloat(<4 x float> %A) { 1917*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez4xfloat: 1918*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1919*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <4 x float> %A, zeroinitializer 1920*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1921*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1922*9880d681SAndroid Build Coastguard Worker} 1923*9880d681SAndroid Build Coastguard Worker 1924*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmolez2xdouble(<2 x double> %A) { 1925*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez2xdouble: 1926*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1927*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ole <2 x double> %A, zeroinitializer 1928*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1929*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1930*9880d681SAndroid Build Coastguard Worker} 1931*9880d681SAndroid Build Coastguard Worker 1932*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmonez2xfloat(<2 x float> %A) { 1933*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez2xfloat: 1934*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT 1935*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1938*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <2 x float> %A, zeroinitializer 1939*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1940*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1941*9880d681SAndroid Build Coastguard Worker} 1942*9880d681SAndroid Build Coastguard Worker 1943*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmonez4xfloat(<4 x float> %A) { 1944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez4xfloat: 1945*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT 1946*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1947*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1949*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <4 x float> %A, zeroinitializer 1950*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1951*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1952*9880d681SAndroid Build Coastguard Worker} 1953*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmonez2xdouble(<2 x double> %A) { 1954*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez2xdouble: 1955*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT 1956*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1959*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp one <2 x double> %A, zeroinitializer 1960*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1961*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1962*9880d681SAndroid Build Coastguard Worker} 1963*9880d681SAndroid Build Coastguard Worker 1964*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmordz2xfloat(<2 x float> %A) { 1965*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz2xfloat: 1966*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE 1967*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 1969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1970*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <2 x float> %A, zeroinitializer 1971*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 1972*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 1973*9880d681SAndroid Build Coastguard Worker} 1974*9880d681SAndroid Build Coastguard Worker 1975*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmordz4xfloat(<4 x float> %A) { 1976*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz4xfloat: 1977*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE 1978*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 1980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1981*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <4 x float> %A, zeroinitializer 1982*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 1983*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1984*9880d681SAndroid Build Coastguard Worker} 1985*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmordz2xdouble(<2 x double> %A) { 1986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz2xdouble: 1987*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE 1988*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 1990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1991*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ord <2 x double> %A, zeroinitializer 1992*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 1993*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 1994*9880d681SAndroid Build Coastguard Worker} 1995*9880d681SAndroid Build Coastguard Worker 1996*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmueqz2xfloat(<2 x float> %A) { 1997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz2xfloat: 1998*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT) 1999*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2003*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <2 x float> %A, zeroinitializer 2004*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2005*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2006*9880d681SAndroid Build Coastguard Worker} 2007*9880d681SAndroid Build Coastguard Worker 2008*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmueqz4xfloat(<4 x float> %A) { 2009*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz4xfloat: 2010*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT) 2011*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2015*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <4 x float> %A, zeroinitializer 2016*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2017*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2018*9880d681SAndroid Build Coastguard Worker} 2019*9880d681SAndroid Build Coastguard Worker 2020*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmueqz2xdouble(<2 x double> %A) { 2021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz2xdouble: 2022*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT) 2023*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2027*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ueq <2 x double> %A, zeroinitializer 2028*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2029*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2030*9880d681SAndroid Build Coastguard Worker} 2031*9880d681SAndroid Build Coastguard Worker 2032*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugez2xfloat(<2 x float> %A) { 2033*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez2xfloat: 2034*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT 2035*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2037*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <2 x float> %A, zeroinitializer 2038*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2039*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2040*9880d681SAndroid Build Coastguard Worker} 2041*9880d681SAndroid Build Coastguard Worker 2042*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugez4xfloat(<4 x float> %A) { 2043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez4xfloat: 2044*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT 2045*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2047*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <4 x float> %A, zeroinitializer 2048*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2049*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2050*9880d681SAndroid Build Coastguard Worker} 2051*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugez2xdouble(<2 x double> %A) { 2052*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez2xdouble: 2053*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT 2054*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2056*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uge <2 x double> %A, zeroinitializer 2057*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2058*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2059*9880d681SAndroid Build Coastguard Worker} 2060*9880d681SAndroid Build Coastguard Worker 2061*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugtz2xfloat(<2 x float> %A) { 2062*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz2xfloat: 2063*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE 2064*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2066*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <2 x float> %A, zeroinitializer 2067*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2068*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2069*9880d681SAndroid Build Coastguard Worker} 2070*9880d681SAndroid Build Coastguard Worker 2071*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugtz4xfloat(<4 x float> %A) { 2072*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz4xfloat: 2073*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE 2074*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2076*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <4 x float> %A, zeroinitializer 2077*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2078*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2079*9880d681SAndroid Build Coastguard Worker} 2080*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugtz2xdouble(<2 x double> %A) { 2081*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz2xdouble: 2082*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE 2083*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2085*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ugt <2 x double> %A, zeroinitializer 2086*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2087*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2088*9880d681SAndroid Build Coastguard Worker} 2089*9880d681SAndroid Build Coastguard Worker 2090*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmultz2xfloat(<2 x float> %A) { 2091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz2xfloat: 2092*9880d681SAndroid Build Coastguard Worker; ULT with zero = !OGE 2093*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2095*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <2 x float> %A, zeroinitializer 2096*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2097*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2098*9880d681SAndroid Build Coastguard Worker} 2099*9880d681SAndroid Build Coastguard Worker 2100*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmultz4xfloat(<4 x float> %A) { 2101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz4xfloat: 2102*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2104*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <4 x float> %A, zeroinitializer 2105*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2106*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2107*9880d681SAndroid Build Coastguard Worker} 2108*9880d681SAndroid Build Coastguard Worker 2109*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmultz2xdouble(<2 x double> %A) { 2110*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz2xdouble: 2111*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2113*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ult <2 x double> %A, zeroinitializer 2114*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2115*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2116*9880d681SAndroid Build Coastguard Worker} 2117*9880d681SAndroid Build Coastguard Worker 2118*9880d681SAndroid Build Coastguard Worker 2119*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmulez2xfloat(<2 x float> %A) { 2120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez2xfloat: 2121*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT 2122*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2124*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <2 x float> %A, zeroinitializer 2125*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2126*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2127*9880d681SAndroid Build Coastguard Worker} 2128*9880d681SAndroid Build Coastguard Worker 2129*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmulez4xfloat(<4 x float> %A) { 2130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez4xfloat: 2131*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT 2132*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2134*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <4 x float> %A, zeroinitializer 2135*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2136*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2137*9880d681SAndroid Build Coastguard Worker} 2138*9880d681SAndroid Build Coastguard Worker 2139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmulez2xdouble(<2 x double> %A) { 2140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez2xdouble: 2141*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT 2142*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2144*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp ule <2 x double> %A, zeroinitializer 2145*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2146*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2147*9880d681SAndroid Build Coastguard Worker} 2148*9880d681SAndroid Build Coastguard Worker 2149*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmunez2xfloat(<2 x float> %A) { 2150*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez2xfloat: 2151*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero 2152*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2154*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <2 x float> %A, zeroinitializer 2155*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2156*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2157*9880d681SAndroid Build Coastguard Worker} 2158*9880d681SAndroid Build Coastguard Worker 2159*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmunez4xfloat(<4 x float> %A) { 2160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez4xfloat: 2161*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero 2162*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2164*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <4 x float> %A, zeroinitializer 2165*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2166*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2167*9880d681SAndroid Build Coastguard Worker} 2168*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmunez2xdouble(<2 x double> %A) { 2169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez2xdouble: 2170*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero 2171*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2173*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp une <2 x double> %A, zeroinitializer 2174*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2175*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2176*9880d681SAndroid Build Coastguard Worker} 2177*9880d681SAndroid Build Coastguard Worker 2178*9880d681SAndroid Build Coastguard Worker 2179*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmunoz2xfloat(<2 x float> %A) { 2180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz2xfloat: 2181*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE) 2182*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}} 2184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2186*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <2 x float> %A, zeroinitializer 2187*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i32> 2188*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp4 2189*9880d681SAndroid Build Coastguard Worker} 2190*9880d681SAndroid Build Coastguard Worker 2191*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmunoz4xfloat(<4 x float> %A) { 2192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz4xfloat: 2193*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE) 2194*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}} 2196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2198*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <4 x float> %A, zeroinitializer 2199*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <4 x i1> %tmp3 to <4 x i32> 2200*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 2201*9880d681SAndroid Build Coastguard Worker} 2202*9880d681SAndroid Build Coastguard Worker 2203*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmunoz2xdouble(<2 x double> %A) { 2204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz2xdouble: 2205*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE) 2206*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}} 2208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2210*9880d681SAndroid Build Coastguard Worker %tmp3 = fcmp uno <2 x double> %A, zeroinitializer 2211*9880d681SAndroid Build Coastguard Worker %tmp4 = sext <2 x i1> %tmp3 to <2 x i64> 2212*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp4 2213*9880d681SAndroid Build Coastguard Worker 2214*9880d681SAndroid Build Coastguard Worker} 2215