brintos

brintos / llvm-project-archived public Read only

0
0
Text · 85.6 KiB · bad8df3 Raw
2695 lines · plain
1; RUN: llc < %s -mtriple=ve | FileCheck %s2 3;;; Test all combination of input type and output type among following types.4;;;5;;; Types:6;;;  i1/i8/u8/i16/u16/i32/u32/i64/u64/i128/u128/float/double/fp1287 8; Function Attrs: norecurse nounwind readnone9define zeroext i1 @select_cc_i1_i1(i1 zeroext %0, i1 zeroext %1, i1 zeroext %2, i1 zeroext %3) {10; CHECK-LABEL: select_cc_i1_i1:11; CHECK:       # %bb.0:12; CHECK-NEXT:    xor %s0, %s0, %s113; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s014; CHECK-NEXT:    adds.w.zx %s0, %s2, (0)115; CHECK-NEXT:    b.l.t (, %s10)16  %5 = xor i1 %0, %117  %6 = select i1 %5, i1 %3, i1 %218  ret i1 %619}20 21; Function Attrs: norecurse nounwind readnone22define zeroext i1 @select_cc_i8_i1(i8 signext %0, i8 signext %1, i1 zeroext %2, i1 zeroext %3) {23; CHECK-LABEL: select_cc_i8_i1:24; CHECK:       # %bb.0:25; CHECK-NEXT:    cmpu.w %s0, %s0, %s126; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s027; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)128; CHECK-NEXT:    b.l.t (, %s10)29  %5 = icmp eq i8 %0, %130  %6 = select i1 %5, i1 %2, i1 %331  ret i1 %632}33 34; Function Attrs: norecurse nounwind readnone35define zeroext i1 @select_cc_u8_i1(i8 zeroext %0, i8 zeroext %1, i1 zeroext %2, i1 zeroext %3) {36; CHECK-LABEL: select_cc_u8_i1:37; CHECK:       # %bb.0:38; CHECK-NEXT:    cmpu.w %s0, %s0, %s139; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s040; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)141; CHECK-NEXT:    b.l.t (, %s10)42  %5 = icmp eq i8 %0, %143  %6 = select i1 %5, i1 %2, i1 %344  ret i1 %645}46 47; Function Attrs: norecurse nounwind readnone48define zeroext i1 @select_cc_i16_i1(i16 signext %0, i16 signext %1, i1 zeroext %2, i1 zeroext %3) {49; CHECK-LABEL: select_cc_i16_i1:50; CHECK:       # %bb.0:51; CHECK-NEXT:    cmpu.w %s0, %s0, %s152; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s053; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)154; CHECK-NEXT:    b.l.t (, %s10)55  %5 = icmp eq i16 %0, %156  %6 = select i1 %5, i1 %2, i1 %357  ret i1 %658}59 60; Function Attrs: norecurse nounwind readnone61define zeroext i1 @select_cc_u16_i1(i16 zeroext %0, i16 zeroext %1, i1 zeroext %2, i1 zeroext %3) {62; CHECK-LABEL: select_cc_u16_i1:63; CHECK:       # %bb.0:64; CHECK-NEXT:    cmpu.w %s0, %s0, %s165; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s066; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)167; CHECK-NEXT:    b.l.t (, %s10)68  %5 = icmp eq i16 %0, %169  %6 = select i1 %5, i1 %2, i1 %370  ret i1 %671}72 73; Function Attrs: norecurse nounwind readnone74define zeroext i1 @select_cc_i32_i1(i32 signext %0, i32 signext %1, i1 zeroext %2, i1 zeroext %3) {75; CHECK-LABEL: select_cc_i32_i1:76; CHECK:       # %bb.0:77; CHECK-NEXT:    cmpu.w %s0, %s0, %s178; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s079; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)180; CHECK-NEXT:    b.l.t (, %s10)81  %5 = icmp eq i32 %0, %182  %6 = select i1 %5, i1 %2, i1 %383  ret i1 %684}85 86; Function Attrs: norecurse nounwind readnone87define zeroext i1 @select_cc_u32_i1(i32 zeroext %0, i32 zeroext %1, i1 zeroext %2, i1 zeroext %3) {88; CHECK-LABEL: select_cc_u32_i1:89; CHECK:       # %bb.0:90; CHECK-NEXT:    cmpu.w %s0, %s0, %s191; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s092; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)193; CHECK-NEXT:    b.l.t (, %s10)94  %5 = icmp eq i32 %0, %195  %6 = select i1 %5, i1 %2, i1 %396  ret i1 %697}98 99; Function Attrs: norecurse nounwind readnone100define zeroext i1 @select_cc_i64_i1(i64 %0, i64 %1, i1 zeroext %2, i1 zeroext %3) {101; CHECK-LABEL: select_cc_i64_i1:102; CHECK:       # %bb.0:103; CHECK-NEXT:    cmpu.l %s0, %s0, %s1104; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0105; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1106; CHECK-NEXT:    b.l.t (, %s10)107  %5 = icmp eq i64 %0, %1108  %6 = select i1 %5, i1 %2, i1 %3109  ret i1 %6110}111 112; Function Attrs: norecurse nounwind readnone113define zeroext i1 @select_cc_u64_i1(i64 %0, i64 %1, i1 zeroext %2, i1 zeroext %3) {114; CHECK-LABEL: select_cc_u64_i1:115; CHECK:       # %bb.0:116; CHECK-NEXT:    cmpu.l %s0, %s0, %s1117; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0118; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1119; CHECK-NEXT:    b.l.t (, %s10)120  %5 = icmp eq i64 %0, %1121  %6 = select i1 %5, i1 %2, i1 %3122  ret i1 %6123}124 125; Function Attrs: norecurse nounwind readnone126define zeroext i1 @select_cc_i128_i1(i128 %0, i128 %1, i1 zeroext %2, i1 zeroext %3) {127; CHECK-LABEL: select_cc_i128_i1:128; CHECK:       # %bb.0:129; CHECK-NEXT:    xor %s1, %s1, %s3130; CHECK-NEXT:    xor %s0, %s0, %s2131; CHECK-NEXT:    or %s0, %s0, %s1132; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0133; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1134; CHECK-NEXT:    b.l.t (, %s10)135  %5 = icmp eq i128 %0, %1136  %6 = select i1 %5, i1 %2, i1 %3137  ret i1 %6138}139 140; Function Attrs: norecurse nounwind readnone141define zeroext i1 @select_cc_u128_i1(i128 %0, i128 %1, i1 zeroext %2, i1 zeroext %3) {142; CHECK-LABEL: select_cc_u128_i1:143; CHECK:       # %bb.0:144; CHECK-NEXT:    xor %s1, %s1, %s3145; CHECK-NEXT:    xor %s0, %s0, %s2146; CHECK-NEXT:    or %s0, %s0, %s1147; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0148; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1149; CHECK-NEXT:    b.l.t (, %s10)150  %5 = icmp eq i128 %0, %1151  %6 = select i1 %5, i1 %2, i1 %3152  ret i1 %6153}154 155; Function Attrs: norecurse nounwind readnone156define zeroext i1 @select_cc_float_i1(float %0, float %1, i1 zeroext %2, i1 zeroext %3) {157; CHECK-LABEL: select_cc_float_i1:158; CHECK:       # %bb.0:159; CHECK-NEXT:    fcmp.s %s0, %s0, %s1160; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0161; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1162; CHECK-NEXT:    b.l.t (, %s10)163  %5 = fcmp fast oeq float %0, %1164  %6 = select i1 %5, i1 %2, i1 %3165  ret i1 %6166}167 168; Function Attrs: norecurse nounwind readnone169define zeroext i1 @select_cc_double_i1(double %0, double %1, i1 zeroext %2, i1 zeroext %3) {170; CHECK-LABEL: select_cc_double_i1:171; CHECK:       # %bb.0:172; CHECK-NEXT:    fcmp.d %s0, %s0, %s1173; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s0174; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1175; CHECK-NEXT:    b.l.t (, %s10)176  %5 = fcmp fast oeq double %0, %1177  %6 = select i1 %5, i1 %2, i1 %3178  ret i1 %6179}180 181; Function Attrs: norecurse nounwind readnone182define zeroext i1 @select_cc_quad_i1(fp128 %0, fp128 %1, i1 zeroext %2, i1 zeroext %3) {183; CHECK-LABEL: select_cc_quad_i1:184; CHECK:       # %bb.0:185; CHECK-NEXT:    fcmp.q %s0, %s0, %s2186; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s0187; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1188; CHECK-NEXT:    b.l.t (, %s10)189  %5 = fcmp fast oeq fp128 %0, %1190  %6 = select i1 %5, i1 %2, i1 %3191  ret i1 %6192}193 194; Function Attrs: norecurse nounwind readnone195define signext i8 @select_cc_i1_i8(i1 zeroext %0, i1 zeroext %1, i8 signext %2, i8 signext %3) {196; CHECK-LABEL: select_cc_i1_i8:197; CHECK:       # %bb.0:198; CHECK-NEXT:    xor %s0, %s0, %s1199; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s0200; CHECK-NEXT:    adds.w.sx %s0, %s2, (0)1201; CHECK-NEXT:    b.l.t (, %s10)202  %5 = xor i1 %0, %1203  %6 = select i1 %5, i8 %3, i8 %2204  ret i8 %6205}206 207; Function Attrs: norecurse nounwind readnone208define signext i8 @select_cc_i8_i8(i8 signext %0, i8 signext %1, i8 signext %2, i8 signext %3) {209; CHECK-LABEL: select_cc_i8_i8:210; CHECK:       # %bb.0:211; CHECK-NEXT:    cmpu.w %s0, %s0, %s1212; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0213; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1214; CHECK-NEXT:    b.l.t (, %s10)215  %5 = icmp eq i8 %0, %1216  %6 = select i1 %5, i8 %2, i8 %3217  ret i8 %6218}219 220; Function Attrs: norecurse nounwind readnone221define signext i8 @select_cc_u8_i8(i8 zeroext %0, i8 zeroext %1, i8 signext %2, i8 signext %3) {222; CHECK-LABEL: select_cc_u8_i8:223; CHECK:       # %bb.0:224; CHECK-NEXT:    cmpu.w %s0, %s0, %s1225; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0226; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1227; CHECK-NEXT:    b.l.t (, %s10)228  %5 = icmp eq i8 %0, %1229  %6 = select i1 %5, i8 %2, i8 %3230  ret i8 %6231}232 233; Function Attrs: norecurse nounwind readnone234define signext i8 @select_cc_i16_i8(i16 signext %0, i16 signext %1, i8 signext %2, i8 signext %3) {235; CHECK-LABEL: select_cc_i16_i8:236; CHECK:       # %bb.0:237; CHECK-NEXT:    cmpu.w %s0, %s0, %s1238; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0239; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1240; CHECK-NEXT:    b.l.t (, %s10)241  %5 = icmp eq i16 %0, %1242  %6 = select i1 %5, i8 %2, i8 %3243  ret i8 %6244}245 246; Function Attrs: norecurse nounwind readnone247define signext i8 @select_cc_u16_i8(i16 zeroext %0, i16 zeroext %1, i8 signext %2, i8 signext %3) {248; CHECK-LABEL: select_cc_u16_i8:249; CHECK:       # %bb.0:250; CHECK-NEXT:    cmpu.w %s0, %s0, %s1251; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0252; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1253; CHECK-NEXT:    b.l.t (, %s10)254  %5 = icmp eq i16 %0, %1255  %6 = select i1 %5, i8 %2, i8 %3256  ret i8 %6257}258 259; Function Attrs: norecurse nounwind readnone260define signext i8 @select_cc_i32_i8(i32 signext %0, i32 signext %1, i8 signext %2, i8 signext %3) {261; CHECK-LABEL: select_cc_i32_i8:262; CHECK:       # %bb.0:263; CHECK-NEXT:    cmpu.w %s0, %s0, %s1264; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0265; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1266; CHECK-NEXT:    b.l.t (, %s10)267  %5 = icmp eq i32 %0, %1268  %6 = select i1 %5, i8 %2, i8 %3269  ret i8 %6270}271 272; Function Attrs: norecurse nounwind readnone273define signext i8 @select_cc_u32_i8(i32 zeroext %0, i32 zeroext %1, i8 signext %2, i8 signext %3) {274; CHECK-LABEL: select_cc_u32_i8:275; CHECK:       # %bb.0:276; CHECK-NEXT:    cmpu.w %s0, %s0, %s1277; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0278; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1279; CHECK-NEXT:    b.l.t (, %s10)280  %5 = icmp eq i32 %0, %1281  %6 = select i1 %5, i8 %2, i8 %3282  ret i8 %6283}284 285; Function Attrs: norecurse nounwind readnone286define signext i8 @select_cc_i64_i8(i64 %0, i64 %1, i8 signext %2, i8 signext %3) {287; CHECK-LABEL: select_cc_i64_i8:288; CHECK:       # %bb.0:289; CHECK-NEXT:    cmpu.l %s0, %s0, %s1290; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0291; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1292; CHECK-NEXT:    b.l.t (, %s10)293  %5 = icmp eq i64 %0, %1294  %6 = select i1 %5, i8 %2, i8 %3295  ret i8 %6296}297 298; Function Attrs: norecurse nounwind readnone299define signext i8 @select_cc_u64_i8(i64 %0, i64 %1, i8 signext %2, i8 signext %3) {300; CHECK-LABEL: select_cc_u64_i8:301; CHECK:       # %bb.0:302; CHECK-NEXT:    cmpu.l %s0, %s0, %s1303; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0304; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1305; CHECK-NEXT:    b.l.t (, %s10)306  %5 = icmp eq i64 %0, %1307  %6 = select i1 %5, i8 %2, i8 %3308  ret i8 %6309}310 311; Function Attrs: norecurse nounwind readnone312define signext i8 @select_cc_i128_i8(i128 %0, i128 %1, i8 signext %2, i8 signext %3) {313; CHECK-LABEL: select_cc_i128_i8:314; CHECK:       # %bb.0:315; CHECK-NEXT:    xor %s1, %s1, %s3316; CHECK-NEXT:    xor %s0, %s0, %s2317; CHECK-NEXT:    or %s0, %s0, %s1318; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0319; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1320; CHECK-NEXT:    b.l.t (, %s10)321  %5 = icmp eq i128 %0, %1322  %6 = select i1 %5, i8 %2, i8 %3323  ret i8 %6324}325 326; Function Attrs: norecurse nounwind readnone327define signext i8 @select_cc_u128_i8(i128 %0, i128 %1, i8 signext %2, i8 signext %3) {328; CHECK-LABEL: select_cc_u128_i8:329; CHECK:       # %bb.0:330; CHECK-NEXT:    xor %s1, %s1, %s3331; CHECK-NEXT:    xor %s0, %s0, %s2332; CHECK-NEXT:    or %s0, %s0, %s1333; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0334; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1335; CHECK-NEXT:    b.l.t (, %s10)336  %5 = icmp eq i128 %0, %1337  %6 = select i1 %5, i8 %2, i8 %3338  ret i8 %6339}340 341; Function Attrs: norecurse nounwind readnone342define signext i8 @select_cc_float_i8(float %0, float %1, i8 signext %2, i8 signext %3) {343; CHECK-LABEL: select_cc_float_i8:344; CHECK:       # %bb.0:345; CHECK-NEXT:    fcmp.s %s0, %s0, %s1346; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0347; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1348; CHECK-NEXT:    b.l.t (, %s10)349  %5 = fcmp fast oeq float %0, %1350  %6 = select i1 %5, i8 %2, i8 %3351  ret i8 %6352}353 354; Function Attrs: norecurse nounwind readnone355define signext i8 @select_cc_double_i8(double %0, double %1, i8 signext %2, i8 signext %3) {356; CHECK-LABEL: select_cc_double_i8:357; CHECK:       # %bb.0:358; CHECK-NEXT:    fcmp.d %s0, %s0, %s1359; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s0360; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1361; CHECK-NEXT:    b.l.t (, %s10)362  %5 = fcmp fast oeq double %0, %1363  %6 = select i1 %5, i8 %2, i8 %3364  ret i8 %6365}366 367; Function Attrs: norecurse nounwind readnone368define signext i8 @select_cc_quad_i8(fp128 %0, fp128 %1, i8 signext %2, i8 signext %3) {369; CHECK-LABEL: select_cc_quad_i8:370; CHECK:       # %bb.0:371; CHECK-NEXT:    fcmp.q %s0, %s0, %s2372; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s0373; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1374; CHECK-NEXT:    b.l.t (, %s10)375  %5 = fcmp fast oeq fp128 %0, %1376  %6 = select i1 %5, i8 %2, i8 %3377  ret i8 %6378}379 380; Function Attrs: norecurse nounwind readnone381define zeroext i8 @select_cc_i1_u8(i1 zeroext %0, i1 zeroext %1, i8 zeroext %2, i8 zeroext %3) {382; CHECK-LABEL: select_cc_i1_u8:383; CHECK:       # %bb.0:384; CHECK-NEXT:    xor %s0, %s0, %s1385; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s0386; CHECK-NEXT:    adds.w.zx %s0, %s2, (0)1387; CHECK-NEXT:    b.l.t (, %s10)388  %5 = xor i1 %0, %1389  %6 = select i1 %5, i8 %3, i8 %2390  ret i8 %6391}392 393; Function Attrs: norecurse nounwind readnone394define zeroext i8 @select_cc_i8_u8(i8 signext %0, i8 signext %1, i8 zeroext %2, i8 zeroext %3) {395; CHECK-LABEL: select_cc_i8_u8:396; CHECK:       # %bb.0:397; CHECK-NEXT:    cmpu.w %s0, %s0, %s1398; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0399; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1400; CHECK-NEXT:    b.l.t (, %s10)401  %5 = icmp eq i8 %0, %1402  %6 = select i1 %5, i8 %2, i8 %3403  ret i8 %6404}405 406; Function Attrs: norecurse nounwind readnone407define zeroext i8 @select_cc_u8_u8(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3) {408; CHECK-LABEL: select_cc_u8_u8:409; CHECK:       # %bb.0:410; CHECK-NEXT:    cmpu.w %s0, %s0, %s1411; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0412; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1413; CHECK-NEXT:    b.l.t (, %s10)414  %5 = icmp eq i8 %0, %1415  %6 = select i1 %5, i8 %2, i8 %3416  ret i8 %6417}418 419; Function Attrs: norecurse nounwind readnone420define zeroext i8 @select_cc_i16_u8(i16 signext %0, i16 signext %1, i8 zeroext %2, i8 zeroext %3) {421; CHECK-LABEL: select_cc_i16_u8:422; CHECK:       # %bb.0:423; CHECK-NEXT:    cmpu.w %s0, %s0, %s1424; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0425; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1426; CHECK-NEXT:    b.l.t (, %s10)427  %5 = icmp eq i16 %0, %1428  %6 = select i1 %5, i8 %2, i8 %3429  ret i8 %6430}431 432; Function Attrs: norecurse nounwind readnone433define zeroext i8 @select_cc_u16_u8(i16 zeroext %0, i16 zeroext %1, i8 zeroext %2, i8 zeroext %3) {434; CHECK-LABEL: select_cc_u16_u8:435; CHECK:       # %bb.0:436; CHECK-NEXT:    cmpu.w %s0, %s0, %s1437; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0438; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1439; CHECK-NEXT:    b.l.t (, %s10)440  %5 = icmp eq i16 %0, %1441  %6 = select i1 %5, i8 %2, i8 %3442  ret i8 %6443}444 445; Function Attrs: norecurse nounwind readnone446define zeroext i8 @select_cc_i32_u8(i32 signext %0, i32 signext %1, i8 zeroext %2, i8 zeroext %3) {447; CHECK-LABEL: select_cc_i32_u8:448; CHECK:       # %bb.0:449; CHECK-NEXT:    cmpu.w %s0, %s0, %s1450; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0451; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1452; CHECK-NEXT:    b.l.t (, %s10)453  %5 = icmp eq i32 %0, %1454  %6 = select i1 %5, i8 %2, i8 %3455  ret i8 %6456}457 458; Function Attrs: norecurse nounwind readnone459define zeroext i8 @select_cc_u32_u8(i32 zeroext %0, i32 zeroext %1, i8 zeroext %2, i8 zeroext %3) {460; CHECK-LABEL: select_cc_u32_u8:461; CHECK:       # %bb.0:462; CHECK-NEXT:    cmpu.w %s0, %s0, %s1463; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0464; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1465; CHECK-NEXT:    b.l.t (, %s10)466  %5 = icmp eq i32 %0, %1467  %6 = select i1 %5, i8 %2, i8 %3468  ret i8 %6469}470 471; Function Attrs: norecurse nounwind readnone472define zeroext i8 @select_cc_i64_u8(i64 %0, i64 %1, i8 zeroext %2, i8 zeroext %3) {473; CHECK-LABEL: select_cc_i64_u8:474; CHECK:       # %bb.0:475; CHECK-NEXT:    cmpu.l %s0, %s0, %s1476; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0477; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1478; CHECK-NEXT:    b.l.t (, %s10)479  %5 = icmp eq i64 %0, %1480  %6 = select i1 %5, i8 %2, i8 %3481  ret i8 %6482}483 484; Function Attrs: norecurse nounwind readnone485define zeroext i8 @select_cc_u64_u8(i64 %0, i64 %1, i8 zeroext %2, i8 zeroext %3) {486; CHECK-LABEL: select_cc_u64_u8:487; CHECK:       # %bb.0:488; CHECK-NEXT:    cmpu.l %s0, %s0, %s1489; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0490; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1491; CHECK-NEXT:    b.l.t (, %s10)492  %5 = icmp eq i64 %0, %1493  %6 = select i1 %5, i8 %2, i8 %3494  ret i8 %6495}496 497; Function Attrs: norecurse nounwind readnone498define zeroext i8 @select_cc_i128_u8(i128 %0, i128 %1, i8 zeroext %2, i8 zeroext %3) {499; CHECK-LABEL: select_cc_i128_u8:500; CHECK:       # %bb.0:501; CHECK-NEXT:    xor %s1, %s1, %s3502; CHECK-NEXT:    xor %s0, %s0, %s2503; CHECK-NEXT:    or %s0, %s0, %s1504; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0505; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1506; CHECK-NEXT:    b.l.t (, %s10)507  %5 = icmp eq i128 %0, %1508  %6 = select i1 %5, i8 %2, i8 %3509  ret i8 %6510}511 512; Function Attrs: norecurse nounwind readnone513define zeroext i8 @select_cc_u128_u8(i128 %0, i128 %1, i8 zeroext %2, i8 zeroext %3) {514; CHECK-LABEL: select_cc_u128_u8:515; CHECK:       # %bb.0:516; CHECK-NEXT:    xor %s1, %s1, %s3517; CHECK-NEXT:    xor %s0, %s0, %s2518; CHECK-NEXT:    or %s0, %s0, %s1519; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0520; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1521; CHECK-NEXT:    b.l.t (, %s10)522  %5 = icmp eq i128 %0, %1523  %6 = select i1 %5, i8 %2, i8 %3524  ret i8 %6525}526 527; Function Attrs: norecurse nounwind readnone528define zeroext i8 @select_cc_float_u8(float %0, float %1, i8 zeroext %2, i8 zeroext %3) {529; CHECK-LABEL: select_cc_float_u8:530; CHECK:       # %bb.0:531; CHECK-NEXT:    fcmp.s %s0, %s0, %s1532; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0533; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1534; CHECK-NEXT:    b.l.t (, %s10)535  %5 = fcmp fast oeq float %0, %1536  %6 = select i1 %5, i8 %2, i8 %3537  ret i8 %6538}539 540; Function Attrs: norecurse nounwind readnone541define zeroext i8 @select_cc_double_u8(double %0, double %1, i8 zeroext %2, i8 zeroext %3) {542; CHECK-LABEL: select_cc_double_u8:543; CHECK:       # %bb.0:544; CHECK-NEXT:    fcmp.d %s0, %s0, %s1545; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s0546; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1547; CHECK-NEXT:    b.l.t (, %s10)548  %5 = fcmp fast oeq double %0, %1549  %6 = select i1 %5, i8 %2, i8 %3550  ret i8 %6551}552 553; Function Attrs: norecurse nounwind readnone554define zeroext i8 @select_cc_quad_u8(fp128 %0, fp128 %1, i8 zeroext %2, i8 zeroext %3) {555; CHECK-LABEL: select_cc_quad_u8:556; CHECK:       # %bb.0:557; CHECK-NEXT:    fcmp.q %s0, %s0, %s2558; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s0559; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1560; CHECK-NEXT:    b.l.t (, %s10)561  %5 = fcmp fast oeq fp128 %0, %1562  %6 = select i1 %5, i8 %2, i8 %3563  ret i8 %6564}565 566; Function Attrs: norecurse nounwind readnone567define signext i16 @select_cc_i1_i16(i1 zeroext %0, i1 zeroext %1, i16 signext %2, i16 signext %3) {568; CHECK-LABEL: select_cc_i1_i16:569; CHECK:       # %bb.0:570; CHECK-NEXT:    xor %s0, %s0, %s1571; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s0572; CHECK-NEXT:    adds.w.sx %s0, %s2, (0)1573; CHECK-NEXT:    b.l.t (, %s10)574  %5 = xor i1 %0, %1575  %6 = select i1 %5, i16 %3, i16 %2576  ret i16 %6577}578 579; Function Attrs: norecurse nounwind readnone580define signext i16 @select_cc_i8_i16(i8 signext %0, i8 signext %1, i16 signext %2, i16 signext %3) {581; CHECK-LABEL: select_cc_i8_i16:582; CHECK:       # %bb.0:583; CHECK-NEXT:    cmpu.w %s0, %s0, %s1584; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0585; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1586; CHECK-NEXT:    b.l.t (, %s10)587  %5 = icmp eq i8 %0, %1588  %6 = select i1 %5, i16 %2, i16 %3589  ret i16 %6590}591 592; Function Attrs: norecurse nounwind readnone593define signext i16 @select_cc_u8_i16(i8 zeroext %0, i8 zeroext %1, i16 signext %2, i16 signext %3) {594; CHECK-LABEL: select_cc_u8_i16:595; CHECK:       # %bb.0:596; CHECK-NEXT:    cmpu.w %s0, %s0, %s1597; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0598; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1599; CHECK-NEXT:    b.l.t (, %s10)600  %5 = icmp eq i8 %0, %1601  %6 = select i1 %5, i16 %2, i16 %3602  ret i16 %6603}604 605; Function Attrs: norecurse nounwind readnone606define signext i16 @select_cc_i16_i16(i16 signext %0, i16 signext %1, i16 signext %2, i16 signext %3) {607; CHECK-LABEL: select_cc_i16_i16:608; CHECK:       # %bb.0:609; CHECK-NEXT:    cmpu.w %s0, %s0, %s1610; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0611; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1612; CHECK-NEXT:    b.l.t (, %s10)613  %5 = icmp eq i16 %0, %1614  %6 = select i1 %5, i16 %2, i16 %3615  ret i16 %6616}617 618; Function Attrs: norecurse nounwind readnone619define signext i16 @select_cc_u16_i16(i16 zeroext %0, i16 zeroext %1, i16 signext %2, i16 signext %3) {620; CHECK-LABEL: select_cc_u16_i16:621; CHECK:       # %bb.0:622; CHECK-NEXT:    cmpu.w %s0, %s0, %s1623; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0624; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1625; CHECK-NEXT:    b.l.t (, %s10)626  %5 = icmp eq i16 %0, %1627  %6 = select i1 %5, i16 %2, i16 %3628  ret i16 %6629}630 631; Function Attrs: norecurse nounwind readnone632define signext i16 @select_cc_i32_i16(i32 signext %0, i32 signext %1, i16 signext %2, i16 signext %3) {633; CHECK-LABEL: select_cc_i32_i16:634; CHECK:       # %bb.0:635; CHECK-NEXT:    cmpu.w %s0, %s0, %s1636; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0637; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1638; CHECK-NEXT:    b.l.t (, %s10)639  %5 = icmp eq i32 %0, %1640  %6 = select i1 %5, i16 %2, i16 %3641  ret i16 %6642}643 644; Function Attrs: norecurse nounwind readnone645define signext i16 @select_cc_u32_i16(i32 zeroext %0, i32 zeroext %1, i16 signext %2, i16 signext %3) {646; CHECK-LABEL: select_cc_u32_i16:647; CHECK:       # %bb.0:648; CHECK-NEXT:    cmpu.w %s0, %s0, %s1649; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0650; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1651; CHECK-NEXT:    b.l.t (, %s10)652  %5 = icmp eq i32 %0, %1653  %6 = select i1 %5, i16 %2, i16 %3654  ret i16 %6655}656 657; Function Attrs: norecurse nounwind readnone658define signext i16 @select_cc_i64_i16(i64 %0, i64 %1, i16 signext %2, i16 signext %3) {659; CHECK-LABEL: select_cc_i64_i16:660; CHECK:       # %bb.0:661; CHECK-NEXT:    cmpu.l %s0, %s0, %s1662; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0663; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1664; CHECK-NEXT:    b.l.t (, %s10)665  %5 = icmp eq i64 %0, %1666  %6 = select i1 %5, i16 %2, i16 %3667  ret i16 %6668}669 670; Function Attrs: norecurse nounwind readnone671define signext i16 @select_cc_u64_i16(i64 %0, i64 %1, i16 signext %2, i16 signext %3) {672; CHECK-LABEL: select_cc_u64_i16:673; CHECK:       # %bb.0:674; CHECK-NEXT:    cmpu.l %s0, %s0, %s1675; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0676; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1677; CHECK-NEXT:    b.l.t (, %s10)678  %5 = icmp eq i64 %0, %1679  %6 = select i1 %5, i16 %2, i16 %3680  ret i16 %6681}682 683; Function Attrs: norecurse nounwind readnone684define signext i16 @select_cc_i128_i16(i128 %0, i128 %1, i16 signext %2, i16 signext %3) {685; CHECK-LABEL: select_cc_i128_i16:686; CHECK:       # %bb.0:687; CHECK-NEXT:    xor %s1, %s1, %s3688; CHECK-NEXT:    xor %s0, %s0, %s2689; CHECK-NEXT:    or %s0, %s0, %s1690; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0691; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1692; CHECK-NEXT:    b.l.t (, %s10)693  %5 = icmp eq i128 %0, %1694  %6 = select i1 %5, i16 %2, i16 %3695  ret i16 %6696}697 698; Function Attrs: norecurse nounwind readnone699define signext i16 @select_cc_u128_i16(i128 %0, i128 %1, i16 signext %2, i16 signext %3) {700; CHECK-LABEL: select_cc_u128_i16:701; CHECK:       # %bb.0:702; CHECK-NEXT:    xor %s1, %s1, %s3703; CHECK-NEXT:    xor %s0, %s0, %s2704; CHECK-NEXT:    or %s0, %s0, %s1705; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0706; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1707; CHECK-NEXT:    b.l.t (, %s10)708  %5 = icmp eq i128 %0, %1709  %6 = select i1 %5, i16 %2, i16 %3710  ret i16 %6711}712 713; Function Attrs: norecurse nounwind readnone714define signext i16 @select_cc_float_i16(float %0, float %1, i16 signext %2, i16 signext %3) {715; CHECK-LABEL: select_cc_float_i16:716; CHECK:       # %bb.0:717; CHECK-NEXT:    fcmp.s %s0, %s0, %s1718; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0719; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1720; CHECK-NEXT:    b.l.t (, %s10)721  %5 = fcmp fast oeq float %0, %1722  %6 = select i1 %5, i16 %2, i16 %3723  ret i16 %6724}725 726; Function Attrs: norecurse nounwind readnone727define signext i16 @select_cc_double_i16(double %0, double %1, i16 signext %2, i16 signext %3) {728; CHECK-LABEL: select_cc_double_i16:729; CHECK:       # %bb.0:730; CHECK-NEXT:    fcmp.d %s0, %s0, %s1731; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s0732; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1733; CHECK-NEXT:    b.l.t (, %s10)734  %5 = fcmp fast oeq double %0, %1735  %6 = select i1 %5, i16 %2, i16 %3736  ret i16 %6737}738 739; Function Attrs: norecurse nounwind readnone740define signext i16 @select_cc_quad_i16(fp128 %0, fp128 %1, i16 signext %2, i16 signext %3) {741; CHECK-LABEL: select_cc_quad_i16:742; CHECK:       # %bb.0:743; CHECK-NEXT:    fcmp.q %s0, %s0, %s2744; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s0745; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)1746; CHECK-NEXT:    b.l.t (, %s10)747  %5 = fcmp fast oeq fp128 %0, %1748  %6 = select i1 %5, i16 %2, i16 %3749  ret i16 %6750}751 752; Function Attrs: norecurse nounwind readnone753define zeroext i16 @select_cc_i1_u16(i1 zeroext %0, i1 zeroext %1, i16 zeroext %2, i16 zeroext %3) {754; CHECK-LABEL: select_cc_i1_u16:755; CHECK:       # %bb.0:756; CHECK-NEXT:    xor %s0, %s0, %s1757; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s0758; CHECK-NEXT:    adds.w.zx %s0, %s2, (0)1759; CHECK-NEXT:    b.l.t (, %s10)760  %5 = xor i1 %0, %1761  %6 = select i1 %5, i16 %3, i16 %2762  ret i16 %6763}764 765; Function Attrs: norecurse nounwind readnone766define zeroext i16 @select_cc_i8_u16(i8 signext %0, i8 signext %1, i16 zeroext %2, i16 zeroext %3) {767; CHECK-LABEL: select_cc_i8_u16:768; CHECK:       # %bb.0:769; CHECK-NEXT:    cmpu.w %s0, %s0, %s1770; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0771; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1772; CHECK-NEXT:    b.l.t (, %s10)773  %5 = icmp eq i8 %0, %1774  %6 = select i1 %5, i16 %2, i16 %3775  ret i16 %6776}777 778; Function Attrs: norecurse nounwind readnone779define zeroext i16 @select_cc_u8_u16(i8 zeroext %0, i8 zeroext %1, i16 zeroext %2, i16 zeroext %3) {780; CHECK-LABEL: select_cc_u8_u16:781; CHECK:       # %bb.0:782; CHECK-NEXT:    cmpu.w %s0, %s0, %s1783; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0784; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1785; CHECK-NEXT:    b.l.t (, %s10)786  %5 = icmp eq i8 %0, %1787  %6 = select i1 %5, i16 %2, i16 %3788  ret i16 %6789}790 791; Function Attrs: norecurse nounwind readnone792define zeroext i16 @select_cc_i16_u16(i16 signext %0, i16 signext %1, i16 zeroext %2, i16 zeroext %3) {793; CHECK-LABEL: select_cc_i16_u16:794; CHECK:       # %bb.0:795; CHECK-NEXT:    cmpu.w %s0, %s0, %s1796; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0797; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1798; CHECK-NEXT:    b.l.t (, %s10)799  %5 = icmp eq i16 %0, %1800  %6 = select i1 %5, i16 %2, i16 %3801  ret i16 %6802}803 804; Function Attrs: norecurse nounwind readnone805define zeroext i16 @select_cc_u16_u16(i16 zeroext %0, i16 zeroext %1, i16 zeroext %2, i16 zeroext %3) {806; CHECK-LABEL: select_cc_u16_u16:807; CHECK:       # %bb.0:808; CHECK-NEXT:    cmpu.w %s0, %s0, %s1809; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0810; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1811; CHECK-NEXT:    b.l.t (, %s10)812  %5 = icmp eq i16 %0, %1813  %6 = select i1 %5, i16 %2, i16 %3814  ret i16 %6815}816 817; Function Attrs: norecurse nounwind readnone818define zeroext i16 @select_cc_i32_u16(i32 signext %0, i32 signext %1, i16 zeroext %2, i16 zeroext %3) {819; CHECK-LABEL: select_cc_i32_u16:820; CHECK:       # %bb.0:821; CHECK-NEXT:    cmpu.w %s0, %s0, %s1822; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0823; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1824; CHECK-NEXT:    b.l.t (, %s10)825  %5 = icmp eq i32 %0, %1826  %6 = select i1 %5, i16 %2, i16 %3827  ret i16 %6828}829 830; Function Attrs: norecurse nounwind readnone831define zeroext i16 @select_cc_u32_u16(i32 zeroext %0, i32 zeroext %1, i16 zeroext %2, i16 zeroext %3) {832; CHECK-LABEL: select_cc_u32_u16:833; CHECK:       # %bb.0:834; CHECK-NEXT:    cmpu.w %s0, %s0, %s1835; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0836; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1837; CHECK-NEXT:    b.l.t (, %s10)838  %5 = icmp eq i32 %0, %1839  %6 = select i1 %5, i16 %2, i16 %3840  ret i16 %6841}842 843; Function Attrs: norecurse nounwind readnone844define zeroext i16 @select_cc_i64_u16(i64 %0, i64 %1, i16 zeroext %2, i16 zeroext %3) {845; CHECK-LABEL: select_cc_i64_u16:846; CHECK:       # %bb.0:847; CHECK-NEXT:    cmpu.l %s0, %s0, %s1848; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0849; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1850; CHECK-NEXT:    b.l.t (, %s10)851  %5 = icmp eq i64 %0, %1852  %6 = select i1 %5, i16 %2, i16 %3853  ret i16 %6854}855 856; Function Attrs: norecurse nounwind readnone857define zeroext i16 @select_cc_u64_u16(i64 %0, i64 %1, i16 zeroext %2, i16 zeroext %3) {858; CHECK-LABEL: select_cc_u64_u16:859; CHECK:       # %bb.0:860; CHECK-NEXT:    cmpu.l %s0, %s0, %s1861; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s0862; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1863; CHECK-NEXT:    b.l.t (, %s10)864  %5 = icmp eq i64 %0, %1865  %6 = select i1 %5, i16 %2, i16 %3866  ret i16 %6867}868 869; Function Attrs: norecurse nounwind readnone870define zeroext i16 @select_cc_i128_u16(i128 %0, i128 %1, i16 zeroext %2, i16 zeroext %3) {871; CHECK-LABEL: select_cc_i128_u16:872; CHECK:       # %bb.0:873; CHECK-NEXT:    xor %s1, %s1, %s3874; CHECK-NEXT:    xor %s0, %s0, %s2875; CHECK-NEXT:    or %s0, %s0, %s1876; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0877; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1878; CHECK-NEXT:    b.l.t (, %s10)879  %5 = icmp eq i128 %0, %1880  %6 = select i1 %5, i16 %2, i16 %3881  ret i16 %6882}883 884; Function Attrs: norecurse nounwind readnone885define zeroext i16 @select_cc_u128_u16(i128 %0, i128 %1, i16 zeroext %2, i16 zeroext %3) {886; CHECK-LABEL: select_cc_u128_u16:887; CHECK:       # %bb.0:888; CHECK-NEXT:    xor %s1, %s1, %s3889; CHECK-NEXT:    xor %s0, %s0, %s2890; CHECK-NEXT:    or %s0, %s0, %s1891; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s0892; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1893; CHECK-NEXT:    b.l.t (, %s10)894  %5 = icmp eq i128 %0, %1895  %6 = select i1 %5, i16 %2, i16 %3896  ret i16 %6897}898 899; Function Attrs: norecurse nounwind readnone900define zeroext i16 @select_cc_float_u16(float %0, float %1, i16 zeroext %2, i16 zeroext %3) {901; CHECK-LABEL: select_cc_float_u16:902; CHECK:       # %bb.0:903; CHECK-NEXT:    fcmp.s %s0, %s0, %s1904; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s0905; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1906; CHECK-NEXT:    b.l.t (, %s10)907  %5 = fcmp fast oeq float %0, %1908  %6 = select i1 %5, i16 %2, i16 %3909  ret i16 %6910}911 912; Function Attrs: norecurse nounwind readnone913define zeroext i16 @select_cc_double_u16(double %0, double %1, i16 zeroext %2, i16 zeroext %3) {914; CHECK-LABEL: select_cc_double_u16:915; CHECK:       # %bb.0:916; CHECK-NEXT:    fcmp.d %s0, %s0, %s1917; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s0918; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)1919; CHECK-NEXT:    b.l.t (, %s10)920  %5 = fcmp fast oeq double %0, %1921  %6 = select i1 %5, i16 %2, i16 %3922  ret i16 %6923}924 925; Function Attrs: norecurse nounwind readnone926define zeroext i16 @select_cc_quad_u16(fp128 %0, fp128 %1, i16 zeroext %2, i16 zeroext %3) {927; CHECK-LABEL: select_cc_quad_u16:928; CHECK:       # %bb.0:929; CHECK-NEXT:    fcmp.q %s0, %s0, %s2930; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s0931; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)1932; CHECK-NEXT:    b.l.t (, %s10)933  %5 = fcmp fast oeq fp128 %0, %1934  %6 = select i1 %5, i16 %2, i16 %3935  ret i16 %6936}937 938; Function Attrs: norecurse nounwind readnone939define signext i32 @select_cc_i1_i32(i1 zeroext %0, i1 zeroext %1, i32 signext %2, i32 signext %3) {940; CHECK-LABEL: select_cc_i1_i32:941; CHECK:       # %bb.0:942; CHECK-NEXT:    xor %s0, %s0, %s1943; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s0944; CHECK-NEXT:    adds.w.sx %s0, %s2, (0)1945; CHECK-NEXT:    b.l.t (, %s10)946  %5 = xor i1 %0, %1947  %6 = select i1 %5, i32 %3, i32 %2948  ret i32 %6949}950 951; Function Attrs: norecurse nounwind readnone952define signext i32 @select_cc_i8_i32(i8 signext %0, i8 signext %1, i32 signext %2, i32 signext %3) {953; CHECK-LABEL: select_cc_i8_i32:954; CHECK:       # %bb.0:955; CHECK-NEXT:    cmpu.w %s0, %s0, %s1956; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0957; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1958; CHECK-NEXT:    b.l.t (, %s10)959  %5 = icmp eq i8 %0, %1960  %6 = select i1 %5, i32 %2, i32 %3961  ret i32 %6962}963 964; Function Attrs: norecurse nounwind readnone965define signext i32 @select_cc_u8_i32(i8 zeroext %0, i8 zeroext %1, i32 signext %2, i32 signext %3) {966; CHECK-LABEL: select_cc_u8_i32:967; CHECK:       # %bb.0:968; CHECK-NEXT:    cmpu.w %s0, %s0, %s1969; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0970; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1971; CHECK-NEXT:    b.l.t (, %s10)972  %5 = icmp eq i8 %0, %1973  %6 = select i1 %5, i32 %2, i32 %3974  ret i32 %6975}976 977; Function Attrs: norecurse nounwind readnone978define signext i32 @select_cc_i16_i32(i16 signext %0, i16 signext %1, i32 signext %2, i32 signext %3) {979; CHECK-LABEL: select_cc_i16_i32:980; CHECK:       # %bb.0:981; CHECK-NEXT:    cmpu.w %s0, %s0, %s1982; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0983; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1984; CHECK-NEXT:    b.l.t (, %s10)985  %5 = icmp eq i16 %0, %1986  %6 = select i1 %5, i32 %2, i32 %3987  ret i32 %6988}989 990; Function Attrs: norecurse nounwind readnone991define signext i32 @select_cc_u16_i32(i16 zeroext %0, i16 zeroext %1, i32 signext %2, i32 signext %3) {992; CHECK-LABEL: select_cc_u16_i32:993; CHECK:       # %bb.0:994; CHECK-NEXT:    cmpu.w %s0, %s0, %s1995; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s0996; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)1997; CHECK-NEXT:    b.l.t (, %s10)998  %5 = icmp eq i16 %0, %1999  %6 = select i1 %5, i32 %2, i32 %31000  ret i32 %61001}1002 1003; Function Attrs: norecurse nounwind readnone1004define signext i32 @select_cc_i32_i32(i32 signext %0, i32 signext %1, i32 signext %2, i32 signext %3) {1005; CHECK-LABEL: select_cc_i32_i32:1006; CHECK:       # %bb.0:1007; CHECK-NEXT:    cmpu.w %s0, %s0, %s11008; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01009; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11010; CHECK-NEXT:    b.l.t (, %s10)1011  %5 = icmp eq i32 %0, %11012  %6 = select i1 %5, i32 %2, i32 %31013  ret i32 %61014}1015 1016; Function Attrs: norecurse nounwind readnone1017define signext i32 @select_cc_u32_i32(i32 zeroext %0, i32 zeroext %1, i32 signext %2, i32 signext %3) {1018; CHECK-LABEL: select_cc_u32_i32:1019; CHECK:       # %bb.0:1020; CHECK-NEXT:    cmpu.w %s0, %s0, %s11021; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01022; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11023; CHECK-NEXT:    b.l.t (, %s10)1024  %5 = icmp eq i32 %0, %11025  %6 = select i1 %5, i32 %2, i32 %31026  ret i32 %61027}1028 1029; Function Attrs: norecurse nounwind readnone1030define signext i32 @select_cc_i64_i32(i64 %0, i64 %1, i32 signext %2, i32 signext %3) {1031; CHECK-LABEL: select_cc_i64_i32:1032; CHECK:       # %bb.0:1033; CHECK-NEXT:    cmpu.l %s0, %s0, %s11034; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01035; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11036; CHECK-NEXT:    b.l.t (, %s10)1037  %5 = icmp eq i64 %0, %11038  %6 = select i1 %5, i32 %2, i32 %31039  ret i32 %61040}1041 1042; Function Attrs: norecurse nounwind readnone1043define signext i32 @select_cc_u64_i32(i64 %0, i64 %1, i32 signext %2, i32 signext %3) {1044; CHECK-LABEL: select_cc_u64_i32:1045; CHECK:       # %bb.0:1046; CHECK-NEXT:    cmpu.l %s0, %s0, %s11047; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01048; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11049; CHECK-NEXT:    b.l.t (, %s10)1050  %5 = icmp eq i64 %0, %11051  %6 = select i1 %5, i32 %2, i32 %31052  ret i32 %61053}1054 1055; Function Attrs: norecurse nounwind readnone1056define signext i32 @select_cc_i128_i32(i128 %0, i128 %1, i32 signext %2, i32 signext %3) {1057; CHECK-LABEL: select_cc_i128_i32:1058; CHECK:       # %bb.0:1059; CHECK-NEXT:    xor %s1, %s1, %s31060; CHECK-NEXT:    xor %s0, %s0, %s21061; CHECK-NEXT:    or %s0, %s0, %s11062; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01063; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)11064; CHECK-NEXT:    b.l.t (, %s10)1065  %5 = icmp eq i128 %0, %11066  %6 = select i1 %5, i32 %2, i32 %31067  ret i32 %61068}1069 1070; Function Attrs: norecurse nounwind readnone1071define signext i32 @select_cc_u128_i32(i128 %0, i128 %1, i32 signext %2, i32 signext %3) {1072; CHECK-LABEL: select_cc_u128_i32:1073; CHECK:       # %bb.0:1074; CHECK-NEXT:    xor %s1, %s1, %s31075; CHECK-NEXT:    xor %s0, %s0, %s21076; CHECK-NEXT:    or %s0, %s0, %s11077; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01078; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)11079; CHECK-NEXT:    b.l.t (, %s10)1080  %5 = icmp eq i128 %0, %11081  %6 = select i1 %5, i32 %2, i32 %31082  ret i32 %61083}1084 1085; Function Attrs: norecurse nounwind readnone1086define signext i32 @select_cc_float_i32(float %0, float %1, i32 signext %2, i32 signext %3) {1087; CHECK-LABEL: select_cc_float_i32:1088; CHECK:       # %bb.0:1089; CHECK-NEXT:    fcmp.s %s0, %s0, %s11090; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s01091; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11092; CHECK-NEXT:    b.l.t (, %s10)1093  %5 = fcmp fast oeq float %0, %11094  %6 = select i1 %5, i32 %2, i32 %31095  ret i32 %61096}1097 1098; Function Attrs: norecurse nounwind readnone1099define signext i32 @select_cc_double_i32(double %0, double %1, i32 signext %2, i32 signext %3) {1100; CHECK-LABEL: select_cc_double_i32:1101; CHECK:       # %bb.0:1102; CHECK-NEXT:    fcmp.d %s0, %s0, %s11103; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s01104; CHECK-NEXT:    adds.w.sx %s0, %s3, (0)11105; CHECK-NEXT:    b.l.t (, %s10)1106  %5 = fcmp fast oeq double %0, %11107  %6 = select i1 %5, i32 %2, i32 %31108  ret i32 %61109}1110 1111; Function Attrs: norecurse nounwind readnone1112define signext i32 @select_cc_quad_i32(fp128 %0, fp128 %1, i32 signext %2, i32 signext %3) {1113; CHECK-LABEL: select_cc_quad_i32:1114; CHECK:       # %bb.0:1115; CHECK-NEXT:    fcmp.q %s0, %s0, %s21116; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s01117; CHECK-NEXT:    adds.w.sx %s0, %s5, (0)11118; CHECK-NEXT:    b.l.t (, %s10)1119  %5 = fcmp fast oeq fp128 %0, %11120  %6 = select i1 %5, i32 %2, i32 %31121  ret i32 %61122}1123 1124; Function Attrs: norecurse nounwind readnone1125define zeroext i32 @select_cc_i1_u32(i1 zeroext %0, i1 zeroext %1, i32 zeroext %2, i32 zeroext %3) {1126; CHECK-LABEL: select_cc_i1_u32:1127; CHECK:       # %bb.0:1128; CHECK-NEXT:    xor %s0, %s0, %s11129; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s01130; CHECK-NEXT:    adds.w.zx %s0, %s2, (0)11131; CHECK-NEXT:    b.l.t (, %s10)1132  %5 = xor i1 %0, %11133  %6 = select i1 %5, i32 %3, i32 %21134  ret i32 %61135}1136 1137; Function Attrs: norecurse nounwind readnone1138define zeroext i32 @select_cc_i8_u32(i8 signext %0, i8 signext %1, i32 zeroext %2, i32 zeroext %3) {1139; CHECK-LABEL: select_cc_i8_u32:1140; CHECK:       # %bb.0:1141; CHECK-NEXT:    cmpu.w %s0, %s0, %s11142; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01143; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11144; CHECK-NEXT:    b.l.t (, %s10)1145  %5 = icmp eq i8 %0, %11146  %6 = select i1 %5, i32 %2, i32 %31147  ret i32 %61148}1149 1150; Function Attrs: norecurse nounwind readnone1151define zeroext i32 @select_cc_u8_u32(i8 zeroext %0, i8 zeroext %1, i32 zeroext %2, i32 zeroext %3) {1152; CHECK-LABEL: select_cc_u8_u32:1153; CHECK:       # %bb.0:1154; CHECK-NEXT:    cmpu.w %s0, %s0, %s11155; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01156; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11157; CHECK-NEXT:    b.l.t (, %s10)1158  %5 = icmp eq i8 %0, %11159  %6 = select i1 %5, i32 %2, i32 %31160  ret i32 %61161}1162 1163; Function Attrs: norecurse nounwind readnone1164define zeroext i32 @select_cc_i16_u32(i16 signext %0, i16 signext %1, i32 zeroext %2, i32 zeroext %3) {1165; CHECK-LABEL: select_cc_i16_u32:1166; CHECK:       # %bb.0:1167; CHECK-NEXT:    cmpu.w %s0, %s0, %s11168; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01169; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11170; CHECK-NEXT:    b.l.t (, %s10)1171  %5 = icmp eq i16 %0, %11172  %6 = select i1 %5, i32 %2, i32 %31173  ret i32 %61174}1175 1176; Function Attrs: norecurse nounwind readnone1177define zeroext i32 @select_cc_u16_u32(i16 zeroext %0, i16 zeroext %1, i32 zeroext %2, i32 zeroext %3) {1178; CHECK-LABEL: select_cc_u16_u32:1179; CHECK:       # %bb.0:1180; CHECK-NEXT:    cmpu.w %s0, %s0, %s11181; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01182; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11183; CHECK-NEXT:    b.l.t (, %s10)1184  %5 = icmp eq i16 %0, %11185  %6 = select i1 %5, i32 %2, i32 %31186  ret i32 %61187}1188 1189; Function Attrs: norecurse nounwind readnone1190define zeroext i32 @select_cc_i32_u32(i32 signext %0, i32 signext %1, i32 zeroext %2, i32 zeroext %3) {1191; CHECK-LABEL: select_cc_i32_u32:1192; CHECK:       # %bb.0:1193; CHECK-NEXT:    cmpu.w %s0, %s0, %s11194; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01195; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11196; CHECK-NEXT:    b.l.t (, %s10)1197  %5 = icmp eq i32 %0, %11198  %6 = select i1 %5, i32 %2, i32 %31199  ret i32 %61200}1201 1202; Function Attrs: norecurse nounwind readnone1203define zeroext i32 @select_cc_u32_u32(i32 zeroext %0, i32 zeroext %1, i32 zeroext %2, i32 zeroext %3) {1204; CHECK-LABEL: select_cc_u32_u32:1205; CHECK:       # %bb.0:1206; CHECK-NEXT:    cmpu.w %s0, %s0, %s11207; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01208; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11209; CHECK-NEXT:    b.l.t (, %s10)1210  %5 = icmp eq i32 %0, %11211  %6 = select i1 %5, i32 %2, i32 %31212  ret i32 %61213}1214 1215; Function Attrs: norecurse nounwind readnone1216define zeroext i32 @select_cc_i64_u32(i64 %0, i64 %1, i32 zeroext %2, i32 zeroext %3) {1217; CHECK-LABEL: select_cc_i64_u32:1218; CHECK:       # %bb.0:1219; CHECK-NEXT:    cmpu.l %s0, %s0, %s11220; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01221; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11222; CHECK-NEXT:    b.l.t (, %s10)1223  %5 = icmp eq i64 %0, %11224  %6 = select i1 %5, i32 %2, i32 %31225  ret i32 %61226}1227 1228; Function Attrs: norecurse nounwind readnone1229define zeroext i32 @select_cc_u64_u32(i64 %0, i64 %1, i32 zeroext %2, i32 zeroext %3) {1230; CHECK-LABEL: select_cc_u64_u32:1231; CHECK:       # %bb.0:1232; CHECK-NEXT:    cmpu.l %s0, %s0, %s11233; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01234; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11235; CHECK-NEXT:    b.l.t (, %s10)1236  %5 = icmp eq i64 %0, %11237  %6 = select i1 %5, i32 %2, i32 %31238  ret i32 %61239}1240 1241; Function Attrs: norecurse nounwind readnone1242define zeroext i32 @select_cc_i128_u32(i128 %0, i128 %1, i32 zeroext %2, i32 zeroext %3) {1243; CHECK-LABEL: select_cc_i128_u32:1244; CHECK:       # %bb.0:1245; CHECK-NEXT:    xor %s1, %s1, %s31246; CHECK-NEXT:    xor %s0, %s0, %s21247; CHECK-NEXT:    or %s0, %s0, %s11248; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01249; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)11250; CHECK-NEXT:    b.l.t (, %s10)1251  %5 = icmp eq i128 %0, %11252  %6 = select i1 %5, i32 %2, i32 %31253  ret i32 %61254}1255 1256; Function Attrs: norecurse nounwind readnone1257define zeroext i32 @select_cc_u128_u32(i128 %0, i128 %1, i32 zeroext %2, i32 zeroext %3) {1258; CHECK-LABEL: select_cc_u128_u32:1259; CHECK:       # %bb.0:1260; CHECK-NEXT:    xor %s1, %s1, %s31261; CHECK-NEXT:    xor %s0, %s0, %s21262; CHECK-NEXT:    or %s0, %s0, %s11263; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01264; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)11265; CHECK-NEXT:    b.l.t (, %s10)1266  %5 = icmp eq i128 %0, %11267  %6 = select i1 %5, i32 %2, i32 %31268  ret i32 %61269}1270 1271; Function Attrs: norecurse nounwind readnone1272define zeroext i32 @select_cc_float_u32(float %0, float %1, i32 zeroext %2, i32 zeroext %3) {1273; CHECK-LABEL: select_cc_float_u32:1274; CHECK:       # %bb.0:1275; CHECK-NEXT:    fcmp.s %s0, %s0, %s11276; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s01277; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11278; CHECK-NEXT:    b.l.t (, %s10)1279  %5 = fcmp fast oeq float %0, %11280  %6 = select i1 %5, i32 %2, i32 %31281  ret i32 %61282}1283 1284; Function Attrs: norecurse nounwind readnone1285define zeroext i32 @select_cc_double_u32(double %0, double %1, i32 zeroext %2, i32 zeroext %3) {1286; CHECK-LABEL: select_cc_double_u32:1287; CHECK:       # %bb.0:1288; CHECK-NEXT:    fcmp.d %s0, %s0, %s11289; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s01290; CHECK-NEXT:    adds.w.zx %s0, %s3, (0)11291; CHECK-NEXT:    b.l.t (, %s10)1292  %5 = fcmp fast oeq double %0, %11293  %6 = select i1 %5, i32 %2, i32 %31294  ret i32 %61295}1296 1297; Function Attrs: norecurse nounwind readnone1298define zeroext i32 @select_cc_quad_u32(fp128 %0, fp128 %1, i32 zeroext %2, i32 zeroext %3) {1299; CHECK-LABEL: select_cc_quad_u32:1300; CHECK:       # %bb.0:1301; CHECK-NEXT:    fcmp.q %s0, %s0, %s21302; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s01303; CHECK-NEXT:    adds.w.zx %s0, %s5, (0)11304; CHECK-NEXT:    b.l.t (, %s10)1305  %5 = fcmp fast oeq fp128 %0, %11306  %6 = select i1 %5, i32 %2, i32 %31307  ret i32 %61308}1309 1310; Function Attrs: norecurse nounwind readnone1311define i64 @select_cc_i1_i64(i1 zeroext %0, i1 zeroext %1, i64 %2, i64 %3) {1312; CHECK-LABEL: select_cc_i1_i64:1313; CHECK:       # %bb.0:1314; CHECK-NEXT:    xor %s0, %s0, %s11315; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s01316; CHECK-NEXT:    or %s0, 0, %s21317; CHECK-NEXT:    b.l.t (, %s10)1318  %5 = xor i1 %0, %11319  %6 = select i1 %5, i64 %3, i64 %21320  ret i64 %61321}1322 1323; Function Attrs: norecurse nounwind readnone1324define i64 @select_cc_i8_i64(i8 signext %0, i8 signext %1, i64 %2, i64 %3) {1325; CHECK-LABEL: select_cc_i8_i64:1326; CHECK:       # %bb.0:1327; CHECK-NEXT:    cmpu.w %s0, %s0, %s11328; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01329; CHECK-NEXT:    or %s0, 0, %s31330; CHECK-NEXT:    b.l.t (, %s10)1331  %5 = icmp eq i8 %0, %11332  %6 = select i1 %5, i64 %2, i64 %31333  ret i64 %61334}1335 1336; Function Attrs: norecurse nounwind readnone1337define i64 @select_cc_u8_i64(i8 zeroext %0, i8 zeroext %1, i64 %2, i64 %3) {1338; CHECK-LABEL: select_cc_u8_i64:1339; CHECK:       # %bb.0:1340; CHECK-NEXT:    cmpu.w %s0, %s0, %s11341; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01342; CHECK-NEXT:    or %s0, 0, %s31343; CHECK-NEXT:    b.l.t (, %s10)1344  %5 = icmp eq i8 %0, %11345  %6 = select i1 %5, i64 %2, i64 %31346  ret i64 %61347}1348 1349; Function Attrs: norecurse nounwind readnone1350define i64 @select_cc_i16_i64(i16 signext %0, i16 signext %1, i64 %2, i64 %3) {1351; CHECK-LABEL: select_cc_i16_i64:1352; CHECK:       # %bb.0:1353; CHECK-NEXT:    cmpu.w %s0, %s0, %s11354; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01355; CHECK-NEXT:    or %s0, 0, %s31356; CHECK-NEXT:    b.l.t (, %s10)1357  %5 = icmp eq i16 %0, %11358  %6 = select i1 %5, i64 %2, i64 %31359  ret i64 %61360}1361 1362; Function Attrs: norecurse nounwind readnone1363define i64 @select_cc_u16_i64(i16 zeroext %0, i16 zeroext %1, i64 %2, i64 %3) {1364; CHECK-LABEL: select_cc_u16_i64:1365; CHECK:       # %bb.0:1366; CHECK-NEXT:    cmpu.w %s0, %s0, %s11367; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01368; CHECK-NEXT:    or %s0, 0, %s31369; CHECK-NEXT:    b.l.t (, %s10)1370  %5 = icmp eq i16 %0, %11371  %6 = select i1 %5, i64 %2, i64 %31372  ret i64 %61373}1374 1375; Function Attrs: norecurse nounwind readnone1376define i64 @select_cc_i32_i64(i32 signext %0, i32 signext %1, i64 %2, i64 %3) {1377; CHECK-LABEL: select_cc_i32_i64:1378; CHECK:       # %bb.0:1379; CHECK-NEXT:    cmpu.w %s0, %s0, %s11380; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01381; CHECK-NEXT:    or %s0, 0, %s31382; CHECK-NEXT:    b.l.t (, %s10)1383  %5 = icmp eq i32 %0, %11384  %6 = select i1 %5, i64 %2, i64 %31385  ret i64 %61386}1387 1388; Function Attrs: norecurse nounwind readnone1389define i64 @select_cc_u32_i64(i32 zeroext %0, i32 zeroext %1, i64 %2, i64 %3) {1390; CHECK-LABEL: select_cc_u32_i64:1391; CHECK:       # %bb.0:1392; CHECK-NEXT:    cmpu.w %s0, %s0, %s11393; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01394; CHECK-NEXT:    or %s0, 0, %s31395; CHECK-NEXT:    b.l.t (, %s10)1396  %5 = icmp eq i32 %0, %11397  %6 = select i1 %5, i64 %2, i64 %31398  ret i64 %61399}1400 1401; Function Attrs: norecurse nounwind readnone1402define i64 @select_cc_i64_i64(i64 %0, i64 %1, i64 %2, i64 %3) {1403; CHECK-LABEL: select_cc_i64_i64:1404; CHECK:       # %bb.0:1405; CHECK-NEXT:    cmpu.l %s0, %s0, %s11406; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01407; CHECK-NEXT:    or %s0, 0, %s31408; CHECK-NEXT:    b.l.t (, %s10)1409  %5 = icmp eq i64 %0, %11410  %6 = select i1 %5, i64 %2, i64 %31411  ret i64 %61412}1413 1414; Function Attrs: norecurse nounwind readnone1415define i64 @select_cc_u64_i64(i64 %0, i64 %1, i64 %2, i64 %3) {1416; CHECK-LABEL: select_cc_u64_i64:1417; CHECK:       # %bb.0:1418; CHECK-NEXT:    cmpu.l %s0, %s0, %s11419; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01420; CHECK-NEXT:    or %s0, 0, %s31421; CHECK-NEXT:    b.l.t (, %s10)1422  %5 = icmp eq i64 %0, %11423  %6 = select i1 %5, i64 %2, i64 %31424  ret i64 %61425}1426 1427; Function Attrs: norecurse nounwind readnone1428define i64 @select_cc_i128_i64(i128 %0, i128 %1, i64 %2, i64 %3) {1429; CHECK-LABEL: select_cc_i128_i64:1430; CHECK:       # %bb.0:1431; CHECK-NEXT:    xor %s1, %s1, %s31432; CHECK-NEXT:    xor %s0, %s0, %s21433; CHECK-NEXT:    or %s0, %s0, %s11434; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01435; CHECK-NEXT:    or %s0, 0, %s51436; CHECK-NEXT:    b.l.t (, %s10)1437  %5 = icmp eq i128 %0, %11438  %6 = select i1 %5, i64 %2, i64 %31439  ret i64 %61440}1441 1442; Function Attrs: norecurse nounwind readnone1443define i64 @select_cc_u128_i64(i128 %0, i128 %1, i64 %2, i64 %3) {1444; CHECK-LABEL: select_cc_u128_i64:1445; CHECK:       # %bb.0:1446; CHECK-NEXT:    xor %s1, %s1, %s31447; CHECK-NEXT:    xor %s0, %s0, %s21448; CHECK-NEXT:    or %s0, %s0, %s11449; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01450; CHECK-NEXT:    or %s0, 0, %s51451; CHECK-NEXT:    b.l.t (, %s10)1452  %5 = icmp eq i128 %0, %11453  %6 = select i1 %5, i64 %2, i64 %31454  ret i64 %61455}1456 1457; Function Attrs: norecurse nounwind readnone1458define i64 @select_cc_float_i64(float %0, float %1, i64 %2, i64 %3) {1459; CHECK-LABEL: select_cc_float_i64:1460; CHECK:       # %bb.0:1461; CHECK-NEXT:    fcmp.s %s0, %s0, %s11462; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s01463; CHECK-NEXT:    or %s0, 0, %s31464; CHECK-NEXT:    b.l.t (, %s10)1465  %5 = fcmp fast oeq float %0, %11466  %6 = select i1 %5, i64 %2, i64 %31467  ret i64 %61468}1469 1470; Function Attrs: norecurse nounwind readnone1471define i64 @select_cc_double_i64(double %0, double %1, i64 %2, i64 %3) {1472; CHECK-LABEL: select_cc_double_i64:1473; CHECK:       # %bb.0:1474; CHECK-NEXT:    fcmp.d %s0, %s0, %s11475; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s01476; CHECK-NEXT:    or %s0, 0, %s31477; CHECK-NEXT:    b.l.t (, %s10)1478  %5 = fcmp fast oeq double %0, %11479  %6 = select i1 %5, i64 %2, i64 %31480  ret i64 %61481}1482 1483; Function Attrs: norecurse nounwind readnone1484define i64 @select_cc_quad_i64(fp128 %0, fp128 %1, i64 %2, i64 %3) {1485; CHECK-LABEL: select_cc_quad_i64:1486; CHECK:       # %bb.0:1487; CHECK-NEXT:    fcmp.q %s0, %s0, %s21488; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s01489; CHECK-NEXT:    or %s0, 0, %s51490; CHECK-NEXT:    b.l.t (, %s10)1491  %5 = fcmp fast oeq fp128 %0, %11492  %6 = select i1 %5, i64 %2, i64 %31493  ret i64 %61494}1495 1496; Function Attrs: norecurse nounwind readnone1497define i64 @select_cc_i1_u64(i1 zeroext %0, i1 zeroext %1, i64 %2, i64 %3) {1498; CHECK-LABEL: select_cc_i1_u64:1499; CHECK:       # %bb.0:1500; CHECK-NEXT:    xor %s0, %s0, %s11501; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s01502; CHECK-NEXT:    or %s0, 0, %s21503; CHECK-NEXT:    b.l.t (, %s10)1504  %5 = xor i1 %0, %11505  %6 = select i1 %5, i64 %3, i64 %21506  ret i64 %61507}1508 1509; Function Attrs: norecurse nounwind readnone1510define i64 @select_cc_i8_u64(i8 signext %0, i8 signext %1, i64 %2, i64 %3) {1511; CHECK-LABEL: select_cc_i8_u64:1512; CHECK:       # %bb.0:1513; CHECK-NEXT:    cmpu.w %s0, %s0, %s11514; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01515; CHECK-NEXT:    or %s0, 0, %s31516; CHECK-NEXT:    b.l.t (, %s10)1517  %5 = icmp eq i8 %0, %11518  %6 = select i1 %5, i64 %2, i64 %31519  ret i64 %61520}1521 1522; Function Attrs: norecurse nounwind readnone1523define i64 @select_cc_u8_u64(i8 zeroext %0, i8 zeroext %1, i64 %2, i64 %3) {1524; CHECK-LABEL: select_cc_u8_u64:1525; CHECK:       # %bb.0:1526; CHECK-NEXT:    cmpu.w %s0, %s0, %s11527; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01528; CHECK-NEXT:    or %s0, 0, %s31529; CHECK-NEXT:    b.l.t (, %s10)1530  %5 = icmp eq i8 %0, %11531  %6 = select i1 %5, i64 %2, i64 %31532  ret i64 %61533}1534 1535; Function Attrs: norecurse nounwind readnone1536define i64 @select_cc_i16_u64(i16 signext %0, i16 signext %1, i64 %2, i64 %3) {1537; CHECK-LABEL: select_cc_i16_u64:1538; CHECK:       # %bb.0:1539; CHECK-NEXT:    cmpu.w %s0, %s0, %s11540; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01541; CHECK-NEXT:    or %s0, 0, %s31542; CHECK-NEXT:    b.l.t (, %s10)1543  %5 = icmp eq i16 %0, %11544  %6 = select i1 %5, i64 %2, i64 %31545  ret i64 %61546}1547 1548; Function Attrs: norecurse nounwind readnone1549define i64 @select_cc_u16_u64(i16 zeroext %0, i16 zeroext %1, i64 %2, i64 %3) {1550; CHECK-LABEL: select_cc_u16_u64:1551; CHECK:       # %bb.0:1552; CHECK-NEXT:    cmpu.w %s0, %s0, %s11553; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01554; CHECK-NEXT:    or %s0, 0, %s31555; CHECK-NEXT:    b.l.t (, %s10)1556  %5 = icmp eq i16 %0, %11557  %6 = select i1 %5, i64 %2, i64 %31558  ret i64 %61559}1560 1561; Function Attrs: norecurse nounwind readnone1562define i64 @select_cc_i32_u64(i32 signext %0, i32 signext %1, i64 %2, i64 %3) {1563; CHECK-LABEL: select_cc_i32_u64:1564; CHECK:       # %bb.0:1565; CHECK-NEXT:    cmpu.w %s0, %s0, %s11566; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01567; CHECK-NEXT:    or %s0, 0, %s31568; CHECK-NEXT:    b.l.t (, %s10)1569  %5 = icmp eq i32 %0, %11570  %6 = select i1 %5, i64 %2, i64 %31571  ret i64 %61572}1573 1574; Function Attrs: norecurse nounwind readnone1575define i64 @select_cc_u32_u64(i32 zeroext %0, i32 zeroext %1, i64 %2, i64 %3) {1576; CHECK-LABEL: select_cc_u32_u64:1577; CHECK:       # %bb.0:1578; CHECK-NEXT:    cmpu.w %s0, %s0, %s11579; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s01580; CHECK-NEXT:    or %s0, 0, %s31581; CHECK-NEXT:    b.l.t (, %s10)1582  %5 = icmp eq i32 %0, %11583  %6 = select i1 %5, i64 %2, i64 %31584  ret i64 %61585}1586 1587; Function Attrs: norecurse nounwind readnone1588define i64 @select_cc_i64_u64(i64 %0, i64 %1, i64 %2, i64 %3) {1589; CHECK-LABEL: select_cc_i64_u64:1590; CHECK:       # %bb.0:1591; CHECK-NEXT:    cmpu.l %s0, %s0, %s11592; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01593; CHECK-NEXT:    or %s0, 0, %s31594; CHECK-NEXT:    b.l.t (, %s10)1595  %5 = icmp eq i64 %0, %11596  %6 = select i1 %5, i64 %2, i64 %31597  ret i64 %61598}1599 1600; Function Attrs: norecurse nounwind readnone1601define i64 @select_cc_u64_u64(i64 %0, i64 %1, i64 %2, i64 %3) {1602; CHECK-LABEL: select_cc_u64_u64:1603; CHECK:       # %bb.0:1604; CHECK-NEXT:    cmpu.l %s0, %s0, %s11605; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s01606; CHECK-NEXT:    or %s0, 0, %s31607; CHECK-NEXT:    b.l.t (, %s10)1608  %5 = icmp eq i64 %0, %11609  %6 = select i1 %5, i64 %2, i64 %31610  ret i64 %61611}1612 1613; Function Attrs: norecurse nounwind readnone1614define i64 @select_cc_i128_u64(i128 %0, i128 %1, i64 %2, i64 %3) {1615; CHECK-LABEL: select_cc_i128_u64:1616; CHECK:       # %bb.0:1617; CHECK-NEXT:    xor %s1, %s1, %s31618; CHECK-NEXT:    xor %s0, %s0, %s21619; CHECK-NEXT:    or %s0, %s0, %s11620; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01621; CHECK-NEXT:    or %s0, 0, %s51622; CHECK-NEXT:    b.l.t (, %s10)1623  %5 = icmp eq i128 %0, %11624  %6 = select i1 %5, i64 %2, i64 %31625  ret i64 %61626}1627 1628; Function Attrs: norecurse nounwind readnone1629define i64 @select_cc_u128_u64(i128 %0, i128 %1, i64 %2, i64 %3) {1630; CHECK-LABEL: select_cc_u128_u64:1631; CHECK:       # %bb.0:1632; CHECK-NEXT:    xor %s1, %s1, %s31633; CHECK-NEXT:    xor %s0, %s0, %s21634; CHECK-NEXT:    or %s0, %s0, %s11635; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s01636; CHECK-NEXT:    or %s0, 0, %s51637; CHECK-NEXT:    b.l.t (, %s10)1638  %5 = icmp eq i128 %0, %11639  %6 = select i1 %5, i64 %2, i64 %31640  ret i64 %61641}1642 1643; Function Attrs: norecurse nounwind readnone1644define i64 @select_cc_float_u64(float %0, float %1, i64 %2, i64 %3) {1645; CHECK-LABEL: select_cc_float_u64:1646; CHECK:       # %bb.0:1647; CHECK-NEXT:    fcmp.s %s0, %s0, %s11648; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s01649; CHECK-NEXT:    or %s0, 0, %s31650; CHECK-NEXT:    b.l.t (, %s10)1651  %5 = fcmp fast oeq float %0, %11652  %6 = select i1 %5, i64 %2, i64 %31653  ret i64 %61654}1655 1656; Function Attrs: norecurse nounwind readnone1657define i64 @select_cc_double_u64(double %0, double %1, i64 %2, i64 %3) {1658; CHECK-LABEL: select_cc_double_u64:1659; CHECK:       # %bb.0:1660; CHECK-NEXT:    fcmp.d %s0, %s0, %s11661; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s01662; CHECK-NEXT:    or %s0, 0, %s31663; CHECK-NEXT:    b.l.t (, %s10)1664  %5 = fcmp fast oeq double %0, %11665  %6 = select i1 %5, i64 %2, i64 %31666  ret i64 %61667}1668 1669; Function Attrs: norecurse nounwind readnone1670define i64 @select_cc_quad_u64(fp128 %0, fp128 %1, i64 %2, i64 %3) {1671; CHECK-LABEL: select_cc_quad_u64:1672; CHECK:       # %bb.0:1673; CHECK-NEXT:    fcmp.q %s0, %s0, %s21674; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s01675; CHECK-NEXT:    or %s0, 0, %s51676; CHECK-NEXT:    b.l.t (, %s10)1677  %5 = fcmp fast oeq fp128 %0, %11678  %6 = select i1 %5, i64 %2, i64 %31679  ret i64 %61680}1681 1682; Function Attrs: norecurse nounwind readnone1683define i128 @select_cc_i1_i128(i1 zeroext %0, i1 zeroext %1, i128 %2, i128 %3) {1684; CHECK-LABEL: select_cc_i1_i128:1685; CHECK:       # %bb.0:1686; CHECK-NEXT:    xor %s0, %s0, %s11687; CHECK-NEXT:    cmov.w.ne %s2, %s4, %s01688; CHECK-NEXT:    cmov.w.ne %s3, %s5, %s01689; CHECK-NEXT:    or %s0, 0, %s21690; CHECK-NEXT:    or %s1, 0, %s31691; CHECK-NEXT:    b.l.t (, %s10)1692  %5 = xor i1 %0, %11693  %6 = select i1 %5, i128 %3, i128 %21694  ret i128 %61695}1696 1697; Function Attrs: norecurse nounwind readnone1698define i128 @select_cc_i8_i128(i8 signext %0, i8 signext %1, i128 %2, i128 %3) {1699; CHECK-LABEL: select_cc_i8_i128:1700; CHECK:       # %bb.0:1701; CHECK-NEXT:    cmpu.w %s0, %s0, %s11702; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01703; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01704; CHECK-NEXT:    or %s0, 0, %s41705; CHECK-NEXT:    or %s1, 0, %s51706; CHECK-NEXT:    b.l.t (, %s10)1707  %5 = icmp eq i8 %0, %11708  %6 = select i1 %5, i128 %2, i128 %31709  ret i128 %61710}1711 1712; Function Attrs: norecurse nounwind readnone1713define i128 @select_cc_u8_i128(i8 zeroext %0, i8 zeroext %1, i128 %2, i128 %3) {1714; CHECK-LABEL: select_cc_u8_i128:1715; CHECK:       # %bb.0:1716; CHECK-NEXT:    cmpu.w %s0, %s0, %s11717; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01718; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01719; CHECK-NEXT:    or %s0, 0, %s41720; CHECK-NEXT:    or %s1, 0, %s51721; CHECK-NEXT:    b.l.t (, %s10)1722  %5 = icmp eq i8 %0, %11723  %6 = select i1 %5, i128 %2, i128 %31724  ret i128 %61725}1726 1727; Function Attrs: norecurse nounwind readnone1728define i128 @select_cc_i16_i128(i16 signext %0, i16 signext %1, i128 %2, i128 %3) {1729; CHECK-LABEL: select_cc_i16_i128:1730; CHECK:       # %bb.0:1731; CHECK-NEXT:    cmpu.w %s0, %s0, %s11732; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01733; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01734; CHECK-NEXT:    or %s0, 0, %s41735; CHECK-NEXT:    or %s1, 0, %s51736; CHECK-NEXT:    b.l.t (, %s10)1737  %5 = icmp eq i16 %0, %11738  %6 = select i1 %5, i128 %2, i128 %31739  ret i128 %61740}1741 1742; Function Attrs: norecurse nounwind readnone1743define i128 @select_cc_u16_i128(i16 zeroext %0, i16 zeroext %1, i128 %2, i128 %3) {1744; CHECK-LABEL: select_cc_u16_i128:1745; CHECK:       # %bb.0:1746; CHECK-NEXT:    cmpu.w %s0, %s0, %s11747; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01748; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01749; CHECK-NEXT:    or %s0, 0, %s41750; CHECK-NEXT:    or %s1, 0, %s51751; CHECK-NEXT:    b.l.t (, %s10)1752  %5 = icmp eq i16 %0, %11753  %6 = select i1 %5, i128 %2, i128 %31754  ret i128 %61755}1756 1757; Function Attrs: norecurse nounwind readnone1758define i128 @select_cc_i32_i128(i32 signext %0, i32 signext %1, i128 %2, i128 %3) {1759; CHECK-LABEL: select_cc_i32_i128:1760; CHECK:       # %bb.0:1761; CHECK-NEXT:    cmpu.w %s0, %s0, %s11762; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01763; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01764; CHECK-NEXT:    or %s0, 0, %s41765; CHECK-NEXT:    or %s1, 0, %s51766; CHECK-NEXT:    b.l.t (, %s10)1767  %5 = icmp eq i32 %0, %11768  %6 = select i1 %5, i128 %2, i128 %31769  ret i128 %61770}1771 1772; Function Attrs: norecurse nounwind readnone1773define i128 @select_cc_u32_i128(i32 zeroext %0, i32 zeroext %1, i128 %2, i128 %3) {1774; CHECK-LABEL: select_cc_u32_i128:1775; CHECK:       # %bb.0:1776; CHECK-NEXT:    cmpu.w %s0, %s0, %s11777; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01778; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01779; CHECK-NEXT:    or %s0, 0, %s41780; CHECK-NEXT:    or %s1, 0, %s51781; CHECK-NEXT:    b.l.t (, %s10)1782  %5 = icmp eq i32 %0, %11783  %6 = select i1 %5, i128 %2, i128 %31784  ret i128 %61785}1786 1787; Function Attrs: norecurse nounwind readnone1788define i128 @select_cc_i64_i128(i64 %0, i64 %1, i128 %2, i128 %3) {1789; CHECK-LABEL: select_cc_i64_i128:1790; CHECK:       # %bb.0:1791; CHECK-NEXT:    cmpu.l %s0, %s0, %s11792; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s01793; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s01794; CHECK-NEXT:    or %s0, 0, %s41795; CHECK-NEXT:    or %s1, 0, %s51796; CHECK-NEXT:    b.l.t (, %s10)1797  %5 = icmp eq i64 %0, %11798  %6 = select i1 %5, i128 %2, i128 %31799  ret i128 %61800}1801 1802; Function Attrs: norecurse nounwind readnone1803define i128 @select_cc_u64_i128(i64 %0, i64 %1, i128 %2, i128 %3) {1804; CHECK-LABEL: select_cc_u64_i128:1805; CHECK:       # %bb.0:1806; CHECK-NEXT:    cmpu.l %s0, %s0, %s11807; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s01808; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s01809; CHECK-NEXT:    or %s0, 0, %s41810; CHECK-NEXT:    or %s1, 0, %s51811; CHECK-NEXT:    b.l.t (, %s10)1812  %5 = icmp eq i64 %0, %11813  %6 = select i1 %5, i128 %2, i128 %31814  ret i128 %61815}1816 1817; Function Attrs: norecurse nounwind readnone1818define i128 @select_cc_i128_i128(i128 %0, i128 %1, i128 %2, i128 %3) {1819; CHECK-LABEL: select_cc_i128_i128:1820; CHECK:       # %bb.0:1821; CHECK-NEXT:    xor %s1, %s1, %s31822; CHECK-NEXT:    xor %s0, %s0, %s21823; CHECK-NEXT:    or %s0, %s0, %s11824; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s01825; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s01826; CHECK-NEXT:    or %s0, 0, %s61827; CHECK-NEXT:    or %s1, 0, %s71828; CHECK-NEXT:    b.l.t (, %s10)1829  %5 = icmp eq i128 %0, %11830  %6 = select i1 %5, i128 %2, i128 %31831  ret i128 %61832}1833 1834; Function Attrs: norecurse nounwind readnone1835define i128 @select_cc_u128_i128(i128 %0, i128 %1, i128 %2, i128 %3) {1836; CHECK-LABEL: select_cc_u128_i128:1837; CHECK:       # %bb.0:1838; CHECK-NEXT:    xor %s1, %s1, %s31839; CHECK-NEXT:    xor %s0, %s0, %s21840; CHECK-NEXT:    or %s0, %s0, %s11841; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s01842; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s01843; CHECK-NEXT:    or %s0, 0, %s61844; CHECK-NEXT:    or %s1, 0, %s71845; CHECK-NEXT:    b.l.t (, %s10)1846  %5 = icmp eq i128 %0, %11847  %6 = select i1 %5, i128 %2, i128 %31848  ret i128 %61849}1850 1851; Function Attrs: norecurse nounwind readnone1852define i128 @select_cc_float_i128(float %0, float %1, i128 %2, i128 %3) {1853; CHECK-LABEL: select_cc_float_i128:1854; CHECK:       # %bb.0:1855; CHECK-NEXT:    fcmp.s %s0, %s0, %s11856; CHECK-NEXT:    cmov.s.eq %s4, %s2, %s01857; CHECK-NEXT:    cmov.s.eq %s5, %s3, %s01858; CHECK-NEXT:    or %s0, 0, %s41859; CHECK-NEXT:    or %s1, 0, %s51860; CHECK-NEXT:    b.l.t (, %s10)1861  %5 = fcmp fast oeq float %0, %11862  %6 = select i1 %5, i128 %2, i128 %31863  ret i128 %61864}1865 1866; Function Attrs: norecurse nounwind readnone1867define i128 @select_cc_double_i128(double %0, double %1, i128 %2, i128 %3) {1868; CHECK-LABEL: select_cc_double_i128:1869; CHECK:       # %bb.0:1870; CHECK-NEXT:    fcmp.d %s0, %s0, %s11871; CHECK-NEXT:    cmov.d.eq %s4, %s2, %s01872; CHECK-NEXT:    cmov.d.eq %s5, %s3, %s01873; CHECK-NEXT:    or %s0, 0, %s41874; CHECK-NEXT:    or %s1, 0, %s51875; CHECK-NEXT:    b.l.t (, %s10)1876  %5 = fcmp fast oeq double %0, %11877  %6 = select i1 %5, i128 %2, i128 %31878  ret i128 %61879}1880 1881; Function Attrs: norecurse nounwind readnone1882define i128 @select_cc_quad_i128(fp128 %0, fp128 %1, i128 %2, i128 %3) {1883; CHECK-LABEL: select_cc_quad_i128:1884; CHECK:       # %bb.0:1885; CHECK-NEXT:    fcmp.q %s0, %s0, %s21886; CHECK-NEXT:    cmov.d.eq %s6, %s4, %s01887; CHECK-NEXT:    cmov.d.eq %s7, %s5, %s01888; CHECK-NEXT:    or %s0, 0, %s61889; CHECK-NEXT:    or %s1, 0, %s71890; CHECK-NEXT:    b.l.t (, %s10)1891  %5 = fcmp fast oeq fp128 %0, %11892  %6 = select i1 %5, i128 %2, i128 %31893  ret i128 %61894}1895 1896; Function Attrs: norecurse nounwind readnone1897define i128 @select_cc_i1_u128(i1 zeroext %0, i1 zeroext %1, i128 %2, i128 %3) {1898; CHECK-LABEL: select_cc_i1_u128:1899; CHECK:       # %bb.0:1900; CHECK-NEXT:    xor %s0, %s0, %s11901; CHECK-NEXT:    cmov.w.ne %s2, %s4, %s01902; CHECK-NEXT:    cmov.w.ne %s3, %s5, %s01903; CHECK-NEXT:    or %s0, 0, %s21904; CHECK-NEXT:    or %s1, 0, %s31905; CHECK-NEXT:    b.l.t (, %s10)1906  %5 = xor i1 %0, %11907  %6 = select i1 %5, i128 %3, i128 %21908  ret i128 %61909}1910 1911; Function Attrs: norecurse nounwind readnone1912define i128 @select_cc_i8_u128(i8 signext %0, i8 signext %1, i128 %2, i128 %3) {1913; CHECK-LABEL: select_cc_i8_u128:1914; CHECK:       # %bb.0:1915; CHECK-NEXT:    cmpu.w %s0, %s0, %s11916; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01917; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01918; CHECK-NEXT:    or %s0, 0, %s41919; CHECK-NEXT:    or %s1, 0, %s51920; CHECK-NEXT:    b.l.t (, %s10)1921  %5 = icmp eq i8 %0, %11922  %6 = select i1 %5, i128 %2, i128 %31923  ret i128 %61924}1925 1926; Function Attrs: norecurse nounwind readnone1927define i128 @select_cc_u8_u128(i8 zeroext %0, i8 zeroext %1, i128 %2, i128 %3) {1928; CHECK-LABEL: select_cc_u8_u128:1929; CHECK:       # %bb.0:1930; CHECK-NEXT:    cmpu.w %s0, %s0, %s11931; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01932; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01933; CHECK-NEXT:    or %s0, 0, %s41934; CHECK-NEXT:    or %s1, 0, %s51935; CHECK-NEXT:    b.l.t (, %s10)1936  %5 = icmp eq i8 %0, %11937  %6 = select i1 %5, i128 %2, i128 %31938  ret i128 %61939}1940 1941; Function Attrs: norecurse nounwind readnone1942define i128 @select_cc_i16_u128(i16 signext %0, i16 signext %1, i128 %2, i128 %3) {1943; CHECK-LABEL: select_cc_i16_u128:1944; CHECK:       # %bb.0:1945; CHECK-NEXT:    cmpu.w %s0, %s0, %s11946; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01947; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01948; CHECK-NEXT:    or %s0, 0, %s41949; CHECK-NEXT:    or %s1, 0, %s51950; CHECK-NEXT:    b.l.t (, %s10)1951  %5 = icmp eq i16 %0, %11952  %6 = select i1 %5, i128 %2, i128 %31953  ret i128 %61954}1955 1956; Function Attrs: norecurse nounwind readnone1957define i128 @select_cc_u16_u128(i16 zeroext %0, i16 zeroext %1, i128 %2, i128 %3) {1958; CHECK-LABEL: select_cc_u16_u128:1959; CHECK:       # %bb.0:1960; CHECK-NEXT:    cmpu.w %s0, %s0, %s11961; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01962; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01963; CHECK-NEXT:    or %s0, 0, %s41964; CHECK-NEXT:    or %s1, 0, %s51965; CHECK-NEXT:    b.l.t (, %s10)1966  %5 = icmp eq i16 %0, %11967  %6 = select i1 %5, i128 %2, i128 %31968  ret i128 %61969}1970 1971; Function Attrs: norecurse nounwind readnone1972define i128 @select_cc_i32_u128(i32 signext %0, i32 signext %1, i128 %2, i128 %3) {1973; CHECK-LABEL: select_cc_i32_u128:1974; CHECK:       # %bb.0:1975; CHECK-NEXT:    cmpu.w %s0, %s0, %s11976; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01977; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01978; CHECK-NEXT:    or %s0, 0, %s41979; CHECK-NEXT:    or %s1, 0, %s51980; CHECK-NEXT:    b.l.t (, %s10)1981  %5 = icmp eq i32 %0, %11982  %6 = select i1 %5, i128 %2, i128 %31983  ret i128 %61984}1985 1986; Function Attrs: norecurse nounwind readnone1987define i128 @select_cc_u32_u128(i32 zeroext %0, i32 zeroext %1, i128 %2, i128 %3) {1988; CHECK-LABEL: select_cc_u32_u128:1989; CHECK:       # %bb.0:1990; CHECK-NEXT:    cmpu.w %s0, %s0, %s11991; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s01992; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s01993; CHECK-NEXT:    or %s0, 0, %s41994; CHECK-NEXT:    or %s1, 0, %s51995; CHECK-NEXT:    b.l.t (, %s10)1996  %5 = icmp eq i32 %0, %11997  %6 = select i1 %5, i128 %2, i128 %31998  ret i128 %61999}2000 2001; Function Attrs: norecurse nounwind readnone2002define i128 @select_cc_i64_u128(i64 %0, i64 %1, i128 %2, i128 %3) {2003; CHECK-LABEL: select_cc_i64_u128:2004; CHECK:       # %bb.0:2005; CHECK-NEXT:    cmpu.l %s0, %s0, %s12006; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s02007; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s02008; CHECK-NEXT:    or %s0, 0, %s42009; CHECK-NEXT:    or %s1, 0, %s52010; CHECK-NEXT:    b.l.t (, %s10)2011  %5 = icmp eq i64 %0, %12012  %6 = select i1 %5, i128 %2, i128 %32013  ret i128 %62014}2015 2016; Function Attrs: norecurse nounwind readnone2017define i128 @select_cc_u64_u128(i64 %0, i64 %1, i128 %2, i128 %3) {2018; CHECK-LABEL: select_cc_u64_u128:2019; CHECK:       # %bb.0:2020; CHECK-NEXT:    cmpu.l %s0, %s0, %s12021; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s02022; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s02023; CHECK-NEXT:    or %s0, 0, %s42024; CHECK-NEXT:    or %s1, 0, %s52025; CHECK-NEXT:    b.l.t (, %s10)2026  %5 = icmp eq i64 %0, %12027  %6 = select i1 %5, i128 %2, i128 %32028  ret i128 %62029}2030 2031; Function Attrs: norecurse nounwind readnone2032define i128 @select_cc_i128_u128(i128 %0, i128 %1, i128 %2, i128 %3) {2033; CHECK-LABEL: select_cc_i128_u128:2034; CHECK:       # %bb.0:2035; CHECK-NEXT:    xor %s1, %s1, %s32036; CHECK-NEXT:    xor %s0, %s0, %s22037; CHECK-NEXT:    or %s0, %s0, %s12038; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s02039; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s02040; CHECK-NEXT:    or %s0, 0, %s62041; CHECK-NEXT:    or %s1, 0, %s72042; CHECK-NEXT:    b.l.t (, %s10)2043  %5 = icmp eq i128 %0, %12044  %6 = select i1 %5, i128 %2, i128 %32045  ret i128 %62046}2047 2048; Function Attrs: norecurse nounwind readnone2049define i128 @select_cc_u128_u128(i128 %0, i128 %1, i128 %2, i128 %3) {2050; CHECK-LABEL: select_cc_u128_u128:2051; CHECK:       # %bb.0:2052; CHECK-NEXT:    xor %s1, %s1, %s32053; CHECK-NEXT:    xor %s0, %s0, %s22054; CHECK-NEXT:    or %s0, %s0, %s12055; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s02056; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s02057; CHECK-NEXT:    or %s0, 0, %s62058; CHECK-NEXT:    or %s1, 0, %s72059; CHECK-NEXT:    b.l.t (, %s10)2060  %5 = icmp eq i128 %0, %12061  %6 = select i1 %5, i128 %2, i128 %32062  ret i128 %62063}2064 2065; Function Attrs: norecurse nounwind readnone2066define i128 @select_cc_float_u128(float %0, float %1, i128 %2, i128 %3) {2067; CHECK-LABEL: select_cc_float_u128:2068; CHECK:       # %bb.0:2069; CHECK-NEXT:    fcmp.s %s0, %s0, %s12070; CHECK-NEXT:    cmov.s.eq %s4, %s2, %s02071; CHECK-NEXT:    cmov.s.eq %s5, %s3, %s02072; CHECK-NEXT:    or %s0, 0, %s42073; CHECK-NEXT:    or %s1, 0, %s52074; CHECK-NEXT:    b.l.t (, %s10)2075  %5 = fcmp fast oeq float %0, %12076  %6 = select i1 %5, i128 %2, i128 %32077  ret i128 %62078}2079 2080; Function Attrs: norecurse nounwind readnone2081define i128 @select_cc_double_u128(double %0, double %1, i128 %2, i128 %3) {2082; CHECK-LABEL: select_cc_double_u128:2083; CHECK:       # %bb.0:2084; CHECK-NEXT:    fcmp.d %s0, %s0, %s12085; CHECK-NEXT:    cmov.d.eq %s4, %s2, %s02086; CHECK-NEXT:    cmov.d.eq %s5, %s3, %s02087; CHECK-NEXT:    or %s0, 0, %s42088; CHECK-NEXT:    or %s1, 0, %s52089; CHECK-NEXT:    b.l.t (, %s10)2090  %5 = fcmp fast oeq double %0, %12091  %6 = select i1 %5, i128 %2, i128 %32092  ret i128 %62093}2094 2095; Function Attrs: norecurse nounwind readnone2096define i128 @select_cc_quad_u128(fp128 %0, fp128 %1, i128 %2, i128 %3) {2097; CHECK-LABEL: select_cc_quad_u128:2098; CHECK:       # %bb.0:2099; CHECK-NEXT:    fcmp.q %s0, %s0, %s22100; CHECK-NEXT:    cmov.d.eq %s6, %s4, %s02101; CHECK-NEXT:    cmov.d.eq %s7, %s5, %s02102; CHECK-NEXT:    or %s0, 0, %s62103; CHECK-NEXT:    or %s1, 0, %s72104; CHECK-NEXT:    b.l.t (, %s10)2105  %5 = fcmp fast oeq fp128 %0, %12106  %6 = select i1 %5, i128 %2, i128 %32107  ret i128 %62108}2109 2110; Function Attrs: norecurse nounwind readnone2111define float @select_cc_i1_float(i1 zeroext %0, i1 zeroext %1, float %2, float %3) {2112; CHECK-LABEL: select_cc_i1_float:2113; CHECK:       # %bb.0:2114; CHECK-NEXT:    xor %s0, %s0, %s12115; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s02116; CHECK-NEXT:    or %s0, 0, %s22117; CHECK-NEXT:    b.l.t (, %s10)2118  %5 = xor i1 %0, %12119  %6 = select fast i1 %5, float %3, float %22120  ret float %62121}2122 2123; Function Attrs: norecurse nounwind readnone2124define float @select_cc_i8_float(i8 signext %0, i8 signext %1, float %2, float %3) {2125; CHECK-LABEL: select_cc_i8_float:2126; CHECK:       # %bb.0:2127; CHECK-NEXT:    cmpu.w %s0, %s0, %s12128; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02129; CHECK-NEXT:    or %s0, 0, %s32130; CHECK-NEXT:    b.l.t (, %s10)2131  %5 = icmp eq i8 %0, %12132  %6 = select fast i1 %5, float %2, float %32133  ret float %62134}2135 2136; Function Attrs: norecurse nounwind readnone2137define float @select_cc_u8_float(i8 zeroext %0, i8 zeroext %1, float %2, float %3) {2138; CHECK-LABEL: select_cc_u8_float:2139; CHECK:       # %bb.0:2140; CHECK-NEXT:    cmpu.w %s0, %s0, %s12141; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02142; CHECK-NEXT:    or %s0, 0, %s32143; CHECK-NEXT:    b.l.t (, %s10)2144  %5 = icmp eq i8 %0, %12145  %6 = select fast i1 %5, float %2, float %32146  ret float %62147}2148 2149; Function Attrs: norecurse nounwind readnone2150define float @select_cc_i16_float(i16 signext %0, i16 signext %1, float %2, float %3) {2151; CHECK-LABEL: select_cc_i16_float:2152; CHECK:       # %bb.0:2153; CHECK-NEXT:    cmpu.w %s0, %s0, %s12154; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02155; CHECK-NEXT:    or %s0, 0, %s32156; CHECK-NEXT:    b.l.t (, %s10)2157  %5 = icmp eq i16 %0, %12158  %6 = select fast i1 %5, float %2, float %32159  ret float %62160}2161 2162; Function Attrs: norecurse nounwind readnone2163define float @select_cc_u16_float(i16 zeroext %0, i16 zeroext %1, float %2, float %3) {2164; CHECK-LABEL: select_cc_u16_float:2165; CHECK:       # %bb.0:2166; CHECK-NEXT:    cmpu.w %s0, %s0, %s12167; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02168; CHECK-NEXT:    or %s0, 0, %s32169; CHECK-NEXT:    b.l.t (, %s10)2170  %5 = icmp eq i16 %0, %12171  %6 = select fast i1 %5, float %2, float %32172  ret float %62173}2174 2175; Function Attrs: norecurse nounwind readnone2176define float @select_cc_i32_float(i32 signext %0, i32 signext %1, float %2, float %3) {2177; CHECK-LABEL: select_cc_i32_float:2178; CHECK:       # %bb.0:2179; CHECK-NEXT:    cmpu.w %s0, %s0, %s12180; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02181; CHECK-NEXT:    or %s0, 0, %s32182; CHECK-NEXT:    b.l.t (, %s10)2183  %5 = icmp eq i32 %0, %12184  %6 = select fast i1 %5, float %2, float %32185  ret float %62186}2187 2188; Function Attrs: norecurse nounwind readnone2189define float @select_cc_u32_float(i32 zeroext %0, i32 zeroext %1, float %2, float %3) {2190; CHECK-LABEL: select_cc_u32_float:2191; CHECK:       # %bb.0:2192; CHECK-NEXT:    cmpu.w %s0, %s0, %s12193; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02194; CHECK-NEXT:    or %s0, 0, %s32195; CHECK-NEXT:    b.l.t (, %s10)2196  %5 = icmp eq i32 %0, %12197  %6 = select fast i1 %5, float %2, float %32198  ret float %62199}2200 2201; Function Attrs: norecurse nounwind readnone2202define float @select_cc_i64_float(i64 %0, i64 %1, float %2, float %3) {2203; CHECK-LABEL: select_cc_i64_float:2204; CHECK:       # %bb.0:2205; CHECK-NEXT:    cmpu.l %s0, %s0, %s12206; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s02207; CHECK-NEXT:    or %s0, 0, %s32208; CHECK-NEXT:    b.l.t (, %s10)2209  %5 = icmp eq i64 %0, %12210  %6 = select fast i1 %5, float %2, float %32211  ret float %62212}2213 2214; Function Attrs: norecurse nounwind readnone2215define float @select_cc_u64_float(i64 %0, i64 %1, float %2, float %3) {2216; CHECK-LABEL: select_cc_u64_float:2217; CHECK:       # %bb.0:2218; CHECK-NEXT:    cmpu.l %s0, %s0, %s12219; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s02220; CHECK-NEXT:    or %s0, 0, %s32221; CHECK-NEXT:    b.l.t (, %s10)2222  %5 = icmp eq i64 %0, %12223  %6 = select fast i1 %5, float %2, float %32224  ret float %62225}2226 2227; Function Attrs: norecurse nounwind readnone2228define float @select_cc_i128_float(i128 %0, i128 %1, float %2, float %3) {2229; CHECK-LABEL: select_cc_i128_float:2230; CHECK:       # %bb.0:2231; CHECK-NEXT:    xor %s1, %s1, %s32232; CHECK-NEXT:    xor %s0, %s0, %s22233; CHECK-NEXT:    or %s0, %s0, %s12234; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s02235; CHECK-NEXT:    or %s0, 0, %s52236; CHECK-NEXT:    b.l.t (, %s10)2237  %5 = icmp eq i128 %0, %12238  %6 = select fast i1 %5, float %2, float %32239  ret float %62240}2241 2242; Function Attrs: norecurse nounwind readnone2243define float @select_cc_u128_float(i128 %0, i128 %1, float %2, float %3) {2244; CHECK-LABEL: select_cc_u128_float:2245; CHECK:       # %bb.0:2246; CHECK-NEXT:    xor %s1, %s1, %s32247; CHECK-NEXT:    xor %s0, %s0, %s22248; CHECK-NEXT:    or %s0, %s0, %s12249; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s02250; CHECK-NEXT:    or %s0, 0, %s52251; CHECK-NEXT:    b.l.t (, %s10)2252  %5 = icmp eq i128 %0, %12253  %6 = select fast i1 %5, float %2, float %32254  ret float %62255}2256 2257; Function Attrs: norecurse nounwind readnone2258define float @select_cc_float_float(float %0, float %1, float %2, float %3) {2259; CHECK-LABEL: select_cc_float_float:2260; CHECK:       # %bb.0:2261; CHECK-NEXT:    fcmp.s %s0, %s0, %s12262; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s02263; CHECK-NEXT:    or %s0, 0, %s32264; CHECK-NEXT:    b.l.t (, %s10)2265  %5 = fcmp fast oeq float %0, %12266  %6 = select fast i1 %5, float %2, float %32267  ret float %62268}2269 2270; Function Attrs: norecurse nounwind readnone2271define float @select_cc_double_float(double %0, double %1, float %2, float %3) {2272; CHECK-LABEL: select_cc_double_float:2273; CHECK:       # %bb.0:2274; CHECK-NEXT:    fcmp.d %s0, %s0, %s12275; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s02276; CHECK-NEXT:    or %s0, 0, %s32277; CHECK-NEXT:    b.l.t (, %s10)2278  %5 = fcmp fast oeq double %0, %12279  %6 = select fast i1 %5, float %2, float %32280  ret float %62281}2282 2283; Function Attrs: norecurse nounwind readnone2284define float @select_cc_quad_float(fp128 %0, fp128 %1, float %2, float %3) {2285; CHECK-LABEL: select_cc_quad_float:2286; CHECK:       # %bb.0:2287; CHECK-NEXT:    fcmp.q %s0, %s0, %s22288; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s02289; CHECK-NEXT:    or %s0, 0, %s52290; CHECK-NEXT:    b.l.t (, %s10)2291  %5 = fcmp fast oeq fp128 %0, %12292  %6 = select fast i1 %5, float %2, float %32293  ret float %62294}2295 2296; Function Attrs: norecurse nounwind readnone2297define double @select_cc_i1_double(i1 zeroext %0, i1 zeroext %1, double %2, double %3) {2298; CHECK-LABEL: select_cc_i1_double:2299; CHECK:       # %bb.0:2300; CHECK-NEXT:    xor %s0, %s0, %s12301; CHECK-NEXT:    cmov.w.ne %s2, %s3, %s02302; CHECK-NEXT:    or %s0, 0, %s22303; CHECK-NEXT:    b.l.t (, %s10)2304  %5 = xor i1 %0, %12305  %6 = select fast i1 %5, double %3, double %22306  ret double %62307}2308 2309; Function Attrs: norecurse nounwind readnone2310define double @select_cc_i8_double(i8 signext %0, i8 signext %1, double %2, double %3) {2311; CHECK-LABEL: select_cc_i8_double:2312; CHECK:       # %bb.0:2313; CHECK-NEXT:    cmpu.w %s0, %s0, %s12314; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02315; CHECK-NEXT:    or %s0, 0, %s32316; CHECK-NEXT:    b.l.t (, %s10)2317  %5 = icmp eq i8 %0, %12318  %6 = select fast i1 %5, double %2, double %32319  ret double %62320}2321 2322; Function Attrs: norecurse nounwind readnone2323define double @select_cc_u8_double(i8 zeroext %0, i8 zeroext %1, double %2, double %3) {2324; CHECK-LABEL: select_cc_u8_double:2325; CHECK:       # %bb.0:2326; CHECK-NEXT:    cmpu.w %s0, %s0, %s12327; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02328; CHECK-NEXT:    or %s0, 0, %s32329; CHECK-NEXT:    b.l.t (, %s10)2330  %5 = icmp eq i8 %0, %12331  %6 = select fast i1 %5, double %2, double %32332  ret double %62333}2334 2335; Function Attrs: norecurse nounwind readnone2336define double @select_cc_i16_double(i16 signext %0, i16 signext %1, double %2, double %3) {2337; CHECK-LABEL: select_cc_i16_double:2338; CHECK:       # %bb.0:2339; CHECK-NEXT:    cmpu.w %s0, %s0, %s12340; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02341; CHECK-NEXT:    or %s0, 0, %s32342; CHECK-NEXT:    b.l.t (, %s10)2343  %5 = icmp eq i16 %0, %12344  %6 = select fast i1 %5, double %2, double %32345  ret double %62346}2347 2348; Function Attrs: norecurse nounwind readnone2349define double @select_cc_u16_double(i16 zeroext %0, i16 zeroext %1, double %2, double %3) {2350; CHECK-LABEL: select_cc_u16_double:2351; CHECK:       # %bb.0:2352; CHECK-NEXT:    cmpu.w %s0, %s0, %s12353; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02354; CHECK-NEXT:    or %s0, 0, %s32355; CHECK-NEXT:    b.l.t (, %s10)2356  %5 = icmp eq i16 %0, %12357  %6 = select fast i1 %5, double %2, double %32358  ret double %62359}2360 2361; Function Attrs: norecurse nounwind readnone2362define double @select_cc_i32_double(i32 signext %0, i32 signext %1, double %2, double %3) {2363; CHECK-LABEL: select_cc_i32_double:2364; CHECK:       # %bb.0:2365; CHECK-NEXT:    cmpu.w %s0, %s0, %s12366; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02367; CHECK-NEXT:    or %s0, 0, %s32368; CHECK-NEXT:    b.l.t (, %s10)2369  %5 = icmp eq i32 %0, %12370  %6 = select fast i1 %5, double %2, double %32371  ret double %62372}2373 2374; Function Attrs: norecurse nounwind readnone2375define double @select_cc_u32_double(i32 zeroext %0, i32 zeroext %1, double %2, double %3) {2376; CHECK-LABEL: select_cc_u32_double:2377; CHECK:       # %bb.0:2378; CHECK-NEXT:    cmpu.w %s0, %s0, %s12379; CHECK-NEXT:    cmov.w.eq %s3, %s2, %s02380; CHECK-NEXT:    or %s0, 0, %s32381; CHECK-NEXT:    b.l.t (, %s10)2382  %5 = icmp eq i32 %0, %12383  %6 = select fast i1 %5, double %2, double %32384  ret double %62385}2386 2387; Function Attrs: norecurse nounwind readnone2388define double @select_cc_i64_double(i64 %0, i64 %1, double %2, double %3) {2389; CHECK-LABEL: select_cc_i64_double:2390; CHECK:       # %bb.0:2391; CHECK-NEXT:    cmpu.l %s0, %s0, %s12392; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s02393; CHECK-NEXT:    or %s0, 0, %s32394; CHECK-NEXT:    b.l.t (, %s10)2395  %5 = icmp eq i64 %0, %12396  %6 = select fast i1 %5, double %2, double %32397  ret double %62398}2399 2400; Function Attrs: norecurse nounwind readnone2401define double @select_cc_u64_double(i64 %0, i64 %1, double %2, double %3) {2402; CHECK-LABEL: select_cc_u64_double:2403; CHECK:       # %bb.0:2404; CHECK-NEXT:    cmpu.l %s0, %s0, %s12405; CHECK-NEXT:    cmov.l.eq %s3, %s2, %s02406; CHECK-NEXT:    or %s0, 0, %s32407; CHECK-NEXT:    b.l.t (, %s10)2408  %5 = icmp eq i64 %0, %12409  %6 = select fast i1 %5, double %2, double %32410  ret double %62411}2412 2413; Function Attrs: norecurse nounwind readnone2414define double @select_cc_i128_double(i128 %0, i128 %1, double %2, double %3) {2415; CHECK-LABEL: select_cc_i128_double:2416; CHECK:       # %bb.0:2417; CHECK-NEXT:    xor %s1, %s1, %s32418; CHECK-NEXT:    xor %s0, %s0, %s22419; CHECK-NEXT:    or %s0, %s0, %s12420; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s02421; CHECK-NEXT:    or %s0, 0, %s52422; CHECK-NEXT:    b.l.t (, %s10)2423  %5 = icmp eq i128 %0, %12424  %6 = select fast i1 %5, double %2, double %32425  ret double %62426}2427 2428; Function Attrs: norecurse nounwind readnone2429define double @select_cc_u128_double(i128 %0, i128 %1, double %2, double %3) {2430; CHECK-LABEL: select_cc_u128_double:2431; CHECK:       # %bb.0:2432; CHECK-NEXT:    xor %s1, %s1, %s32433; CHECK-NEXT:    xor %s0, %s0, %s22434; CHECK-NEXT:    or %s0, %s0, %s12435; CHECK-NEXT:    cmov.l.eq %s5, %s4, %s02436; CHECK-NEXT:    or %s0, 0, %s52437; CHECK-NEXT:    b.l.t (, %s10)2438  %5 = icmp eq i128 %0, %12439  %6 = select fast i1 %5, double %2, double %32440  ret double %62441}2442 2443; Function Attrs: norecurse nounwind readnone2444define double @select_cc_float_double(float %0, float %1, double %2, double %3) {2445; CHECK-LABEL: select_cc_float_double:2446; CHECK:       # %bb.0:2447; CHECK-NEXT:    fcmp.s %s0, %s0, %s12448; CHECK-NEXT:    cmov.s.eq %s3, %s2, %s02449; CHECK-NEXT:    or %s0, 0, %s32450; CHECK-NEXT:    b.l.t (, %s10)2451  %5 = fcmp fast oeq float %0, %12452  %6 = select fast i1 %5, double %2, double %32453  ret double %62454}2455 2456; Function Attrs: norecurse nounwind readnone2457define double @select_cc_double_double(double %0, double %1, double %2, double %3) {2458; CHECK-LABEL: select_cc_double_double:2459; CHECK:       # %bb.0:2460; CHECK-NEXT:    fcmp.d %s0, %s0, %s12461; CHECK-NEXT:    cmov.d.eq %s3, %s2, %s02462; CHECK-NEXT:    or %s0, 0, %s32463; CHECK-NEXT:    b.l.t (, %s10)2464  %5 = fcmp fast oeq double %0, %12465  %6 = select fast i1 %5, double %2, double %32466  ret double %62467}2468 2469; Function Attrs: norecurse nounwind readnone2470define double @select_cc_quad_double(fp128 %0, fp128 %1, double %2, double %3) {2471; CHECK-LABEL: select_cc_quad_double:2472; CHECK:       # %bb.0:2473; CHECK-NEXT:    fcmp.q %s0, %s0, %s22474; CHECK-NEXT:    cmov.d.eq %s5, %s4, %s02475; CHECK-NEXT:    or %s0, 0, %s52476; CHECK-NEXT:    b.l.t (, %s10)2477  %5 = fcmp fast oeq fp128 %0, %12478  %6 = select fast i1 %5, double %2, double %32479  ret double %62480}2481 2482; Function Attrs: norecurse nounwind readnone2483define fp128 @select_cc_i1_quad(i1 zeroext %0, i1 zeroext %1, fp128 %2, fp128 %3) {2484; CHECK-LABEL: select_cc_i1_quad:2485; CHECK:       # %bb.0:2486; CHECK-NEXT:    xor %s0, %s0, %s12487; CHECK-NEXT:    cmov.w.ne %s2, %s4, %s02488; CHECK-NEXT:    cmov.w.ne %s3, %s5, %s02489; CHECK-NEXT:    or %s0, 0, %s22490; CHECK-NEXT:    or %s1, 0, %s32491; CHECK-NEXT:    b.l.t (, %s10)2492  %5 = xor i1 %0, %12493  %6 = select fast i1 %5, fp128 %3, fp128 %22494  ret fp128 %62495}2496 2497; Function Attrs: norecurse nounwind readnone2498define fp128 @select_cc_i8_quad(i8 signext %0, i8 signext %1, fp128 %2, fp128 %3) {2499; CHECK-LABEL: select_cc_i8_quad:2500; CHECK:       # %bb.0:2501; CHECK-NEXT:    cmpu.w %s0, %s0, %s12502; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02503; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02504; CHECK-NEXT:    or %s0, 0, %s42505; CHECK-NEXT:    or %s1, 0, %s52506; CHECK-NEXT:    b.l.t (, %s10)2507  %5 = icmp eq i8 %0, %12508  %6 = select fast i1 %5, fp128 %2, fp128 %32509  ret fp128 %62510}2511 2512; Function Attrs: norecurse nounwind readnone2513define fp128 @select_cc_u8_quad(i8 zeroext %0, i8 zeroext %1, fp128 %2, fp128 %3) {2514; CHECK-LABEL: select_cc_u8_quad:2515; CHECK:       # %bb.0:2516; CHECK-NEXT:    cmpu.w %s0, %s0, %s12517; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02518; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02519; CHECK-NEXT:    or %s0, 0, %s42520; CHECK-NEXT:    or %s1, 0, %s52521; CHECK-NEXT:    b.l.t (, %s10)2522  %5 = icmp eq i8 %0, %12523  %6 = select fast i1 %5, fp128 %2, fp128 %32524  ret fp128 %62525}2526 2527; Function Attrs: norecurse nounwind readnone2528define fp128 @select_cc_i16_quad(i16 signext %0, i16 signext %1, fp128 %2, fp128 %3) {2529; CHECK-LABEL: select_cc_i16_quad:2530; CHECK:       # %bb.0:2531; CHECK-NEXT:    cmpu.w %s0, %s0, %s12532; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02533; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02534; CHECK-NEXT:    or %s0, 0, %s42535; CHECK-NEXT:    or %s1, 0, %s52536; CHECK-NEXT:    b.l.t (, %s10)2537  %5 = icmp eq i16 %0, %12538  %6 = select fast i1 %5, fp128 %2, fp128 %32539  ret fp128 %62540}2541 2542; Function Attrs: norecurse nounwind readnone2543define fp128 @select_cc_u16_quad(i16 zeroext %0, i16 zeroext %1, fp128 %2, fp128 %3) {2544; CHECK-LABEL: select_cc_u16_quad:2545; CHECK:       # %bb.0:2546; CHECK-NEXT:    cmpu.w %s0, %s0, %s12547; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02548; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02549; CHECK-NEXT:    or %s0, 0, %s42550; CHECK-NEXT:    or %s1, 0, %s52551; CHECK-NEXT:    b.l.t (, %s10)2552  %5 = icmp eq i16 %0, %12553  %6 = select fast i1 %5, fp128 %2, fp128 %32554  ret fp128 %62555}2556 2557; Function Attrs: norecurse nounwind readnone2558define fp128 @select_cc_i32_quad(i32 signext %0, i32 signext %1, fp128 %2, fp128 %3) {2559; CHECK-LABEL: select_cc_i32_quad:2560; CHECK:       # %bb.0:2561; CHECK-NEXT:    cmpu.w %s0, %s0, %s12562; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02563; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02564; CHECK-NEXT:    or %s0, 0, %s42565; CHECK-NEXT:    or %s1, 0, %s52566; CHECK-NEXT:    b.l.t (, %s10)2567  %5 = icmp eq i32 %0, %12568  %6 = select fast i1 %5, fp128 %2, fp128 %32569  ret fp128 %62570}2571 2572; Function Attrs: norecurse nounwind readnone2573define fp128 @select_cc_u32_quad(i32 zeroext %0, i32 zeroext %1, fp128 %2, fp128 %3) {2574; CHECK-LABEL: select_cc_u32_quad:2575; CHECK:       # %bb.0:2576; CHECK-NEXT:    cmpu.w %s0, %s0, %s12577; CHECK-NEXT:    cmov.w.eq %s4, %s2, %s02578; CHECK-NEXT:    cmov.w.eq %s5, %s3, %s02579; CHECK-NEXT:    or %s0, 0, %s42580; CHECK-NEXT:    or %s1, 0, %s52581; CHECK-NEXT:    b.l.t (, %s10)2582  %5 = icmp eq i32 %0, %12583  %6 = select fast i1 %5, fp128 %2, fp128 %32584  ret fp128 %62585}2586 2587; Function Attrs: norecurse nounwind readnone2588define fp128 @select_cc_i64_quad(i64 %0, i64 %1, fp128 %2, fp128 %3) {2589; CHECK-LABEL: select_cc_i64_quad:2590; CHECK:       # %bb.0:2591; CHECK-NEXT:    cmpu.l %s0, %s0, %s12592; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s02593; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s02594; CHECK-NEXT:    or %s0, 0, %s42595; CHECK-NEXT:    or %s1, 0, %s52596; CHECK-NEXT:    b.l.t (, %s10)2597  %5 = icmp eq i64 %0, %12598  %6 = select fast i1 %5, fp128 %2, fp128 %32599  ret fp128 %62600}2601 2602; Function Attrs: norecurse nounwind readnone2603define fp128 @select_cc_u64_quad(i64 %0, i64 %1, fp128 %2, fp128 %3) {2604; CHECK-LABEL: select_cc_u64_quad:2605; CHECK:       # %bb.0:2606; CHECK-NEXT:    cmpu.l %s0, %s0, %s12607; CHECK-NEXT:    cmov.l.eq %s4, %s2, %s02608; CHECK-NEXT:    cmov.l.eq %s5, %s3, %s02609; CHECK-NEXT:    or %s0, 0, %s42610; CHECK-NEXT:    or %s1, 0, %s52611; CHECK-NEXT:    b.l.t (, %s10)2612  %5 = icmp eq i64 %0, %12613  %6 = select fast i1 %5, fp128 %2, fp128 %32614  ret fp128 %62615}2616 2617; Function Attrs: norecurse nounwind readnone2618define fp128 @select_cc_i128_quad(i128 %0, i128 %1, fp128 %2, fp128 %3) {2619; CHECK-LABEL: select_cc_i128_quad:2620; CHECK:       # %bb.0:2621; CHECK-NEXT:    xor %s1, %s1, %s32622; CHECK-NEXT:    xor %s0, %s0, %s22623; CHECK-NEXT:    or %s0, %s0, %s12624; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s02625; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s02626; CHECK-NEXT:    or %s0, 0, %s62627; CHECK-NEXT:    or %s1, 0, %s72628; CHECK-NEXT:    b.l.t (, %s10)2629  %5 = icmp eq i128 %0, %12630  %6 = select fast i1 %5, fp128 %2, fp128 %32631  ret fp128 %62632}2633 2634; Function Attrs: norecurse nounwind readnone2635define fp128 @select_cc_u128_quad(i128 %0, i128 %1, fp128 %2, fp128 %3) {2636; CHECK-LABEL: select_cc_u128_quad:2637; CHECK:       # %bb.0:2638; CHECK-NEXT:    xor %s1, %s1, %s32639; CHECK-NEXT:    xor %s0, %s0, %s22640; CHECK-NEXT:    or %s0, %s0, %s12641; CHECK-NEXT:    cmov.l.eq %s6, %s4, %s02642; CHECK-NEXT:    cmov.l.eq %s7, %s5, %s02643; CHECK-NEXT:    or %s0, 0, %s62644; CHECK-NEXT:    or %s1, 0, %s72645; CHECK-NEXT:    b.l.t (, %s10)2646  %5 = icmp eq i128 %0, %12647  %6 = select fast i1 %5, fp128 %2, fp128 %32648  ret fp128 %62649}2650 2651; Function Attrs: norecurse nounwind readnone2652define fp128 @select_cc_float_quad(float %0, float %1, fp128 %2, fp128 %3) {2653; CHECK-LABEL: select_cc_float_quad:2654; CHECK:       # %bb.0:2655; CHECK-NEXT:    fcmp.s %s0, %s0, %s12656; CHECK-NEXT:    cmov.s.eq %s4, %s2, %s02657; CHECK-NEXT:    cmov.s.eq %s5, %s3, %s02658; CHECK-NEXT:    or %s0, 0, %s42659; CHECK-NEXT:    or %s1, 0, %s52660; CHECK-NEXT:    b.l.t (, %s10)2661  %5 = fcmp fast oeq float %0, %12662  %6 = select fast i1 %5, fp128 %2, fp128 %32663  ret fp128 %62664}2665 2666; Function Attrs: norecurse nounwind readnone2667define fp128 @select_cc_double_quad(double %0, double %1, fp128 %2, fp128 %3) {2668; CHECK-LABEL: select_cc_double_quad:2669; CHECK:       # %bb.0:2670; CHECK-NEXT:    fcmp.d %s0, %s0, %s12671; CHECK-NEXT:    cmov.d.eq %s4, %s2, %s02672; CHECK-NEXT:    cmov.d.eq %s5, %s3, %s02673; CHECK-NEXT:    or %s0, 0, %s42674; CHECK-NEXT:    or %s1, 0, %s52675; CHECK-NEXT:    b.l.t (, %s10)2676  %5 = fcmp fast oeq double %0, %12677  %6 = select fast i1 %5, fp128 %2, fp128 %32678  ret fp128 %62679}2680 2681; Function Attrs: norecurse nounwind readnone2682define fp128 @select_cc_quad_quad(fp128 %0, fp128 %1, fp128 %2, fp128 %3) {2683; CHECK-LABEL: select_cc_quad_quad:2684; CHECK:       # %bb.0:2685; CHECK-NEXT:    fcmp.q %s0, %s0, %s22686; CHECK-NEXT:    cmov.d.eq %s6, %s4, %s02687; CHECK-NEXT:    cmov.d.eq %s7, %s5, %s02688; CHECK-NEXT:    or %s0, 0, %s62689; CHECK-NEXT:    or %s1, 0, %s72690; CHECK-NEXT:    b.l.t (, %s10)2691  %5 = fcmp fast oeq fp128 %0, %12692  %6 = select fast i1 %5, fp128 %2, fp128 %32693  ret fp128 %62694}2695