1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr6 -mattr=+altivec < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Check vector comparisons using altivec. For non-native types, just basic 4*9880d681SAndroid Build Coastguard Worker; comparison instruction check is done. For altivec supported type (16i8, 5*9880d681SAndroid Build Coastguard Worker; 8i16, 4i32, and 4f32) all the comparisons operators (==, !=, >, >=, <, <=) 6*9880d681SAndroid Build Coastguard Worker; are checked. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64" 10*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine <2 x i8> @v2si8_cmp(<2 x i8> %x, <2 x i8> %y) nounwind readnone { 13*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <2 x i8> %x, %y 14*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %cmp to <2 x i8> 15*9880d681SAndroid Build Coastguard Worker ret <2 x i8> %sext 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2si8_cmp: 18*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @v4si8_cmp(<4 x i8> %x, <4 x i8> %y) nounwind readnone { 22*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <4 x i8> %x, %y 23*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i8> 24*9880d681SAndroid Build Coastguard Worker ret <4 x i8> %sext 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si8_cmp: 27*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @v8si8_cmp(<8 x i8> %x, <8 x i8> %y) nounwind readnone { 31*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <8 x i8> %x, %y 32*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i8> 33*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %sext 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si8_cmp: 36*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; Additional tests for v16i8 since it is a altivec native type 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_eq(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 42*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <16 x i8> %x, %y 43*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 44*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_eq: 47*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb 2, 2, 3 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_ne(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 50*9880d681SAndroid Build Coastguard Workerentry: 51*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne <16 x i8> %x, %y 52*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 53*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 54*9880d681SAndroid Build Coastguard Worker} 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_ne: 56*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb [[RET:[0-9]+]], 2, 3 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_le(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 60*9880d681SAndroid Build Coastguard Workerentry: 61*9880d681SAndroid Build Coastguard Worker %cmp = icmp sle <16 x i8> %x, %y 62*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 63*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_le: 66*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsb [[RET:[0-9]+]], 2, 3 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16ui8_cmp_le(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 70*9880d681SAndroid Build Coastguard Workerentry: 71*9880d681SAndroid Build Coastguard Worker %cmp = icmp ule <16 x i8> %x, %y 72*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 73*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16ui8_cmp_le: 76*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtub [[RET:[0-9]+]], 2, 3 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_lt(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 80*9880d681SAndroid Build Coastguard Workerentry: 81*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt <16 x i8> %x, %y 82*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 83*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_lt: 86*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsb 2, 3, 2 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16ui8_cmp_lt(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 89*9880d681SAndroid Build Coastguard Workerentry: 90*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult <16 x i8> %x, %y 91*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 92*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16ui8_cmp_lt: 95*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtub 2, 3, 2 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_gt(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 98*9880d681SAndroid Build Coastguard Workerentry: 99*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <16 x i8> %x, %y 100*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 101*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_gt: 104*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsb 2, 2, 3 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16ui8_cmp_gt(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 107*9880d681SAndroid Build Coastguard Workerentry: 108*9880d681SAndroid Build Coastguard Worker %cmp = icmp ugt <16 x i8> %x, %y 109*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 110*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16ui8_cmp_gt: 113*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtub 2, 2, 3 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16si8_cmp_ge(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 116*9880d681SAndroid Build Coastguard Workerentry: 117*9880d681SAndroid Build Coastguard Worker %cmp = icmp sge <16 x i8> %x, %y 118*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 119*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si8_cmp_ge: 122*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsb [[RET:[0-9]+]], 3, 2 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @v16ui8_cmp_ge(<16 x i8> %x, <16 x i8> %y) nounwind readnone { 126*9880d681SAndroid Build Coastguard Workerentry: 127*9880d681SAndroid Build Coastguard Worker %cmp = icmp uge <16 x i8> %x, %y 128*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i8> 129*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %sext 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16ui8_cmp_ge: 132*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtub [[RET:[0-9]+]], 3, 2 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @v32si8_cmp(<32 x i8> %x, <32 x i8> %y) nounwind readnone { 137*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <32 x i8> %x, %y 138*9880d681SAndroid Build Coastguard Worker %sext = sext <32 x i1> %cmp to <32 x i8> 139*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %sext 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v32si8_cmp: 142*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 143*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequb {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @v2si16_cmp(<2 x i16> %x, <2 x i16> %y) nounwind readnone { 147*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <2 x i16> %x, %y 148*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %cmp to <2 x i16> 149*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %sext 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2si16_cmp: 152*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @v4si16_cmp(<4 x i16> %x, <4 x i16> %y) nounwind readnone { 156*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <4 x i16> %x, %y 157*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i16> 158*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %sext 159*9880d681SAndroid Build Coastguard Worker} 160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si16_cmp: 161*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker; Additional tests for v8i16 since it is an altivec native type 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_eq(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 167*9880d681SAndroid Build Coastguard Workerentry: 168*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <8 x i16> %x, %y 169*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 170*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_eq: 173*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh 2, 2, 3 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_ne(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 176*9880d681SAndroid Build Coastguard Workerentry: 177*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne <8 x i16> %x, %y 178*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 179*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 180*9880d681SAndroid Build Coastguard Worker} 181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_ne: 182*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh [[RET:[0-9]+]], 2, 3 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_le(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 186*9880d681SAndroid Build Coastguard Workerentry: 187*9880d681SAndroid Build Coastguard Worker %cmp = icmp sle <8 x i16> %x, %y 188*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 189*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 190*9880d681SAndroid Build Coastguard Worker} 191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_le: 192*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsh [[RET:[0-9]+]], 2, 3 193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8ui16_cmp_le(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 196*9880d681SAndroid Build Coastguard Workerentry: 197*9880d681SAndroid Build Coastguard Worker %cmp = icmp ule <8 x i16> %x, %y 198*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 199*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8ui16_cmp_le: 202*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuh [[RET:[0-9]+]], 2, 3 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_lt(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 206*9880d681SAndroid Build Coastguard Workerentry: 207*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt <8 x i16> %x, %y 208*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 209*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 210*9880d681SAndroid Build Coastguard Worker} 211*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_lt: 212*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsh 2, 3, 2 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8ui16_cmp_lt(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 215*9880d681SAndroid Build Coastguard Workerentry: 216*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult <8 x i16> %x, %y 217*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 218*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8ui16_cmp_lt: 221*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuh 2, 3, 2 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_gt(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 224*9880d681SAndroid Build Coastguard Workerentry: 225*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <8 x i16> %x, %y 226*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 227*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_gt: 230*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsh 2, 2, 3 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8ui16_cmp_gt(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 233*9880d681SAndroid Build Coastguard Workerentry: 234*9880d681SAndroid Build Coastguard Worker %cmp = icmp ugt <8 x i16> %x, %y 235*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 236*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 237*9880d681SAndroid Build Coastguard Worker} 238*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8ui16_cmp_gt: 239*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuh 2, 2, 3 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8si16_cmp_ge(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 242*9880d681SAndroid Build Coastguard Workerentry: 243*9880d681SAndroid Build Coastguard Worker %cmp = icmp sge <8 x i16> %x, %y 244*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 245*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si16_cmp_ge: 248*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsh [[RET:[0-9]+]], 3, 2 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @v8ui16_cmp_ge(<8 x i16> %x, <8 x i16> %y) nounwind readnone { 252*9880d681SAndroid Build Coastguard Workerentry: 253*9880d681SAndroid Build Coastguard Worker %cmp = icmp uge <8 x i16> %x, %y 254*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i16> 255*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %sext 256*9880d681SAndroid Build Coastguard Worker} 257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8ui16_cmp_ge: 258*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuh [[RET:[0-9]+]], 3, 2 259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @v16si16_cmp(<16 x i16> %x, <16 x i16> %y) nounwind readnone { 263*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <16 x i16> %x, %y 264*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i16> 265*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %sext 266*9880d681SAndroid Build Coastguard Worker} 267*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si16_cmp: 268*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 269*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @v32si16_cmp(<32 x i16> %x, <32 x i16> %y) nounwind readnone { 273*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <32 x i16> %x, %y 274*9880d681SAndroid Build Coastguard Worker %sext = sext <32 x i1> %cmp to <32 x i16> 275*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %sext 276*9880d681SAndroid Build Coastguard Worker} 277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v32si16_cmp: 278*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 279*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 280*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 281*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequh {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @v2si32_cmp(<2 x i32> %x, <2 x i32> %y) nounwind readnone { 285*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <2 x i32> %x, %y 286*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %cmp to <2 x i32> 287*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %sext 288*9880d681SAndroid Build Coastguard Worker} 289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2si32_cmp: 290*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker; Additional tests for v4si32 since it is an altivec native type 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_eq(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 296*9880d681SAndroid Build Coastguard Workerentry: 297*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <4 x i32> %x, %y 298*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 299*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 300*9880d681SAndroid Build Coastguard Worker} 301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_eq: 302*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw 2, 2, 3 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_ne(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 305*9880d681SAndroid Build Coastguard Workerentry: 306*9880d681SAndroid Build Coastguard Worker %cmp = icmp ne <4 x i32> %x, %y 307*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 308*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_ne: 311*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw [[RCMP:[0-9]+]], 2, 3 312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RCMP]], [[RCMP]] 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_le(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 315*9880d681SAndroid Build Coastguard Workerentry: 316*9880d681SAndroid Build Coastguard Worker %cmp = icmp sle <4 x i32> %x, %y 317*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 318*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_le: 321*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsw [[RET:[0-9]+]], 2, 3 322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4ui32_cmp_le(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 325*9880d681SAndroid Build Coastguard Workerentry: 326*9880d681SAndroid Build Coastguard Worker %cmp = icmp ule <4 x i32> %x, %y 327*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 328*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 329*9880d681SAndroid Build Coastguard Worker} 330*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4ui32_cmp_le: 331*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuw [[RET:[0-9]+]], 2, 3 332*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_lt(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 335*9880d681SAndroid Build Coastguard Workerentry: 336*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt <4 x i32> %x, %y 337*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 338*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_lt: 341*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsw 2, 3, 2 342*9880d681SAndroid Build Coastguard Worker 343*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4ui32_cmp_lt(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 344*9880d681SAndroid Build Coastguard Workerentry: 345*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult <4 x i32> %x, %y 346*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 347*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 348*9880d681SAndroid Build Coastguard Worker} 349*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4ui32_cmp_lt: 350*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuw 2, 3, 2 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_gt(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 353*9880d681SAndroid Build Coastguard Workerentry: 354*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt <4 x i32> %x, %y 355*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 356*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_gt: 359*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsw 2, 2, 3 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4ui32_cmp_gt(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 362*9880d681SAndroid Build Coastguard Workerentry: 363*9880d681SAndroid Build Coastguard Worker %cmp = icmp ugt <4 x i32> %x, %y 364*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 365*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 366*9880d681SAndroid Build Coastguard Worker} 367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4ui32_cmp_gt: 368*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuw 2, 2, 3 369*9880d681SAndroid Build Coastguard Worker 370*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4si32_cmp_ge(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 371*9880d681SAndroid Build Coastguard Workerentry: 372*9880d681SAndroid Build Coastguard Worker %cmp = icmp sge <4 x i32> %x, %y 373*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 374*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4si32_cmp_ge: 377*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtsw [[RET:[0-9]+]], 3, 2 378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @v4ui32_cmp_ge(<4 x i32> %x, <4 x i32> %y) nounwind readnone { 381*9880d681SAndroid Build Coastguard Workerentry: 382*9880d681SAndroid Build Coastguard Worker %cmp = icmp uge <4 x i32> %x, %y 383*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 384*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %sext 385*9880d681SAndroid Build Coastguard Worker} 386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4ui32_cmp_ge: 387*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtuw [[RET:[0-9]+]], 3, 2 388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @v8si32_cmp(<8 x i32> %x, <8 x i32> %y) nounwind readnone { 392*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <8 x i32> %x, %y 393*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i32> 394*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %sext 395*9880d681SAndroid Build Coastguard Worker} 396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8si32_cmp: 397*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 398*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 399*9880d681SAndroid Build Coastguard Worker 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @v16si32_cmp(<16 x i32> %x, <16 x i32> %y) nounwind readnone { 402*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <16 x i32> %x, %y 403*9880d681SAndroid Build Coastguard Worker %sext = sext <16 x i1> %cmp to <16 x i32> 404*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %sext 405*9880d681SAndroid Build Coastguard Worker} 406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v16si32_cmp: 407*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 408*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 409*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 410*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Workerdefine <32 x i32> @v32si32_cmp(<32 x i32> %x, <32 x i32> %y) nounwind readnone { 414*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq <32 x i32> %x, %y 415*9880d681SAndroid Build Coastguard Worker %sext = sext <32 x i1> %cmp to <32 x i32> 416*9880d681SAndroid Build Coastguard Worker ret <32 x i32> %sext 417*9880d681SAndroid Build Coastguard Worker} 418*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v32si32_cmp: 419*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 420*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 421*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 422*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 423*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 424*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 425*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 426*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpequw {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Worker 429*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @v2f32_cmp(<2 x float> %x, <2 x float> %y) nounwind readnone { 430*9880d681SAndroid Build Coastguard Workerentry: 431*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq <2 x float> %x, %y 432*9880d681SAndroid Build Coastguard Worker %sext = sext <2 x i1> %cmp to <2 x i32> 433*9880d681SAndroid Build Coastguard Worker %0 = bitcast <2 x i32> %sext to <2 x float> 434*9880d681SAndroid Build Coastguard Worker ret <2 x float> %0 435*9880d681SAndroid Build Coastguard Worker} 436*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v2f32_cmp: 437*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpeqfp {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker 440*9880d681SAndroid Build Coastguard Worker; Additional tests for v4f32 since it is a altivec native type 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_eq(<4 x float> %x, <4 x float> %y) nounwind readnone { 443*9880d681SAndroid Build Coastguard Workerentry: 444*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq <4 x float> %x, %y 445*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 446*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 447*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 448*9880d681SAndroid Build Coastguard Worker} 449*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_eq: 450*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpeqfp 2, 2, 3 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_ne(<4 x float> %x, <4 x float> %y) nounwind readnone { 453*9880d681SAndroid Build Coastguard Workerentry: 454*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une <4 x float> %x, %y 455*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 456*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 457*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 458*9880d681SAndroid Build Coastguard Worker} 459*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_ne: 460*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpeqfp [[RET:[0-9]+]], 2, 3 461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_le(<4 x float> %x, <4 x float> %y) nounwind readnone { 464*9880d681SAndroid Build Coastguard Workerentry: 465*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole <4 x float> %x, %y 466*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 467*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 468*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 469*9880d681SAndroid Build Coastguard Worker} 470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_le: 471*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgefp 2, 3, 2 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_lt(<4 x float> %x, <4 x float> %y) nounwind readnone { 474*9880d681SAndroid Build Coastguard Workerentry: 475*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt <4 x float> %x, %y 476*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 477*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 478*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 479*9880d681SAndroid Build Coastguard Worker} 480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_lt: 481*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtfp 2, 3, 2 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_ge(<4 x float> %x, <4 x float> %y) nounwind readnone { 484*9880d681SAndroid Build Coastguard Workerentry: 485*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge <4 x float> %x, %y 486*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 487*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 488*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 489*9880d681SAndroid Build Coastguard Worker} 490*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_ge: 491*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgefp 2, 2, 3 492*9880d681SAndroid Build Coastguard Worker 493*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_gt(<4 x float> %x, <4 x float> %y) nounwind readnone { 494*9880d681SAndroid Build Coastguard Workerentry: 495*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt <4 x float> %x, %y 496*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 497*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 498*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 499*9880d681SAndroid Build Coastguard Worker} 500*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_gt: 501*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtfp 2, 2, 3 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_ule(<4 x float> %x, <4 x float> %y) nounwind readnone { 504*9880d681SAndroid Build Coastguard Workerentry: 505*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ule <4 x float> %x, %y 506*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 507*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 508*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 509*9880d681SAndroid Build Coastguard Worker} 510*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_ule: 511*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtfp [[RET:[0-9]+]], 2, 3 512*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_ult(<4 x float> %x, <4 x float> %y) nounwind readnone { 515*9880d681SAndroid Build Coastguard Workerentry: 516*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ult <4 x float> %x, %y 517*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 518*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 519*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 520*9880d681SAndroid Build Coastguard Worker} 521*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_ult: 522*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgefp [[RET:[0-9]+]], 2, 3 523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_uge(<4 x float> %x, <4 x float> %y) nounwind readnone { 526*9880d681SAndroid Build Coastguard Workerentry: 527*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uge <4 x float> %x, %y 528*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 529*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 530*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 531*9880d681SAndroid Build Coastguard Worker} 532*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_uge: 533*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgtfp [[RET:[0-9]+]], 3, 2 534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @v4f32_cmp_ugt(<4 x float> %x, <4 x float> %y) nounwind readnone { 537*9880d681SAndroid Build Coastguard Workerentry: 538*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ugt <4 x float> %x, %y 539*9880d681SAndroid Build Coastguard Worker %sext = sext <4 x i1> %cmp to <4 x i32> 540*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %sext to <4 x float> 541*9880d681SAndroid Build Coastguard Worker ret <4 x float> %0 542*9880d681SAndroid Build Coastguard Worker} 543*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v4f32_cmp_ugt: 544*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpgefp [[RET:[0-9]+]], 3, 2 545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vnor 2, [[RET]], [[RET]] 546*9880d681SAndroid Build Coastguard Worker 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @v8f32_cmp(<8 x float> %x, <8 x float> %y) nounwind readnone { 549*9880d681SAndroid Build Coastguard Workerentry: 550*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq <8 x float> %x, %y 551*9880d681SAndroid Build Coastguard Worker %sext = sext <8 x i1> %cmp to <8 x i32> 552*9880d681SAndroid Build Coastguard Worker %0 = bitcast <8 x i32> %sext to <8 x float> 553*9880d681SAndroid Build Coastguard Worker ret <8 x float> %0 554*9880d681SAndroid Build Coastguard Worker} 555*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: v8f32_cmp: 556*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpeqfp {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 557*9880d681SAndroid Build Coastguard Worker; CHECK: vcmpeqfp {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}} 558