brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.3 KiB · a948303 Raw
577 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3; --- Byte4 5; CHECK-LABEL: test_00:6; CHECK: q[[Q000:[0-3]]] = vcmp.eq(v0.b,v1.b)7; CHECK: v0 = vmux(q[[Q000]],v1,v2)8define <128 x i8> @test_00(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {9  %t0 = icmp eq <128 x i8> %v0, %v110  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v211  ret <128 x i8> %t112}13 14; CHECK-LABEL: test_01:15; CHECK: q[[Q010:[0-3]]] = vcmp.eq(v0.b,v1.b)16; CHECK: v0 = vmux(q[[Q010]],v2,v1)17define <128 x i8> @test_01(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {18  %t0 = icmp ne <128 x i8> %v0, %v119  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v220  ret <128 x i8> %t121}22 23; CHECK-LABEL: test_02:24; CHECK: q[[Q020:[0-3]]] = vcmp.gt(v1.b,v0.b)25; CHECK: v0 = vmux(q[[Q020]],v1,v2)26define <128 x i8> @test_02(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {27  %t0 = icmp slt <128 x i8> %v0, %v128  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v229  ret <128 x i8> %t130}31 32; CHECK-LABEL: test_03:33; CHECK: q[[Q030:[0-3]]] = vcmp.gt(v0.b,v1.b)34; CHECK: v0 = vmux(q[[Q030]],v2,v1)35define <128 x i8> @test_03(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {36  %t0 = icmp sle <128 x i8> %v0, %v137  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v238  ret <128 x i8> %t139}40 41; CHECK-LABEL: test_04:42; CHECK: q[[Q040:[0-3]]] = vcmp.gt(v0.b,v1.b)43; CHECK: v0 = vmux(q[[Q040]],v1,v2)44define <128 x i8> @test_04(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {45  %t0 = icmp sgt <128 x i8> %v0, %v146  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v247  ret <128 x i8> %t148}49 50; CHECK-LABEL: test_05:51; CHECK: q[[Q050:[0-3]]] = vcmp.gt(v1.b,v0.b)52; CHECK: v0 = vmux(q[[Q050]],v2,v1)53define <128 x i8> @test_05(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {54  %t0 = icmp sge <128 x i8> %v0, %v155  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v256  ret <128 x i8> %t157}58 59; CHECK-LABEL: test_06:60; CHECK: q[[Q060:[0-3]]] = vcmp.gt(v1.ub,v0.ub)61; CHECK: v0 = vmux(q[[Q060]],v1,v2)62define <128 x i8> @test_06(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {63  %t0 = icmp ult <128 x i8> %v0, %v164  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v265  ret <128 x i8> %t166}67 68; CHECK-LABEL: test_07:69; CHECK: q[[Q070:[0-3]]] = vcmp.gt(v0.ub,v1.ub)70; CHECK: v0 = vmux(q[[Q070]],v2,v1)71define <128 x i8> @test_07(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {72  %t0 = icmp ule <128 x i8> %v0, %v173  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v274  ret <128 x i8> %t175}76 77; CHECK-LABEL: test_08:78; CHECK: q[[Q080:[0-3]]] = vcmp.gt(v0.ub,v1.ub)79; CHECK: v0 = vmux(q[[Q080]],v1,v2)80define <128 x i8> @test_08(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {81  %t0 = icmp ugt <128 x i8> %v0, %v182  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v283  ret <128 x i8> %t184}85 86; CHECK-LABEL: test_09:87; CHECK: q[[Q090:[0-3]]] = vcmp.gt(v1.ub,v0.ub)88; CHECK: v0 = vmux(q[[Q090]],v2,v1)89define <128 x i8> @test_09(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {90  %t0 = icmp uge <128 x i8> %v0, %v191  %t1 = select <128 x i1> %t0, <128 x i8> %v1, <128 x i8> %v292  ret <128 x i8> %t193}94 95; CHECK-LABEL: test_0a:96; CHECK: q[[Q0A0:[0-3]]] &= vcmp.eq(v0.b,v1.b)97; CHECK: v0 = vmux(q[[Q0A0]],v0,v1)98define <128 x i8> @test_0a(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {99  %q0 = icmp eq <128 x i8> %v0, %v1100  %q1 = trunc <128 x i8> %v2 to <128 x i1>101  %q2 = and <128 x i1> %q0, %q1102  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1103  ret <128 x i8> %t1104}105 106; CHECK-LABEL: test_0b:107; CHECK: q[[Q0B0:[0-3]]] |= vcmp.eq(v0.b,v1.b)108; CHECK: v0 = vmux(q[[Q0B0]],v0,v1)109define <128 x i8> @test_0b(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {110  %q0 = icmp eq <128 x i8> %v0, %v1111  %q1 = trunc <128 x i8> %v2 to <128 x i1>112  %q2 = or <128 x i1> %q0, %q1113  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1114  ret <128 x i8> %t1115}116 117; CHECK-LABEL: test_0c:118; CHECK: q[[Q0C0:[0-3]]] ^= vcmp.eq(v0.b,v1.b)119; CHECK: v0 = vmux(q[[Q0C0]],v0,v1)120define <128 x i8> @test_0c(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {121  %q0 = icmp eq <128 x i8> %v0, %v1122  %q1 = trunc <128 x i8> %v2 to <128 x i1>123  %q2 = xor <128 x i1> %q0, %q1124  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1125  ret <128 x i8> %t1126}127 128; CHECK-LABEL: test_0d:129; CHECK: q[[Q0D0:[0-3]]] &= vcmp.gt(v0.b,v1.b)130; CHECK: v0 = vmux(q[[Q0D0]],v0,v1)131define <128 x i8> @test_0d(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {132  %q0 = icmp sgt <128 x i8> %v0, %v1133  %q1 = trunc <128 x i8> %v2 to <128 x i1>134  %q2 = and <128 x i1> %q0, %q1135  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1136  ret <128 x i8> %t1137}138 139; CHECK-LABEL: test_0e:140; CHECK: q[[Q0E0:[0-3]]] |= vcmp.gt(v0.b,v1.b)141; CHECK: v0 = vmux(q[[Q0E0]],v0,v1)142define <128 x i8> @test_0e(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {143  %q0 = icmp sgt <128 x i8> %v0, %v1144  %q1 = trunc <128 x i8> %v2 to <128 x i1>145  %q2 = or <128 x i1> %q0, %q1146  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1147  ret <128 x i8> %t1148}149 150; CHECK-LABEL: test_0f:151; CHECK: q[[Q0F0:[0-3]]] ^= vcmp.gt(v0.b,v1.b)152; CHECK: v0 = vmux(q[[Q0F0]],v0,v1)153define <128 x i8> @test_0f(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {154  %q0 = icmp sgt <128 x i8> %v0, %v1155  %q1 = trunc <128 x i8> %v2 to <128 x i1>156  %q2 = xor <128 x i1> %q0, %q1157  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1158  ret <128 x i8> %t1159}160 161; CHECK-LABEL: test_0g:162; CHECK: q[[Q0G0:[0-3]]] &= vcmp.gt(v0.ub,v1.ub)163; CHECK: v0 = vmux(q[[Q0G0]],v0,v1)164define <128 x i8> @test_0g(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {165  %q0 = icmp ugt <128 x i8> %v0, %v1166  %q1 = trunc <128 x i8> %v2 to <128 x i1>167  %q2 = and <128 x i1> %q0, %q1168  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1169  ret <128 x i8> %t1170}171 172; CHECK-LABEL: test_0h:173; CHECK: q[[Q0H0:[0-3]]] |= vcmp.gt(v0.ub,v1.ub)174; CHECK: v0 = vmux(q[[Q0H0]],v0,v1)175define <128 x i8> @test_0h(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {176  %q0 = icmp ugt <128 x i8> %v0, %v1177  %q1 = trunc <128 x i8> %v2 to <128 x i1>178  %q2 = or <128 x i1> %q0, %q1179  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1180  ret <128 x i8> %t1181}182 183; CHECK-LABEL: test_0i:184; CHECK: q[[Q0I0:[0-3]]] ^= vcmp.gt(v0.ub,v1.ub)185; CHECK: v0 = vmux(q[[Q0I0]],v0,v1)186define <128 x i8> @test_0i(<128 x i8> %v0, <128 x i8> %v1, <128 x i8> %v2) #0 {187  %q0 = icmp ugt <128 x i8> %v0, %v1188  %q1 = trunc <128 x i8> %v2 to <128 x i1>189  %q2 = xor <128 x i1> %q0, %q1190  %t1 = select <128 x i1> %q2, <128 x i8> %v0, <128 x i8> %v1191  ret <128 x i8> %t1192}193 194; --- Half195 196; CHECK-LABEL: test_10:197; CHECK: q[[Q100:[0-3]]] = vcmp.eq(v0.h,v1.h)198; CHECK: v0 = vmux(q[[Q100]],v1,v2)199define <64 x i16> @test_10(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {200  %t0 = icmp eq <64 x i16> %v0, %v1201  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2202  ret <64 x i16> %t1203}204 205; CHECK-LABEL: test_11:206; CHECK: q[[Q110:[0-3]]] = vcmp.eq(v0.h,v1.h)207; CHECK: v0 = vmux(q[[Q110]],v2,v1)208define <64 x i16> @test_11(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {209  %t0 = icmp ne <64 x i16> %v0, %v1210  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2211  ret <64 x i16> %t1212}213 214; CHECK-LABEL: test_12:215; CHECK: q[[Q120:[0-3]]] = vcmp.gt(v1.h,v0.h)216; CHECK: v0 = vmux(q[[Q120]],v1,v2)217define <64 x i16> @test_12(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {218  %t0 = icmp slt <64 x i16> %v0, %v1219  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2220  ret <64 x i16> %t1221}222 223; CHECK-LABEL: test_13:224; CHECK: q[[Q130:[0-3]]] = vcmp.gt(v0.h,v1.h)225; CHECK: v0 = vmux(q[[Q130]],v2,v1)226define <64 x i16> @test_13(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {227  %t0 = icmp sle <64 x i16> %v0, %v1228  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2229  ret <64 x i16> %t1230}231 232; CHECK-LABEL: test_14:233; CHECK: q[[Q140:[0-3]]] = vcmp.gt(v0.h,v1.h)234; CHECK: v0 = vmux(q[[Q140]],v1,v2)235define <64 x i16> @test_14(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {236  %t0 = icmp sgt <64 x i16> %v0, %v1237  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2238  ret <64 x i16> %t1239}240 241; CHECK-LABEL: test_15:242; CHECK: q[[Q150:[0-3]]] = vcmp.gt(v1.h,v0.h)243; CHECK: v0 = vmux(q[[Q150]],v2,v1)244define <64 x i16> @test_15(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {245  %t0 = icmp sge <64 x i16> %v0, %v1246  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2247  ret <64 x i16> %t1248}249 250; CHECK-LABEL: test_16:251; CHECK: q[[Q160:[0-3]]] = vcmp.gt(v1.uh,v0.uh)252; CHECK: v0 = vmux(q[[Q160]],v1,v2)253define <64 x i16> @test_16(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {254  %t0 = icmp ult <64 x i16> %v0, %v1255  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2256  ret <64 x i16> %t1257}258 259; CHECK-LABEL: test_17:260; CHECK: q[[Q170:[0-3]]] = vcmp.gt(v0.uh,v1.uh)261; CHECK: v0 = vmux(q[[Q170]],v2,v1)262define <64 x i16> @test_17(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {263  %t0 = icmp ule <64 x i16> %v0, %v1264  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2265  ret <64 x i16> %t1266}267 268; CHECK-LABEL: test_18:269; CHECK: q[[Q180:[0-3]]] = vcmp.gt(v0.uh,v1.uh)270; CHECK: v0 = vmux(q[[Q180]],v1,v2)271define <64 x i16> @test_18(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {272  %t0 = icmp ugt <64 x i16> %v0, %v1273  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2274  ret <64 x i16> %t1275}276 277; CHECK-LABEL: test_19:278; CHECK: q[[Q190:[0-3]]] = vcmp.gt(v1.uh,v0.uh)279; CHECK: v0 = vmux(q[[Q190]],v2,v1)280define <64 x i16> @test_19(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {281  %t0 = icmp uge <64 x i16> %v0, %v1282  %t1 = select <64 x i1> %t0, <64 x i16> %v1, <64 x i16> %v2283  ret <64 x i16> %t1284}285 286; CHECK-LABEL: test_1a:287; CHECK: q[[Q1A0:[0-3]]] &= vcmp.eq(v0.h,v1.h)288; CHECK: v0 = vmux(q[[Q1A0]],v0,v1)289define <64 x i16> @test_1a(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {290  %q0 = icmp eq <64 x i16> %v0, %v1291  %q1 = trunc <64 x i16> %v2 to <64 x i1>292  %q2 = and <64 x i1> %q0, %q1293  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1294  ret <64 x i16> %t1295}296 297; CHECK-LABEL: test_1b:298; CHECK: q[[Q1B0:[0-3]]] |= vcmp.eq(v0.h,v1.h)299; CHECK: v0 = vmux(q[[Q1B0]],v0,v1)300define <64 x i16> @test_1b(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {301  %q0 = icmp eq <64 x i16> %v0, %v1302  %q1 = trunc <64 x i16> %v2 to <64 x i1>303  %q2 = or <64 x i1> %q0, %q1304  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1305  ret <64 x i16> %t1306}307 308; CHECK-LABEL: test_1c:309; CHECK: q[[Q1C0:[0-3]]] ^= vcmp.eq(v0.h,v1.h)310; CHECK: v0 = vmux(q[[Q1C0]],v0,v1)311define <64 x i16> @test_1c(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {312  %q0 = icmp eq <64 x i16> %v0, %v1313  %q1 = trunc <64 x i16> %v2 to <64 x i1>314  %q2 = xor <64 x i1> %q0, %q1315  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1316  ret <64 x i16> %t1317}318 319; CHECK-LABEL: test_1d:320; CHECK: q[[Q1D0:[0-3]]] &= vcmp.gt(v0.h,v1.h)321; CHECK: v0 = vmux(q[[Q1D0]],v0,v1)322define <64 x i16> @test_1d(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {323  %q0 = icmp sgt <64 x i16> %v0, %v1324  %q1 = trunc <64 x i16> %v2 to <64 x i1>325  %q2 = and <64 x i1> %q0, %q1326  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1327  ret <64 x i16> %t1328}329 330; CHECK-LABEL: test_1e:331; CHECK: q[[Q1E0:[0-3]]] |= vcmp.gt(v0.h,v1.h)332; CHECK: v0 = vmux(q[[Q1E0]],v0,v1)333define <64 x i16> @test_1e(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {334  %q0 = icmp sgt <64 x i16> %v0, %v1335  %q1 = trunc <64 x i16> %v2 to <64 x i1>336  %q2 = or <64 x i1> %q0, %q1337  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1338  ret <64 x i16> %t1339}340 341; CHECK-LABEL: test_1f:342; CHECK: q[[Q1F0:[0-3]]] ^= vcmp.gt(v0.h,v1.h)343; CHECK: v0 = vmux(q[[Q1F0]],v0,v1)344define <64 x i16> @test_1f(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {345  %q0 = icmp sgt <64 x i16> %v0, %v1346  %q1 = trunc <64 x i16> %v2 to <64 x i1>347  %q2 = xor <64 x i1> %q0, %q1348  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1349  ret <64 x i16> %t1350}351 352; CHECK-LABEL: test_1g:353; CHECK: q[[Q1G0:[0-3]]] &= vcmp.gt(v0.uh,v1.uh)354; CHECK: v0 = vmux(q[[Q1G0]],v0,v1)355define <64 x i16> @test_1g(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {356  %q0 = icmp ugt <64 x i16> %v0, %v1357  %q1 = trunc <64 x i16> %v2 to <64 x i1>358  %q2 = and <64 x i1> %q0, %q1359  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1360  ret <64 x i16> %t1361}362 363; CHECK-LABEL: test_1h:364; CHECK: q[[Q1H0:[0-3]]] |= vcmp.gt(v0.uh,v1.uh)365; CHECK: v0 = vmux(q[[Q1H0]],v0,v1)366define <64 x i16> @test_1h(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {367  %q0 = icmp ugt <64 x i16> %v0, %v1368  %q1 = trunc <64 x i16> %v2 to <64 x i1>369  %q2 = or <64 x i1> %q0, %q1370  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1371  ret <64 x i16> %t1372}373 374; CHECK-LABEL: test_1i:375; CHECK: q[[Q1I0:[0-3]]] ^= vcmp.gt(v0.uh,v1.uh)376; CHECK: v0 = vmux(q[[Q1I0]],v0,v1)377define <64 x i16> @test_1i(<64 x i16> %v0, <64 x i16> %v1, <64 x i16> %v2) #0 {378  %q0 = icmp ugt <64 x i16> %v0, %v1379  %q1 = trunc <64 x i16> %v2 to <64 x i1>380  %q2 = xor <64 x i1> %q0, %q1381  %t1 = select <64 x i1> %q2, <64 x i16> %v0, <64 x i16> %v1382  ret <64 x i16> %t1383}384 385; --- Word386 387; CHECK-LABEL: test_20:388; CHECK: q[[Q200:[0-3]]] = vcmp.eq(v0.w,v1.w)389; CHECK: v0 = vmux(q[[Q200]],v1,v2)390define <32 x i32> @test_20(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {391  %t0 = icmp eq <32 x i32> %v0, %v1392  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2393  ret <32 x i32> %t1394}395 396; CHECK-LABEL: test_21:397; CHECK: q[[Q210:[0-3]]] = vcmp.eq(v0.w,v1.w)398; CHECK: v0 = vmux(q[[Q210]],v2,v1)399define <32 x i32> @test_21(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {400  %t0 = icmp ne <32 x i32> %v0, %v1401  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2402  ret <32 x i32> %t1403}404 405; CHECK-LABEL: test_22:406; CHECK: q[[Q220:[0-3]]] = vcmp.gt(v1.w,v0.w)407; CHECK: v0 = vmux(q[[Q220]],v1,v2)408define <32 x i32> @test_22(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {409  %t0 = icmp slt <32 x i32> %v0, %v1410  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2411  ret <32 x i32> %t1412}413 414; CHECK-LABEL: test_23:415; CHECK: q[[Q230:[0-3]]] = vcmp.gt(v0.w,v1.w)416; CHECK: v0 = vmux(q[[Q230]],v2,v1)417define <32 x i32> @test_23(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {418  %t0 = icmp sle <32 x i32> %v0, %v1419  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2420  ret <32 x i32> %t1421}422 423; CHECK-LABEL: test_24:424; CHECK: q[[Q240:[0-3]]] = vcmp.gt(v0.w,v1.w)425; CHECK: v0 = vmux(q[[Q240]],v1,v2)426define <32 x i32> @test_24(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {427  %t0 = icmp sgt <32 x i32> %v0, %v1428  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2429  ret <32 x i32> %t1430}431 432; CHECK-LABEL: test_25:433; CHECK: q[[Q250:[0-3]]] = vcmp.gt(v1.w,v0.w)434; CHECK: v0 = vmux(q[[Q250]],v2,v1)435define <32 x i32> @test_25(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {436  %t0 = icmp sge <32 x i32> %v0, %v1437  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2438  ret <32 x i32> %t1439}440 441; CHECK-LABEL: test_26:442; CHECK: q[[Q260:[0-3]]] = vcmp.gt(v1.uw,v0.uw)443; CHECK: v0 = vmux(q[[Q260]],v1,v2)444define <32 x i32> @test_26(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {445  %t0 = icmp ult <32 x i32> %v0, %v1446  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2447  ret <32 x i32> %t1448}449 450; CHECK-LABEL: test_27:451; CHECK: q[[Q270:[0-3]]] = vcmp.gt(v0.uw,v1.uw)452; CHECK: v0 = vmux(q[[Q270]],v2,v1)453define <32 x i32> @test_27(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {454  %t0 = icmp ule <32 x i32> %v0, %v1455  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2456  ret <32 x i32> %t1457}458 459; CHECK-LABEL: test_28:460; CHECK: q[[Q280:[0-3]]] = vcmp.gt(v0.uw,v1.uw)461; CHECK: v0 = vmux(q[[Q280]],v1,v2)462define <32 x i32> @test_28(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {463  %t0 = icmp ugt <32 x i32> %v0, %v1464  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2465  ret <32 x i32> %t1466}467 468; CHECK-LABEL: test_29:469; CHECK: q[[Q290:[0-3]]] = vcmp.gt(v1.uw,v0.uw)470; CHECK: v0 = vmux(q[[Q290]],v2,v1)471define <32 x i32> @test_29(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {472  %t0 = icmp uge <32 x i32> %v0, %v1473  %t1 = select <32 x i1> %t0, <32 x i32> %v1, <32 x i32> %v2474  ret <32 x i32> %t1475}476 477; CHECK-LABEL: test_2a:478; CHECK: q[[Q2A0:[0-3]]] &= vcmp.eq(v0.w,v1.w)479; CHECK: v0 = vmux(q[[Q2A0]],v0,v1)480define <32 x i32> @test_2a(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {481  %q0 = icmp eq <32 x i32> %v0, %v1482  %q1 = trunc <32 x i32> %v2 to <32 x i1>483  %q2 = and <32 x i1> %q0, %q1484  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1485  ret <32 x i32> %t1486}487 488; CHECK-LABEL: test_2b:489; CHECK: q[[Q2B0:[0-3]]] |= vcmp.eq(v0.w,v1.w)490; CHECK: v0 = vmux(q[[Q2B0]],v0,v1)491define <32 x i32> @test_2b(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {492  %q0 = icmp eq <32 x i32> %v0, %v1493  %q1 = trunc <32 x i32> %v2 to <32 x i1>494  %q2 = or <32 x i1> %q0, %q1495  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1496  ret <32 x i32> %t1497}498 499; CHECK-LABEL: test_2c:500; CHECK: q[[Q2C0:[0-3]]] ^= vcmp.eq(v0.w,v1.w)501; CHECK: v0 = vmux(q[[Q2C0]],v0,v1)502define <32 x i32> @test_2c(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {503  %q0 = icmp eq <32 x i32> %v0, %v1504  %q1 = trunc <32 x i32> %v2 to <32 x i1>505  %q2 = xor <32 x i1> %q0, %q1506  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1507  ret <32 x i32> %t1508}509 510; CHECK-LABEL: test_2d:511; CHECK: q[[Q2D0:[0-3]]] &= vcmp.gt(v0.w,v1.w)512; CHECK: v0 = vmux(q[[Q2D0]],v0,v1)513define <32 x i32> @test_2d(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {514  %q0 = icmp sgt <32 x i32> %v0, %v1515  %q1 = trunc <32 x i32> %v2 to <32 x i1>516  %q2 = and <32 x i1> %q0, %q1517  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1518  ret <32 x i32> %t1519}520 521; CHECK-LABEL: test_2e:522; CHECK: q[[Q2E0:[0-3]]] |= vcmp.gt(v0.w,v1.w)523; CHECK: v0 = vmux(q[[Q2E0]],v0,v1)524define <32 x i32> @test_2e(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {525  %q0 = icmp sgt <32 x i32> %v0, %v1526  %q1 = trunc <32 x i32> %v2 to <32 x i1>527  %q2 = or <32 x i1> %q0, %q1528  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1529  ret <32 x i32> %t1530}531 532; CHECK-LABEL: test_2f:533; CHECK: q[[Q2F0:[0-3]]] ^= vcmp.gt(v0.w,v1.w)534; CHECK: v0 = vmux(q[[Q2F0]],v0,v1)535define <32 x i32> @test_2f(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {536  %q0 = icmp sgt <32 x i32> %v0, %v1537  %q1 = trunc <32 x i32> %v2 to <32 x i1>538  %q2 = xor <32 x i1> %q0, %q1539  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1540  ret <32 x i32> %t1541}542 543; CHECK-LABEL: test_2g:544; CHECK: q[[Q2G0:[0-3]]] &= vcmp.gt(v0.uw,v1.uw)545; CHECK: v0 = vmux(q[[Q2G0]],v0,v1)546define <32 x i32> @test_2g(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {547  %q0 = icmp ugt <32 x i32> %v0, %v1548  %q1 = trunc <32 x i32> %v2 to <32 x i1>549  %q2 = and <32 x i1> %q0, %q1550  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1551  ret <32 x i32> %t1552}553 554; CHECK-LABEL: test_2h:555; CHECK: q[[Q2H0:[0-3]]] |= vcmp.gt(v0.uw,v1.uw)556; CHECK: v0 = vmux(q[[Q2H0]],v0,v1)557define <32 x i32> @test_2h(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {558  %q0 = icmp ugt <32 x i32> %v0, %v1559  %q1 = trunc <32 x i32> %v2 to <32 x i1>560  %q2 = or <32 x i1> %q0, %q1561  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1562  ret <32 x i32> %t1563}564 565; CHECK-LABEL: test_2i:566; CHECK: q[[Q2I0:[0-3]]] ^= vcmp.gt(v0.uw,v1.uw)567; CHECK: v0 = vmux(q[[Q2I0]],v0,v1)568define <32 x i32> @test_2i(<32 x i32> %v0, <32 x i32> %v1, <32 x i32> %v2) #0 {569  %q0 = icmp ugt <32 x i32> %v0, %v1570  %q1 = trunc <32 x i32> %v2 to <32 x i1>571  %q2 = xor <32 x i1> %q0, %q1572  %t1 = select <32 x i1> %q2, <32 x i32> %v0, <32 x i32> %v1573  ret <32 x i32> %t1574}575 576attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }577