642 lines · plain
1; RUN: llc -mtriple=mips -mattr=dsp < %s | FileCheck %s2 3; CHECK-LABEL: select_v2q15_eq_:4; CHECK: cmp.eq.ph ${{[0-9]+}}, ${{[0-9]+}}5; CHECK: pick.ph ${{[0-9]+}}, $6, $76 7define { i32 } @select_v2q15_eq_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {8entry:9 %0 = bitcast i32 %a0.coerce to <2 x i16>10 %1 = bitcast i32 %a1.coerce to <2 x i16>11 %2 = bitcast i32 %a2.coerce to <2 x i16>12 %3 = bitcast i32 %a3.coerce to <2 x i16>13 %cmp = icmp eq <2 x i16> %0, %114 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %315 %4 = bitcast <2 x i16> %or to i3216 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 017 ret { i32 } %.fca.0.insert18}19 20; CHECK-LABEL: select_v2q15_lt_:21; CHECK: cmp.lt.ph $4, $522; CHECK: pick.ph ${{[0-9]+}}, $6, $723 24define { i32 } @select_v2q15_lt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {25entry:26 %0 = bitcast i32 %a0.coerce to <2 x i16>27 %1 = bitcast i32 %a1.coerce to <2 x i16>28 %2 = bitcast i32 %a2.coerce to <2 x i16>29 %3 = bitcast i32 %a3.coerce to <2 x i16>30 %cmp = icmp slt <2 x i16> %0, %131 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %332 %4 = bitcast <2 x i16> %or to i3233 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 034 ret { i32 } %.fca.0.insert35}36 37; CHECK-LABEL: select_v2q15_le_:38; CHECK: cmp.le.ph $4, $539; CHECK: pick.ph ${{[0-9]+}}, $6, $740 41define { i32 } @select_v2q15_le_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {42entry:43 %0 = bitcast i32 %a0.coerce to <2 x i16>44 %1 = bitcast i32 %a1.coerce to <2 x i16>45 %2 = bitcast i32 %a2.coerce to <2 x i16>46 %3 = bitcast i32 %a3.coerce to <2 x i16>47 %cmp = icmp sle <2 x i16> %0, %148 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %349 %4 = bitcast <2 x i16> %or to i3250 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 051 ret { i32 } %.fca.0.insert52}53 54; CHECK-LABEL: select_v2q15_ne_:55; CHECK: cmp.eq.ph ${{[0-9]+}}, ${{[0-9]+}}56; CHECK: pick.ph ${{[0-9]+}}, $7, $657 58define { i32 } @select_v2q15_ne_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {59entry:60 %0 = bitcast i32 %a0.coerce to <2 x i16>61 %1 = bitcast i32 %a1.coerce to <2 x i16>62 %2 = bitcast i32 %a2.coerce to <2 x i16>63 %3 = bitcast i32 %a3.coerce to <2 x i16>64 %cmp = icmp ne <2 x i16> %0, %165 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %366 %4 = bitcast <2 x i16> %or to i3267 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 068 ret { i32 } %.fca.0.insert69}70 71; CHECK-LABEL: select_v2q15_gt_:72; CHECK: cmp.le.ph $4, $573; CHECK: pick.ph ${{[0-9]+}}, $7, $674 75define { i32 } @select_v2q15_gt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {76entry:77 %0 = bitcast i32 %a0.coerce to <2 x i16>78 %1 = bitcast i32 %a1.coerce to <2 x i16>79 %2 = bitcast i32 %a2.coerce to <2 x i16>80 %3 = bitcast i32 %a3.coerce to <2 x i16>81 %cmp = icmp sgt <2 x i16> %0, %182 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %383 %4 = bitcast <2 x i16> %or to i3284 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 085 ret { i32 } %.fca.0.insert86}87 88; CHECK-LABEL: select_v2q15_ge_:89; CHECK: cmp.lt.ph $4, $590; CHECK: pick.ph ${{[0-9]+}}, $7, $691 92define { i32 } @select_v2q15_ge_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {93entry:94 %0 = bitcast i32 %a0.coerce to <2 x i16>95 %1 = bitcast i32 %a1.coerce to <2 x i16>96 %2 = bitcast i32 %a2.coerce to <2 x i16>97 %3 = bitcast i32 %a3.coerce to <2 x i16>98 %cmp = icmp sge <2 x i16> %0, %199 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %3100 %4 = bitcast <2 x i16> %or to i32101 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0102 ret { i32 } %.fca.0.insert103}104 105; CHECK-LABEL: select_v4ui8_eq_:106; CHECK: cmpu.eq.qb ${{[0-9]+}}, ${{[0-9]+}}107; CHECK: pick.qb ${{[0-9]+}}, $6, $7108 109define { i32 } @select_v4ui8_eq_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {110entry:111 %0 = bitcast i32 %a0.coerce to <4 x i8>112 %1 = bitcast i32 %a1.coerce to <4 x i8>113 %2 = bitcast i32 %a2.coerce to <4 x i8>114 %3 = bitcast i32 %a3.coerce to <4 x i8>115 %cmp = icmp eq <4 x i8> %0, %1116 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3117 %4 = bitcast <4 x i8> %or to i32118 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0119 ret { i32 } %.fca.0.insert120}121 122; CHECK-LABEL: select_v4ui8_lt_:123; CHECK: cmpu.lt.qb $4, $5124; CHECK: pick.qb ${{[0-9]+}}, $6, $7125 126define { i32 } @select_v4ui8_lt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {127entry:128 %0 = bitcast i32 %a0.coerce to <4 x i8>129 %1 = bitcast i32 %a1.coerce to <4 x i8>130 %2 = bitcast i32 %a2.coerce to <4 x i8>131 %3 = bitcast i32 %a3.coerce to <4 x i8>132 %cmp = icmp ult <4 x i8> %0, %1133 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3134 %4 = bitcast <4 x i8> %or to i32135 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0136 ret { i32 } %.fca.0.insert137}138 139; CHECK-LABEL: select_v4ui8_le_:140; CHECK: cmpu.le.qb $4, $5141; CHECK: pick.qb ${{[0-9]+}}, $6, $7142 143define { i32 } @select_v4ui8_le_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {144entry:145 %0 = bitcast i32 %a0.coerce to <4 x i8>146 %1 = bitcast i32 %a1.coerce to <4 x i8>147 %2 = bitcast i32 %a2.coerce to <4 x i8>148 %3 = bitcast i32 %a3.coerce to <4 x i8>149 %cmp = icmp ule <4 x i8> %0, %1150 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3151 %4 = bitcast <4 x i8> %or to i32152 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0153 ret { i32 } %.fca.0.insert154}155 156; CHECK-LABEL: select_v4ui8_ne_:157; CHECK: cmpu.eq.qb ${{[0-9]+}}, ${{[0-9]+}}158; CHECK: pick.qb ${{[0-9]+}}, $7, $6159 160define { i32 } @select_v4ui8_ne_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {161entry:162 %0 = bitcast i32 %a0.coerce to <4 x i8>163 %1 = bitcast i32 %a1.coerce to <4 x i8>164 %2 = bitcast i32 %a2.coerce to <4 x i8>165 %3 = bitcast i32 %a3.coerce to <4 x i8>166 %cmp = icmp ne <4 x i8> %0, %1167 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3168 %4 = bitcast <4 x i8> %or to i32169 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0170 ret { i32 } %.fca.0.insert171}172 173; CHECK-LABEL: select_v4ui8_gt_:174; CHECK: cmpu.le.qb $4, $5175; CHECK: pick.qb ${{[0-9]+}}, $7, $6176 177define { i32 } @select_v4ui8_gt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {178entry:179 %0 = bitcast i32 %a0.coerce to <4 x i8>180 %1 = bitcast i32 %a1.coerce to <4 x i8>181 %2 = bitcast i32 %a2.coerce to <4 x i8>182 %3 = bitcast i32 %a3.coerce to <4 x i8>183 %cmp = icmp ugt <4 x i8> %0, %1184 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3185 %4 = bitcast <4 x i8> %or to i32186 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0187 ret { i32 } %.fca.0.insert188}189 190; CHECK-LABEL: select_v4ui8_ge_:191; CHECK: cmpu.lt.qb $4, $5192; CHECK: pick.qb ${{[0-9]+}}, $7, $6193 194define { i32 } @select_v4ui8_ge_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {195entry:196 %0 = bitcast i32 %a0.coerce to <4 x i8>197 %1 = bitcast i32 %a1.coerce to <4 x i8>198 %2 = bitcast i32 %a2.coerce to <4 x i8>199 %3 = bitcast i32 %a3.coerce to <4 x i8>200 %cmp = icmp uge <4 x i8> %0, %1201 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3202 %4 = bitcast <4 x i8> %or to i32203 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0204 ret { i32 } %.fca.0.insert205}206 207; CHECK-LABEL: select_v2ui16_lt_:208; CHECK-NOT: cmp209; CHECK-NOT: pick210 211define { i32 } @select_v2ui16_lt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {212entry:213 %0 = bitcast i32 %a0.coerce to <2 x i16>214 %1 = bitcast i32 %a1.coerce to <2 x i16>215 %2 = bitcast i32 %a2.coerce to <2 x i16>216 %3 = bitcast i32 %a3.coerce to <2 x i16>217 %cmp = icmp ult <2 x i16> %0, %1218 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %3219 %4 = bitcast <2 x i16> %or to i32220 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0221 ret { i32 } %.fca.0.insert222}223 224; CHECK-LABEL: select_v2ui16_le_:225; CHECK-NOT: cmp226; CHECK-NOT: pick227 228define { i32 } @select_v2ui16_le_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {229entry:230 %0 = bitcast i32 %a0.coerce to <2 x i16>231 %1 = bitcast i32 %a1.coerce to <2 x i16>232 %2 = bitcast i32 %a2.coerce to <2 x i16>233 %3 = bitcast i32 %a3.coerce to <2 x i16>234 %cmp = icmp ule <2 x i16> %0, %1235 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %3236 %4 = bitcast <2 x i16> %or to i32237 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0238 ret { i32 } %.fca.0.insert239}240 241; CHECK-LABEL: select_v2ui16_gt_:242; CHECK-NOT: cmp243; CHECK-NOT: pick244 245define { i32 } @select_v2ui16_gt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {246entry:247 %0 = bitcast i32 %a0.coerce to <2 x i16>248 %1 = bitcast i32 %a1.coerce to <2 x i16>249 %2 = bitcast i32 %a2.coerce to <2 x i16>250 %3 = bitcast i32 %a3.coerce to <2 x i16>251 %cmp = icmp ugt <2 x i16> %0, %1252 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %3253 %4 = bitcast <2 x i16> %or to i32254 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0255 ret { i32 } %.fca.0.insert256}257 258; CHECK-LABEL: select_v2ui16_ge_:259; CHECK-NOT: cmp260; CHECK-NOT: pick261 262define { i32 } @select_v2ui16_ge_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {263entry:264 %0 = bitcast i32 %a0.coerce to <2 x i16>265 %1 = bitcast i32 %a1.coerce to <2 x i16>266 %2 = bitcast i32 %a2.coerce to <2 x i16>267 %3 = bitcast i32 %a3.coerce to <2 x i16>268 %cmp = icmp uge <2 x i16> %0, %1269 %or = select <2 x i1> %cmp, <2 x i16> %2, <2 x i16> %3270 %4 = bitcast <2 x i16> %or to i32271 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0272 ret { i32 } %.fca.0.insert273}274 275; CHECK-LABEL: select_v4i8_lt_:276; CHECK-NOT: cmp277; CHECK-NOT: pick278 279define { i32 } @select_v4i8_lt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {280entry:281 %0 = bitcast i32 %a0.coerce to <4 x i8>282 %1 = bitcast i32 %a1.coerce to <4 x i8>283 %2 = bitcast i32 %a2.coerce to <4 x i8>284 %3 = bitcast i32 %a3.coerce to <4 x i8>285 %cmp = icmp slt <4 x i8> %0, %1286 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3287 %4 = bitcast <4 x i8> %or to i32288 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0289 ret { i32 } %.fca.0.insert290}291 292; CHECK-LABEL: select_v4i8_le_:293; CHECK-NOT: cmp294; CHECK-NOT: pick295 296define { i32 } @select_v4i8_le_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {297entry:298 %0 = bitcast i32 %a0.coerce to <4 x i8>299 %1 = bitcast i32 %a1.coerce to <4 x i8>300 %2 = bitcast i32 %a2.coerce to <4 x i8>301 %3 = bitcast i32 %a3.coerce to <4 x i8>302 %cmp = icmp sle <4 x i8> %0, %1303 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3304 %4 = bitcast <4 x i8> %or to i32305 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0306 ret { i32 } %.fca.0.insert307}308 309; CHECK-LABEL: select_v4i8_gt_:310; CHECK-NOT: cmp311; CHECK-NOT: pick312 313define { i32 } @select_v4i8_gt_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {314entry:315 %0 = bitcast i32 %a0.coerce to <4 x i8>316 %1 = bitcast i32 %a1.coerce to <4 x i8>317 %2 = bitcast i32 %a2.coerce to <4 x i8>318 %3 = bitcast i32 %a3.coerce to <4 x i8>319 %cmp = icmp sgt <4 x i8> %0, %1320 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3321 %4 = bitcast <4 x i8> %or to i32322 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0323 ret { i32 } %.fca.0.insert324}325 326; CHECK-LABEL: select_v4i8_ge_:327; CHECK-NOT: cmp328; CHECK-NOT: pick329 330define { i32 } @select_v4i8_ge_(i32 %a0.coerce, i32 %a1.coerce, i32 %a2.coerce, i32 %a3.coerce) {331entry:332 %0 = bitcast i32 %a0.coerce to <4 x i8>333 %1 = bitcast i32 %a1.coerce to <4 x i8>334 %2 = bitcast i32 %a2.coerce to <4 x i8>335 %3 = bitcast i32 %a3.coerce to <4 x i8>336 %cmp = icmp sge <4 x i8> %0, %1337 %or = select <4 x i1> %cmp, <4 x i8> %2, <4 x i8> %3338 %4 = bitcast <4 x i8> %or to i32339 %.fca.0.insert = insertvalue { i32 } undef, i32 %4, 0340 ret { i32 } %.fca.0.insert341}342 343; CHECK-LABEL: compare_v2q15_eq_:344; CHECK: cmp.eq.ph ${{[0-9]+}}, ${{[0-9]+}}345; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}346 347define { i32 } @compare_v2q15_eq_(i32 %a0.coerce, i32 %a1.coerce) {348entry:349 %0 = bitcast i32 %a0.coerce to <2 x i16>350 %1 = bitcast i32 %a1.coerce to <2 x i16>351 %cmp = icmp eq <2 x i16> %0, %1352 %sext = sext <2 x i1> %cmp to <2 x i16>353 %2 = bitcast <2 x i16> %sext to i32354 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0355 ret { i32 } %.fca.0.insert356}357 358; CHECK-LABEL: compare_v2q15_lt_:359; CHECK: cmp.lt.ph $4, $5360; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}361 362define { i32 } @compare_v2q15_lt_(i32 %a0.coerce, i32 %a1.coerce) {363entry:364 %0 = bitcast i32 %a0.coerce to <2 x i16>365 %1 = bitcast i32 %a1.coerce to <2 x i16>366 %cmp = icmp slt <2 x i16> %0, %1367 %sext = sext <2 x i1> %cmp to <2 x i16>368 %2 = bitcast <2 x i16> %sext to i32369 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0370 ret { i32 } %.fca.0.insert371}372 373; CHECK-LABEL: compare_v2q15_le_:374; CHECK: cmp.le.ph $4, $5375; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}376 377define { i32 } @compare_v2q15_le_(i32 %a0.coerce, i32 %a1.coerce) {378entry:379 %0 = bitcast i32 %a0.coerce to <2 x i16>380 %1 = bitcast i32 %a1.coerce to <2 x i16>381 %cmp = icmp sle <2 x i16> %0, %1382 %sext = sext <2 x i1> %cmp to <2 x i16>383 %2 = bitcast <2 x i16> %sext to i32384 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0385 ret { i32 } %.fca.0.insert386}387 388; CHECK-LABEL: compare_v2q15_ne_:389; CHECK: cmp.eq.ph ${{[0-9]+}}, ${{[0-9]+}}390; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}391 392define { i32 } @compare_v2q15_ne_(i32 %a0.coerce, i32 %a1.coerce) {393entry:394 %0 = bitcast i32 %a0.coerce to <2 x i16>395 %1 = bitcast i32 %a1.coerce to <2 x i16>396 %cmp = icmp ne <2 x i16> %0, %1397 %sext = sext <2 x i1> %cmp to <2 x i16>398 %2 = bitcast <2 x i16> %sext to i32399 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0400 ret { i32 } %.fca.0.insert401}402 403; CHECK-LABEL: compare_v2q15_gt_:404; CHECK: cmp.le.ph $4, $5405; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}406 407define { i32 } @compare_v2q15_gt_(i32 %a0.coerce, i32 %a1.coerce) {408entry:409 %0 = bitcast i32 %a0.coerce to <2 x i16>410 %1 = bitcast i32 %a1.coerce to <2 x i16>411 %cmp = icmp sgt <2 x i16> %0, %1412 %sext = sext <2 x i1> %cmp to <2 x i16>413 %2 = bitcast <2 x i16> %sext to i32414 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0415 ret { i32 } %.fca.0.insert416}417 418; CHECK-LABEL: compare_v2q15_ge_:419; CHECK: cmp.lt.ph $4, $5420; CHECK: pick.ph ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}421 422define { i32 } @compare_v2q15_ge_(i32 %a0.coerce, i32 %a1.coerce) {423entry:424 %0 = bitcast i32 %a0.coerce to <2 x i16>425 %1 = bitcast i32 %a1.coerce to <2 x i16>426 %cmp = icmp sge <2 x i16> %0, %1427 %sext = sext <2 x i1> %cmp to <2 x i16>428 %2 = bitcast <2 x i16> %sext to i32429 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0430 ret { i32 } %.fca.0.insert431}432 433; CHECK-LABEL: compare_v4ui8_eq_:434; CHECK: cmpu.eq.qb ${{[0-9]+}}, ${{[0-9]+}}435; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}436 437define { i32 } @compare_v4ui8_eq_(i32 %a0.coerce, i32 %a1.coerce) {438entry:439 %0 = bitcast i32 %a0.coerce to <4 x i8>440 %1 = bitcast i32 %a1.coerce to <4 x i8>441 %cmp = icmp eq <4 x i8> %0, %1442 %sext = sext <4 x i1> %cmp to <4 x i8>443 %2 = bitcast <4 x i8> %sext to i32444 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0445 ret { i32 } %.fca.0.insert446}447 448; CHECK-LABEL: compare_v4ui8_lt_:449; CHECK: cmpu.lt.qb $4, $5450; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}451 452define { i32 } @compare_v4ui8_lt_(i32 %a0.coerce, i32 %a1.coerce) {453entry:454 %0 = bitcast i32 %a0.coerce to <4 x i8>455 %1 = bitcast i32 %a1.coerce to <4 x i8>456 %cmp = icmp ult <4 x i8> %0, %1457 %sext = sext <4 x i1> %cmp to <4 x i8>458 %2 = bitcast <4 x i8> %sext to i32459 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0460 ret { i32 } %.fca.0.insert461}462 463; CHECK-LABEL: compare_v4ui8_le_:464; CHECK: cmpu.le.qb $4, $5465; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}466 467define { i32 } @compare_v4ui8_le_(i32 %a0.coerce, i32 %a1.coerce) {468entry:469 %0 = bitcast i32 %a0.coerce to <4 x i8>470 %1 = bitcast i32 %a1.coerce to <4 x i8>471 %cmp = icmp ule <4 x i8> %0, %1472 %sext = sext <4 x i1> %cmp to <4 x i8>473 %2 = bitcast <4 x i8> %sext to i32474 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0475 ret { i32 } %.fca.0.insert476}477 478; CHECK-LABEL: compare_v4ui8_ne_:479; CHECK: cmpu.eq.qb ${{[0-9]+}}, ${{[0-9]+}}480; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}481 482define { i32 } @compare_v4ui8_ne_(i32 %a0.coerce, i32 %a1.coerce) {483entry:484 %0 = bitcast i32 %a0.coerce to <4 x i8>485 %1 = bitcast i32 %a1.coerce to <4 x i8>486 %cmp = icmp ne <4 x i8> %0, %1487 %sext = sext <4 x i1> %cmp to <4 x i8>488 %2 = bitcast <4 x i8> %sext to i32489 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0490 ret { i32 } %.fca.0.insert491}492 493; CHECK-LABEL: compare_v4ui8_gt_:494; CHECK: cmpu.le.qb $4, $5495; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}496 497define { i32 } @compare_v4ui8_gt_(i32 %a0.coerce, i32 %a1.coerce) {498entry:499 %0 = bitcast i32 %a0.coerce to <4 x i8>500 %1 = bitcast i32 %a1.coerce to <4 x i8>501 %cmp = icmp ugt <4 x i8> %0, %1502 %sext = sext <4 x i1> %cmp to <4 x i8>503 %2 = bitcast <4 x i8> %sext to i32504 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0505 ret { i32 } %.fca.0.insert506}507 508; CHECK-LABEL: compare_v4ui8_ge_:509; CHECK: cmpu.lt.qb $4, $5510; CHECK: pick.qb ${{[0-9]+}}, ${{[a-z0-9]+}}, ${{[a-z0-9]+}}511 512define { i32 } @compare_v4ui8_ge_(i32 %a0.coerce, i32 %a1.coerce) {513entry:514 %0 = bitcast i32 %a0.coerce to <4 x i8>515 %1 = bitcast i32 %a1.coerce to <4 x i8>516 %cmp = icmp uge <4 x i8> %0, %1517 %sext = sext <4 x i1> %cmp to <4 x i8>518 %2 = bitcast <4 x i8> %sext to i32519 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0520 ret { i32 } %.fca.0.insert521}522 523; CHECK-LABEL: compare_v2ui16_lt_:524; CHECK-NOT: cmp525; CHECK-NOT: pick526 527define { i32 } @compare_v2ui16_lt_(i32 %a0.coerce, i32 %a1.coerce) {528entry:529 %0 = bitcast i32 %a0.coerce to <2 x i16>530 %1 = bitcast i32 %a1.coerce to <2 x i16>531 %cmp = icmp ult <2 x i16> %0, %1532 %sext = sext <2 x i1> %cmp to <2 x i16>533 %2 = bitcast <2 x i16> %sext to i32534 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0535 ret { i32 } %.fca.0.insert536}537 538; CHECK-LABEL: compare_v2ui16_le_:539; CHECK-NOT: cmp540; CHECK-NOT: pick541 542define { i32 } @compare_v2ui16_le_(i32 %a0.coerce, i32 %a1.coerce) {543entry:544 %0 = bitcast i32 %a0.coerce to <2 x i16>545 %1 = bitcast i32 %a1.coerce to <2 x i16>546 %cmp = icmp ule <2 x i16> %0, %1547 %sext = sext <2 x i1> %cmp to <2 x i16>548 %2 = bitcast <2 x i16> %sext to i32549 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0550 ret { i32 } %.fca.0.insert551}552 553; CHECK-LABEL: compare_v2ui16_gt_:554; CHECK-NOT: cmp555; CHECK-NOT: pick556 557define { i32 } @compare_v2ui16_gt_(i32 %a0.coerce, i32 %a1.coerce) {558entry:559 %0 = bitcast i32 %a0.coerce to <2 x i16>560 %1 = bitcast i32 %a1.coerce to <2 x i16>561 %cmp = icmp ugt <2 x i16> %0, %1562 %sext = sext <2 x i1> %cmp to <2 x i16>563 %2 = bitcast <2 x i16> %sext to i32564 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0565 ret { i32 } %.fca.0.insert566}567 568; CHECK-LABEL: compare_v2ui16_ge_:569; CHECK-NOT: cmp570; CHECK-NOT: pick571 572define { i32 } @compare_v2ui16_ge_(i32 %a0.coerce, i32 %a1.coerce) {573entry:574 %0 = bitcast i32 %a0.coerce to <2 x i16>575 %1 = bitcast i32 %a1.coerce to <2 x i16>576 %cmp = icmp uge <2 x i16> %0, %1577 %sext = sext <2 x i1> %cmp to <2 x i16>578 %2 = bitcast <2 x i16> %sext to i32579 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0580 ret { i32 } %.fca.0.insert581}582 583; CHECK-LABEL: compare_v4i8_lt_:584; CHECK-NOT: cmp585; CHECK-NOT: pick586 587define { i32 } @compare_v4i8_lt_(i32 %a0.coerce, i32 %a1.coerce) {588entry:589 %0 = bitcast i32 %a0.coerce to <4 x i8>590 %1 = bitcast i32 %a1.coerce to <4 x i8>591 %cmp = icmp slt <4 x i8> %0, %1592 %sext = sext <4 x i1> %cmp to <4 x i8>593 %2 = bitcast <4 x i8> %sext to i32594 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0595 ret { i32 } %.fca.0.insert596}597 598; CHECK-LABEL: compare_v4i8_le_:599; CHECK-NOT: cmp600; CHECK-NOT: pick601 602define { i32 } @compare_v4i8_le_(i32 %a0.coerce, i32 %a1.coerce) {603entry:604 %0 = bitcast i32 %a0.coerce to <4 x i8>605 %1 = bitcast i32 %a1.coerce to <4 x i8>606 %cmp = icmp sle <4 x i8> %0, %1607 %sext = sext <4 x i1> %cmp to <4 x i8>608 %2 = bitcast <4 x i8> %sext to i32609 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0610 ret { i32 } %.fca.0.insert611}612 613; CHECK-LABEL: compare_v4i8_gt_:614; CHECK-NOT: cmp615; CHECK-NOT: pick616 617define { i32 } @compare_v4i8_gt_(i32 %a0.coerce, i32 %a1.coerce) {618entry:619 %0 = bitcast i32 %a0.coerce to <4 x i8>620 %1 = bitcast i32 %a1.coerce to <4 x i8>621 %cmp = icmp sgt <4 x i8> %0, %1622 %sext = sext <4 x i1> %cmp to <4 x i8>623 %2 = bitcast <4 x i8> %sext to i32624 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0625 ret { i32 } %.fca.0.insert626}627 628; CHECK-LABEL: compare_v4i8_ge_:629; CHECK-NOT: cmp630; CHECK-NOT: pick631 632define { i32 } @compare_v4i8_ge_(i32 %a0.coerce, i32 %a1.coerce) {633entry:634 %0 = bitcast i32 %a0.coerce to <4 x i8>635 %1 = bitcast i32 %a1.coerce to <4 x i8>636 %cmp = icmp sge <4 x i8> %0, %1637 %sext = sext <4 x i1> %cmp to <4 x i8>638 %2 = bitcast <4 x i8> %sext to i32639 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0640 ret { i32 } %.fca.0.insert641}642