1*9e6afbedSKrzysztof Parzyszek; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9e6afbedSKrzysztof Parzyszek; RUN: llc -march=hexagon -mattr=+hvxv69,+hvx-length128b,+hvx-qfloat < %s | FileCheck %s 3*9e6afbedSKrzysztof Parzyszek; RUN: llc -march=hexagon -mattr=+hvxv69,+hvx-length128b,+hvx-ieee-fp < %s | FileCheck %s 4*9e6afbedSKrzysztof Parzyszek 5*9e6afbedSKrzysztof Parzyszek; --- Half 6*9e6afbedSKrzysztof Parzyszek 7*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_00(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 8*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_00: 9*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 10*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 11*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.eq(v0.h,v1.h) 12*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 13*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 14*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 15*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 16*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 17*9e6afbedSKrzysztof Parzyszek %t0 = fcmp oeq <64 x half> %v0, %v1 18*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 19*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 20*9e6afbedSKrzysztof Parzyszek} 21*9e6afbedSKrzysztof Parzyszek 22*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_01(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 23*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_01: 24*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 25*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 26*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.eq(v0.h,v1.h) 27*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 28*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 29*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 30*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 31*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 32*9e6afbedSKrzysztof Parzyszek %t0 = fcmp one <64 x half> %v0, %v1 33*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 34*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 35*9e6afbedSKrzysztof Parzyszek} 36*9e6afbedSKrzysztof Parzyszek 37*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_02(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 38*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_02: 39*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 40*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 41*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v1.hf,v0.hf) 42*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 43*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 44*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 45*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 46*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 47*9e6afbedSKrzysztof Parzyszek %t0 = fcmp olt <64 x half> %v0, %v1 48*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 49*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 50*9e6afbedSKrzysztof Parzyszek} 51*9e6afbedSKrzysztof Parzyszek 52*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_03(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 53*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_03: 54*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 55*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 56*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v0.hf,v1.hf) 57*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 58*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 59*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 60*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 61*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 62*9e6afbedSKrzysztof Parzyszek %t0 = fcmp ole <64 x half> %v0, %v1 63*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 64*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 65*9e6afbedSKrzysztof Parzyszek} 66*9e6afbedSKrzysztof Parzyszek 67*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_04(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 68*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_04: 69*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 70*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 71*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v0.hf,v1.hf) 72*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 73*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 74*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 75*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 76*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 77*9e6afbedSKrzysztof Parzyszek %t0 = fcmp ogt <64 x half> %v0, %v1 78*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 79*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 80*9e6afbedSKrzysztof Parzyszek} 81*9e6afbedSKrzysztof Parzyszek 82*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_05(<64 x half> %v0, <64 x half> %v1, <64 x half> %v2) #0 { 83*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_05: 84*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 85*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 86*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v1.hf,v0.hf) 87*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 88*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 89*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 90*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 91*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 92*9e6afbedSKrzysztof Parzyszek %t0 = fcmp oge <64 x half> %v0, %v1 93*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %t0, <64 x half> %v1, <64 x half> %v2 94*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 95*9e6afbedSKrzysztof Parzyszek} 96*9e6afbedSKrzysztof Parzyszek 97*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0a(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 98*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0a: 99*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 100*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 101*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 102*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 103*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 104*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 105*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 106*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 107*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 &= vcmp.eq(v0.h,v1.h) 108*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 109*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 110*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 111*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 112*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 113*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <64 x half> %v0, %v1 114*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 115*9e6afbedSKrzysztof Parzyszek %q2 = and <64 x i1> %q0, %q1 116*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 117*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 118*9e6afbedSKrzysztof Parzyszek} 119*9e6afbedSKrzysztof Parzyszek 120*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0b(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 121*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0b: 122*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 123*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 124*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 125*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 126*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 127*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 128*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 129*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 130*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 |= vcmp.eq(v0.h,v1.h) 131*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 132*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 133*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 134*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 135*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 136*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <64 x half> %v0, %v1 137*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 138*9e6afbedSKrzysztof Parzyszek %q2 = or <64 x i1> %q0, %q1 139*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 140*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 141*9e6afbedSKrzysztof Parzyszek} 142*9e6afbedSKrzysztof Parzyszek 143*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0c(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 144*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0c: 145*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 146*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 147*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 148*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 149*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 150*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 151*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 152*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 153*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 ^= vcmp.eq(v0.h,v1.h) 154*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 155*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 156*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 157*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 158*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 159*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <64 x half> %v0, %v1 160*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 161*9e6afbedSKrzysztof Parzyszek %q2 = xor <64 x i1> %q0, %q1 162*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 163*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 164*9e6afbedSKrzysztof Parzyszek} 165*9e6afbedSKrzysztof Parzyszek 166*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0d(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 167*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0d: 168*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 169*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 170*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 171*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 172*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 173*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 174*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 175*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 176*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 &= vcmp.gt(v0.hf,v1.hf) 177*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 178*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 179*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 180*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 181*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 182*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <64 x half> %v0, %v1 183*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 184*9e6afbedSKrzysztof Parzyszek %q2 = and <64 x i1> %q0, %q1 185*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 186*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 187*9e6afbedSKrzysztof Parzyszek} 188*9e6afbedSKrzysztof Parzyszek 189*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0e(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 190*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0e: 191*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 192*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 193*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 194*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 195*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 196*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 197*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 198*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 199*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 |= vcmp.gt(v0.hf,v1.hf) 200*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 201*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 202*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 203*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 204*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 205*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <64 x half> %v0, %v1 206*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 207*9e6afbedSKrzysztof Parzyszek %q2 = or <64 x i1> %q0, %q1 208*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 209*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 210*9e6afbedSKrzysztof Parzyszek} 211*9e6afbedSKrzysztof Parzyszek 212*9e6afbedSKrzysztof Parzyszekdefine <64 x half> @test_0f(<64 x half> %v0, <64 x half> %v1, <64 x i16> %v2) #0 { 213*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_0f: 214*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 215*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 216*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 217*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 218*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 219*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 220*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 221*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 222*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 ^= vcmp.gt(v0.hf,v1.hf) 223*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 224*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 225*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 226*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 227*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 228*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <64 x half> %v0, %v1 229*9e6afbedSKrzysztof Parzyszek %q1 = trunc <64 x i16> %v2 to <64 x i1> 230*9e6afbedSKrzysztof Parzyszek %q2 = xor <64 x i1> %q0, %q1 231*9e6afbedSKrzysztof Parzyszek %t1 = select <64 x i1> %q2, <64 x half> %v0, <64 x half> %v1 232*9e6afbedSKrzysztof Parzyszek ret <64 x half> %t1 233*9e6afbedSKrzysztof Parzyszek} 234*9e6afbedSKrzysztof Parzyszek 235*9e6afbedSKrzysztof Parzyszek 236*9e6afbedSKrzysztof Parzyszek; --- Single 237*9e6afbedSKrzysztof Parzyszek 238*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_10(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 239*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_10: 240*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 241*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 242*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.eq(v0.w,v1.w) 243*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 244*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 245*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 246*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 247*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 248*9e6afbedSKrzysztof Parzyszek %t0 = fcmp oeq <32 x float> %v0, %v1 249*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 250*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 251*9e6afbedSKrzysztof Parzyszek} 252*9e6afbedSKrzysztof Parzyszek 253*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_11(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 254*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_11: 255*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 256*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 257*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.eq(v0.w,v1.w) 258*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 259*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 260*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 261*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 262*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 263*9e6afbedSKrzysztof Parzyszek %t0 = fcmp one <32 x float> %v0, %v1 264*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 265*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 266*9e6afbedSKrzysztof Parzyszek} 267*9e6afbedSKrzysztof Parzyszek 268*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_12(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 269*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_12: 270*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 271*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 272*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v1.sf,v0.sf) 273*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 274*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 275*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 276*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 277*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 278*9e6afbedSKrzysztof Parzyszek %t0 = fcmp olt <32 x float> %v0, %v1 279*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 280*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 281*9e6afbedSKrzysztof Parzyszek} 282*9e6afbedSKrzysztof Parzyszek 283*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_13(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 284*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_13: 285*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 286*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 287*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v0.sf,v1.sf) 288*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 289*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 290*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 291*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 292*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 293*9e6afbedSKrzysztof Parzyszek %t0 = fcmp ole <32 x float> %v0, %v1 294*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 295*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 296*9e6afbedSKrzysztof Parzyszek} 297*9e6afbedSKrzysztof Parzyszek 298*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_14(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 299*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_14: 300*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 301*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 302*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v0.sf,v1.sf) 303*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 304*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 305*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v1,v2) 306*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 307*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 308*9e6afbedSKrzysztof Parzyszek %t0 = fcmp ogt <32 x float> %v0, %v1 309*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 310*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 311*9e6afbedSKrzysztof Parzyszek} 312*9e6afbedSKrzysztof Parzyszek 313*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_15(<32 x float> %v0, <32 x float> %v1, <32 x float> %v2) #0 { 314*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_15: 315*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 316*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 317*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vcmp.gt(v1.sf,v0.sf) 318*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 319*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 320*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v2,v1) 321*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 322*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 323*9e6afbedSKrzysztof Parzyszek %t0 = fcmp oge <32 x float> %v0, %v1 324*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %t0, <32 x float> %v1, <32 x float> %v2 325*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 326*9e6afbedSKrzysztof Parzyszek} 327*9e6afbedSKrzysztof Parzyszek 328*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1a(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 329*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1a: 330*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 331*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 332*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 333*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 334*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 335*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 336*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 337*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 338*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 &= vcmp.eq(v0.w,v1.w) 339*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 340*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 341*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 342*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 343*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 344*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <32 x float> %v0, %v1 345*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 346*9e6afbedSKrzysztof Parzyszek %q2 = and <32 x i1> %q0, %q1 347*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 348*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 349*9e6afbedSKrzysztof Parzyszek} 350*9e6afbedSKrzysztof Parzyszek 351*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1b(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 352*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1b: 353*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 354*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 355*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 356*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 357*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 358*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 359*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 360*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 361*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 |= vcmp.eq(v0.w,v1.w) 362*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 363*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 364*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 365*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 366*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 367*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <32 x float> %v0, %v1 368*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 369*9e6afbedSKrzysztof Parzyszek %q2 = or <32 x i1> %q0, %q1 370*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 371*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 372*9e6afbedSKrzysztof Parzyszek} 373*9e6afbedSKrzysztof Parzyszek 374*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1c(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 375*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1c: 376*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 377*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 378*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 379*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 380*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 381*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 382*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 383*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 384*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 ^= vcmp.eq(v0.w,v1.w) 385*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 386*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 387*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 388*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 389*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 390*9e6afbedSKrzysztof Parzyszek %q0 = fcmp oeq <32 x float> %v0, %v1 391*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 392*9e6afbedSKrzysztof Parzyszek %q2 = xor <32 x i1> %q0, %q1 393*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 394*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 395*9e6afbedSKrzysztof Parzyszek} 396*9e6afbedSKrzysztof Parzyszek 397*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1d(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 398*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1d: 399*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 400*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 401*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 402*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 403*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 404*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 405*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 406*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 407*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 &= vcmp.gt(v0.sf,v1.sf) 408*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 409*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 410*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 411*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 412*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 413*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <32 x float> %v0, %v1 414*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 415*9e6afbedSKrzysztof Parzyszek %q2 = and <32 x i1> %q0, %q1 416*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 417*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 418*9e6afbedSKrzysztof Parzyszek} 419*9e6afbedSKrzysztof Parzyszek 420*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1e(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 421*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1e: 422*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 423*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 424*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 425*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 426*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 427*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 428*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 429*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 430*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 |= vcmp.gt(v0.sf,v1.sf) 431*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 432*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 433*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 434*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 435*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 436*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <32 x float> %v0, %v1 437*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 438*9e6afbedSKrzysztof Parzyszek %q2 = or <32 x i1> %q0, %q1 439*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 440*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 441*9e6afbedSKrzysztof Parzyszek} 442*9e6afbedSKrzysztof Parzyszek 443*9e6afbedSKrzysztof Parzyszekdefine <32 x float> @test_1f(<32 x float> %v0, <32 x float> %v1, <32 x i32> %v2) #0 { 444*9e6afbedSKrzysztof Parzyszek; CHECK-LABEL: test_1f: 445*9e6afbedSKrzysztof Parzyszek; CHECK: // %bb.0: 446*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 447*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: r0 = ##16843009 448*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 449*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 450*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 = vand(v2,r0) 451*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 452*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 453*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: q0 ^= vcmp.gt(v0.sf,v1.sf) 454*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 455*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: { 456*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: v0 = vmux(q0,v0,v1) 457*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: jumpr r31 458*9e6afbedSKrzysztof Parzyszek; CHECK-NEXT: } 459*9e6afbedSKrzysztof Parzyszek %q0 = fcmp ogt <32 x float> %v0, %v1 460*9e6afbedSKrzysztof Parzyszek %q1 = trunc <32 x i32> %v2 to <32 x i1> 461*9e6afbedSKrzysztof Parzyszek %q2 = xor <32 x i1> %q0, %q1 462*9e6afbedSKrzysztof Parzyszek %t1 = select <32 x i1> %q2, <32 x float> %v0, <32 x float> %v1 463*9e6afbedSKrzysztof Parzyszek ret <32 x float> %t1 464*9e6afbedSKrzysztof Parzyszek} 465*9e6afbedSKrzysztof Parzyszek 466*9e6afbedSKrzysztof Parzyszekattributes #0 = { nounwind readnone "target-cpu"="hexagonv69" } 467