brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.1 KiB · 7673f8b Raw
578 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 <64 x i8> @test_00(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {9  %t0 = icmp eq <64 x i8> %v0, %v110  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v211  ret <64 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 <64 x i8> @test_01(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {18  %t0 = icmp ne <64 x i8> %v0, %v119  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v220  ret <64 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 <64 x i8> @test_02(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {27  %t0 = icmp slt <64 x i8> %v0, %v128  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v229  ret <64 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 <64 x i8> @test_03(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {36  %t0 = icmp sle <64 x i8> %v0, %v137  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v238  ret <64 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 <64 x i8> @test_04(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {45  %t0 = icmp sgt <64 x i8> %v0, %v146  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v247  ret <64 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 <64 x i8> @test_05(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {54  %t0 = icmp sge <64 x i8> %v0, %v155  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v256  ret <64 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 <64 x i8> @test_06(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {63  %t0 = icmp ult <64 x i8> %v0, %v164  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v265  ret <64 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 <64 x i8> @test_07(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {72  %t0 = icmp ule <64 x i8> %v0, %v173  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v274  ret <64 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 <64 x i8> @test_08(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {81  %t0 = icmp ugt <64 x i8> %v0, %v182  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v283  ret <64 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 <64 x i8> @test_09(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {90  %t0 = icmp uge <64 x i8> %v0, %v191  %t1 = select <64 x i1> %t0, <64 x i8> %v1, <64 x i8> %v292  ret <64 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 <64 x i8> @test_0a(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {99  %q0 = icmp eq <64 x i8> %v0, %v1100  %q1 = trunc <64 x i8> %v2 to <64 x i1>101  %q2 = and <64 x i1> %q0, %q1102  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1103  ret <64 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 <64 x i8> @test_0b(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {110  %q0 = icmp eq <64 x i8> %v0, %v1111  %q1 = trunc <64 x i8> %v2 to <64 x i1>112  %q2 = or <64 x i1> %q0, %q1113  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1114  ret <64 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 <64 x i8> @test_0c(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {121  %q0 = icmp eq <64 x i8> %v0, %v1122  %q1 = trunc <64 x i8> %v2 to <64 x i1>123  %q2 = xor <64 x i1> %q0, %q1124  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1125  ret <64 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 <64 x i8> @test_0d(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {132  %q0 = icmp sgt <64 x i8> %v0, %v1133  %q1 = trunc <64 x i8> %v2 to <64 x i1>134  %q2 = and <64 x i1> %q0, %q1135  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1136  ret <64 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 <64 x i8> @test_0e(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {143  %q0 = icmp sgt <64 x i8> %v0, %v1144  %q1 = trunc <64 x i8> %v2 to <64 x i1>145  %q2 = or <64 x i1> %q0, %q1146  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1147  ret <64 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 <64 x i8> @test_0f(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {154  %q0 = icmp sgt <64 x i8> %v0, %v1155  %q1 = trunc <64 x i8> %v2 to <64 x i1>156  %q2 = xor <64 x i1> %q0, %q1157  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1158  ret <64 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 <64 x i8> @test_0g(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {165  %q0 = icmp ugt <64 x i8> %v0, %v1166  %q1 = trunc <64 x i8> %v2 to <64 x i1>167  %q2 = and <64 x i1> %q0, %q1168  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1169  ret <64 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 <64 x i8> @test_0h(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {176  %q0 = icmp ugt <64 x i8> %v0, %v1177  %q1 = trunc <64 x i8> %v2 to <64 x i1>178  %q2 = or <64 x i1> %q0, %q1179  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1180  ret <64 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 <64 x i8> @test_0i(<64 x i8> %v0, <64 x i8> %v1, <64 x i8> %v2) #0 {187  %q0 = icmp ugt <64 x i8> %v0, %v1188  %q1 = trunc <64 x i8> %v2 to <64 x i1>189  %q2 = xor <64 x i1> %q0, %q1190  %t1 = select <64 x i1> %q2, <64 x i8> %v0, <64 x i8> %v1191  ret <64 x i8> %t1192}193 194 195; --- Half196 197; CHECK-LABEL: test_10:198; CHECK: q[[Q100:[0-3]]] = vcmp.eq(v0.h,v1.h)199; CHECK: v0 = vmux(q[[Q100]],v1,v2)200define <32 x i16> @test_10(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {201  %t0 = icmp eq <32 x i16> %v0, %v1202  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2203  ret <32 x i16> %t1204}205 206; CHECK-LABEL: test_11:207; CHECK: q[[Q110:[0-3]]] = vcmp.eq(v0.h,v1.h)208; CHECK: v0 = vmux(q[[Q110]],v2,v1)209define <32 x i16> @test_11(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {210  %t0 = icmp ne <32 x i16> %v0, %v1211  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2212  ret <32 x i16> %t1213}214 215; CHECK-LABEL: test_12:216; CHECK: q[[Q120:[0-3]]] = vcmp.gt(v1.h,v0.h)217; CHECK: v0 = vmux(q[[Q120]],v1,v2)218define <32 x i16> @test_12(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {219  %t0 = icmp slt <32 x i16> %v0, %v1220  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2221  ret <32 x i16> %t1222}223 224; CHECK-LABEL: test_13:225; CHECK: q[[Q130:[0-3]]] = vcmp.gt(v0.h,v1.h)226; CHECK: v0 = vmux(q[[Q130]],v2,v1)227define <32 x i16> @test_13(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {228  %t0 = icmp sle <32 x i16> %v0, %v1229  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2230  ret <32 x i16> %t1231}232 233; CHECK-LABEL: test_14:234; CHECK: q[[Q140:[0-3]]] = vcmp.gt(v0.h,v1.h)235; CHECK: v0 = vmux(q[[Q140]],v1,v2)236define <32 x i16> @test_14(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {237  %t0 = icmp sgt <32 x i16> %v0, %v1238  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2239  ret <32 x i16> %t1240}241 242; CHECK-LABEL: test_15:243; CHECK: q[[Q150:[0-3]]] = vcmp.gt(v1.h,v0.h)244; CHECK: v0 = vmux(q[[Q150]],v2,v1)245define <32 x i16> @test_15(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {246  %t0 = icmp sge <32 x i16> %v0, %v1247  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2248  ret <32 x i16> %t1249}250 251; CHECK-LABEL: test_16:252; CHECK: q[[Q160:[0-3]]] = vcmp.gt(v1.uh,v0.uh)253; CHECK: v0 = vmux(q[[Q160]],v1,v2)254define <32 x i16> @test_16(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {255  %t0 = icmp ult <32 x i16> %v0, %v1256  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2257  ret <32 x i16> %t1258}259 260; CHECK-LABEL: test_17:261; CHECK: q[[Q170:[0-3]]] = vcmp.gt(v0.uh,v1.uh)262; CHECK: v0 = vmux(q[[Q170]],v2,v1)263define <32 x i16> @test_17(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {264  %t0 = icmp ule <32 x i16> %v0, %v1265  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2266  ret <32 x i16> %t1267}268 269; CHECK-LABEL: test_18:270; CHECK: q[[Q180:[0-3]]] = vcmp.gt(v0.uh,v1.uh)271; CHECK: v0 = vmux(q[[Q180]],v1,v2)272define <32 x i16> @test_18(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {273  %t0 = icmp ugt <32 x i16> %v0, %v1274  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2275  ret <32 x i16> %t1276}277 278; CHECK-LABEL: test_19:279; CHECK: q[[Q190:[0-3]]] = vcmp.gt(v1.uh,v0.uh)280; CHECK: v0 = vmux(q[[Q190]],v2,v1)281define <32 x i16> @test_19(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {282  %t0 = icmp uge <32 x i16> %v0, %v1283  %t1 = select <32 x i1> %t0, <32 x i16> %v1, <32 x i16> %v2284  ret <32 x i16> %t1285}286 287; CHECK-LABEL: test_1a:288; CHECK: q[[Q1A0:[0-3]]] &= vcmp.eq(v0.h,v1.h)289; CHECK: v0 = vmux(q[[Q1A0]],v0,v1)290define <32 x i16> @test_1a(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {291  %q0 = icmp eq <32 x i16> %v0, %v1292  %q1 = trunc <32 x i16> %v2 to <32 x i1>293  %q2 = and <32 x i1> %q0, %q1294  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1295  ret <32 x i16> %t1296}297 298; CHECK-LABEL: test_1b:299; CHECK: q[[Q1B0:[0-3]]] |= vcmp.eq(v0.h,v1.h)300; CHECK: v0 = vmux(q[[Q1B0]],v0,v1)301define <32 x i16> @test_1b(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {302  %q0 = icmp eq <32 x i16> %v0, %v1303  %q1 = trunc <32 x i16> %v2 to <32 x i1>304  %q2 = or <32 x i1> %q0, %q1305  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1306  ret <32 x i16> %t1307}308 309; CHECK-LABEL: test_1c:310; CHECK: q[[Q1C0:[0-3]]] ^= vcmp.eq(v0.h,v1.h)311; CHECK: v0 = vmux(q[[Q1C0]],v0,v1)312define <32 x i16> @test_1c(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {313  %q0 = icmp eq <32 x i16> %v0, %v1314  %q1 = trunc <32 x i16> %v2 to <32 x i1>315  %q2 = xor <32 x i1> %q0, %q1316  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1317  ret <32 x i16> %t1318}319 320; CHECK-LABEL: test_1d:321; CHECK: q[[Q1D0:[0-3]]] &= vcmp.gt(v0.h,v1.h)322; CHECK: v0 = vmux(q[[Q1D0]],v0,v1)323define <32 x i16> @test_1d(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {324  %q0 = icmp sgt <32 x i16> %v0, %v1325  %q1 = trunc <32 x i16> %v2 to <32 x i1>326  %q2 = and <32 x i1> %q0, %q1327  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1328  ret <32 x i16> %t1329}330 331; CHECK-LABEL: test_1e:332; CHECK: q[[Q1E0:[0-3]]] |= vcmp.gt(v0.h,v1.h)333; CHECK: v0 = vmux(q[[Q1E0]],v0,v1)334define <32 x i16> @test_1e(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {335  %q0 = icmp sgt <32 x i16> %v0, %v1336  %q1 = trunc <32 x i16> %v2 to <32 x i1>337  %q2 = or <32 x i1> %q0, %q1338  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1339  ret <32 x i16> %t1340}341 342; CHECK-LABEL: test_1f:343; CHECK: q[[Q1F0:[0-3]]] ^= vcmp.gt(v0.h,v1.h)344; CHECK: v0 = vmux(q[[Q1F0]],v0,v1)345define <32 x i16> @test_1f(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {346  %q0 = icmp sgt <32 x i16> %v0, %v1347  %q1 = trunc <32 x i16> %v2 to <32 x i1>348  %q2 = xor <32 x i1> %q0, %q1349  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1350  ret <32 x i16> %t1351}352 353; CHECK-LABEL: test_1g:354; CHECK: q[[Q1G0:[0-3]]] &= vcmp.gt(v0.uh,v1.uh)355; CHECK: v0 = vmux(q[[Q1G0]],v0,v1)356define <32 x i16> @test_1g(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {357  %q0 = icmp ugt <32 x i16> %v0, %v1358  %q1 = trunc <32 x i16> %v2 to <32 x i1>359  %q2 = and <32 x i1> %q0, %q1360  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1361  ret <32 x i16> %t1362}363 364; CHECK-LABEL: test_1h:365; CHECK: q[[Q1H0:[0-3]]] |= vcmp.gt(v0.uh,v1.uh)366; CHECK: v0 = vmux(q[[Q1H0]],v0,v1)367define <32 x i16> @test_1h(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {368  %q0 = icmp ugt <32 x i16> %v0, %v1369  %q1 = trunc <32 x i16> %v2 to <32 x i1>370  %q2 = or <32 x i1> %q0, %q1371  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1372  ret <32 x i16> %t1373}374 375; CHECK-LABEL: test_1i:376; CHECK: q[[Q1I0:[0-3]]] ^= vcmp.gt(v0.uh,v1.uh)377; CHECK: v0 = vmux(q[[Q1I0]],v0,v1)378define <32 x i16> @test_1i(<32 x i16> %v0, <32 x i16> %v1, <32 x i16> %v2) #0 {379  %q0 = icmp ugt <32 x i16> %v0, %v1380  %q1 = trunc <32 x i16> %v2 to <32 x i1>381  %q2 = xor <32 x i1> %q0, %q1382  %t1 = select <32 x i1> %q2, <32 x i16> %v0, <32 x i16> %v1383  ret <32 x i16> %t1384}385 386; --- Word387 388; CHECK-LABEL: test_20:389; CHECK: q[[Q200:[0-3]]] = vcmp.eq(v0.w,v1.w)390; CHECK: v0 = vmux(q[[Q200]],v1,v2)391define <16 x i32> @test_20(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {392  %t0 = icmp eq <16 x i32> %v0, %v1393  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2394  ret <16 x i32> %t1395}396 397; CHECK-LABEL: test_21:398; CHECK: q[[Q210:[0-3]]] = vcmp.eq(v0.w,v1.w)399; CHECK: v0 = vmux(q[[Q210]],v2,v1)400define <16 x i32> @test_21(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {401  %t0 = icmp ne <16 x i32> %v0, %v1402  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2403  ret <16 x i32> %t1404}405 406; CHECK-LABEL: test_22:407; CHECK: q[[Q220:[0-3]]] = vcmp.gt(v1.w,v0.w)408; CHECK: v0 = vmux(q[[Q220]],v1,v2)409define <16 x i32> @test_22(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {410  %t0 = icmp slt <16 x i32> %v0, %v1411  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2412  ret <16 x i32> %t1413}414 415; CHECK-LABEL: test_23:416; CHECK: q[[Q230:[0-3]]] = vcmp.gt(v0.w,v1.w)417; CHECK: v0 = vmux(q[[Q230]],v2,v1)418define <16 x i32> @test_23(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {419  %t0 = icmp sle <16 x i32> %v0, %v1420  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2421  ret <16 x i32> %t1422}423 424; CHECK-LABEL: test_24:425; CHECK: q[[Q240:[0-3]]] = vcmp.gt(v0.w,v1.w)426; CHECK: v0 = vmux(q[[Q240]],v1,v2)427define <16 x i32> @test_24(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {428  %t0 = icmp sgt <16 x i32> %v0, %v1429  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2430  ret <16 x i32> %t1431}432 433; CHECK-LABEL: test_25:434; CHECK: q[[Q250:[0-3]]] = vcmp.gt(v1.w,v0.w)435; CHECK: v0 = vmux(q[[Q250]],v2,v1)436define <16 x i32> @test_25(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {437  %t0 = icmp sge <16 x i32> %v0, %v1438  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2439  ret <16 x i32> %t1440}441 442; CHECK-LABEL: test_26:443; CHECK: q[[Q260:[0-3]]] = vcmp.gt(v1.uw,v0.uw)444; CHECK: v0 = vmux(q[[Q260]],v1,v2)445define <16 x i32> @test_26(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {446  %t0 = icmp ult <16 x i32> %v0, %v1447  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2448  ret <16 x i32> %t1449}450 451; CHECK-LABEL: test_27:452; CHECK: q[[Q270:[0-3]]] = vcmp.gt(v0.uw,v1.uw)453; CHECK: v0 = vmux(q[[Q270]],v2,v1)454define <16 x i32> @test_27(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {455  %t0 = icmp ule <16 x i32> %v0, %v1456  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2457  ret <16 x i32> %t1458}459 460; CHECK-LABEL: test_28:461; CHECK: q[[Q280:[0-3]]] = vcmp.gt(v0.uw,v1.uw)462; CHECK: v0 = vmux(q[[Q280]],v1,v2)463define <16 x i32> @test_28(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {464  %t0 = icmp ugt <16 x i32> %v0, %v1465  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2466  ret <16 x i32> %t1467}468 469; CHECK-LABEL: test_29:470; CHECK: q[[Q290:[0-3]]] = vcmp.gt(v1.uw,v0.uw)471; CHECK: v0 = vmux(q[[Q290]],v2,v1)472define <16 x i32> @test_29(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {473  %t0 = icmp uge <16 x i32> %v0, %v1474  %t1 = select <16 x i1> %t0, <16 x i32> %v1, <16 x i32> %v2475  ret <16 x i32> %t1476}477 478; CHECK-LABEL: test_2a:479; CHECK: q[[Q2A0:[0-3]]] &= vcmp.eq(v0.w,v1.w)480; CHECK: v0 = vmux(q[[Q2A0]],v0,v1)481define <16 x i32> @test_2a(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {482  %q0 = icmp eq <16 x i32> %v0, %v1483  %q1 = trunc <16 x i32> %v2 to <16 x i1>484  %q2 = and <16 x i1> %q0, %q1485  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1486  ret <16 x i32> %t1487}488 489; CHECK-LABEL: test_2b:490; CHECK: q[[Q2B0:[0-3]]] |= vcmp.eq(v0.w,v1.w)491; CHECK: v0 = vmux(q[[Q2B0]],v0,v1)492define <16 x i32> @test_2b(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {493  %q0 = icmp eq <16 x i32> %v0, %v1494  %q1 = trunc <16 x i32> %v2 to <16 x i1>495  %q2 = or <16 x i1> %q0, %q1496  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1497  ret <16 x i32> %t1498}499 500; CHECK-LABEL: test_2c:501; CHECK: q[[Q2C0:[0-3]]] ^= vcmp.eq(v0.w,v1.w)502; CHECK: v0 = vmux(q[[Q2C0]],v0,v1)503define <16 x i32> @test_2c(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {504  %q0 = icmp eq <16 x i32> %v0, %v1505  %q1 = trunc <16 x i32> %v2 to <16 x i1>506  %q2 = xor <16 x i1> %q0, %q1507  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1508  ret <16 x i32> %t1509}510 511; CHECK-LABEL: test_2d:512; CHECK: q[[Q2D0:[0-3]]] &= vcmp.gt(v0.w,v1.w)513; CHECK: v0 = vmux(q[[Q2D0]],v0,v1)514define <16 x i32> @test_2d(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {515  %q0 = icmp sgt <16 x i32> %v0, %v1516  %q1 = trunc <16 x i32> %v2 to <16 x i1>517  %q2 = and <16 x i1> %q0, %q1518  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1519  ret <16 x i32> %t1520}521 522; CHECK-LABEL: test_2e:523; CHECK: q[[Q2E0:[0-3]]] |= vcmp.gt(v0.w,v1.w)524; CHECK: v0 = vmux(q[[Q2E0]],v0,v1)525define <16 x i32> @test_2e(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {526  %q0 = icmp sgt <16 x i32> %v0, %v1527  %q1 = trunc <16 x i32> %v2 to <16 x i1>528  %q2 = or <16 x i1> %q0, %q1529  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1530  ret <16 x i32> %t1531}532 533; CHECK-LABEL: test_2f:534; CHECK: q[[Q2F0:[0-3]]] ^= vcmp.gt(v0.w,v1.w)535; CHECK: v0 = vmux(q[[Q2F0]],v0,v1)536define <16 x i32> @test_2f(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {537  %q0 = icmp sgt <16 x i32> %v0, %v1538  %q1 = trunc <16 x i32> %v2 to <16 x i1>539  %q2 = xor <16 x i1> %q0, %q1540  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1541  ret <16 x i32> %t1542}543 544; CHECK-LABEL: test_2g:545; CHECK: q[[Q2G0:[0-3]]] &= vcmp.gt(v0.uw,v1.uw)546; CHECK: v0 = vmux(q[[Q2G0]],v0,v1)547define <16 x i32> @test_2g(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {548  %q0 = icmp ugt <16 x i32> %v0, %v1549  %q1 = trunc <16 x i32> %v2 to <16 x i1>550  %q2 = and <16 x i1> %q0, %q1551  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1552  ret <16 x i32> %t1553}554 555; CHECK-LABEL: test_2h:556; CHECK: q[[Q2H0:[0-3]]] |= vcmp.gt(v0.uw,v1.uw)557; CHECK: v0 = vmux(q[[Q2H0]],v0,v1)558define <16 x i32> @test_2h(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {559  %q0 = icmp ugt <16 x i32> %v0, %v1560  %q1 = trunc <16 x i32> %v2 to <16 x i1>561  %q2 = or <16 x i1> %q0, %q1562  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1563  ret <16 x i32> %t1564}565 566; CHECK-LABEL: test_2i:567; CHECK: q[[Q2I0:[0-3]]] ^= vcmp.gt(v0.uw,v1.uw)568; CHECK: v0 = vmux(q[[Q2I0]],v0,v1)569define <16 x i32> @test_2i(<16 x i32> %v0, <16 x i32> %v1, <16 x i32> %v2) #0 {570  %q0 = icmp ugt <16 x i32> %v0, %v1571  %q1 = trunc <16 x i32> %v2 to <16 x i1>572  %q2 = xor <16 x i1> %q0, %q1573  %t1 = select <16 x i1> %q2, <16 x i32> %v0, <16 x i32> %v1574  ret <16 x i32> %t1575}576 577attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }578