brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.5 KiB · 9444fdf Raw
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