2001 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -ppc-reduce-cr-logicals -verify-machineinstrs -tail-dup-placement=false < %s | FileCheck %s3; RUN: llc -ppc-reduce-cr-logicals -verify-machineinstrs \4; RUN: -mattr=-isel < %s | FileCheck --check-prefix=CHECK-NO-ISEL %s5target datalayout = "E-m:e-i64:64-n32:64"6target triple = "powerpc64-unknown-linux-gnu"7 8; FIXME: We should check the operands to the cr* logical operation itself, but9; unfortunately, FileCheck does not yet understand how to do arithmetic, so we10; can't do so without introducing a register-allocation dependency.11 12define signext i32 @testi32slt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {13; CHECK-LABEL: testi32slt:14; CHECK: # %bb.0: # %entry15; CHECK-NEXT: cmpw 5, 616; CHECK-NEXT: cmpw 1, 3, 417; CHECK-NEXT: crandc 20, 6, 218; CHECK-NEXT: isel 3, 7, 8, 2019; CHECK-NEXT: blr20;21; CHECK-NO-ISEL-LABEL: testi32slt:22; CHECK-NO-ISEL: # %bb.0: # %entry23; CHECK-NO-ISEL-NEXT: cmpw 5, 624; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB0_325; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry26; CHECK-NO-ISEL-NEXT: cmpw 3, 427; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB0_328; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry29; CHECK-NO-ISEL-NEXT: mr 3, 730; CHECK-NO-ISEL-NEXT: blr31; CHECK-NO-ISEL-NEXT: .LBB0_3: # %entry32; CHECK-NO-ISEL-NEXT: mr 7, 833; CHECK-NO-ISEL-NEXT: mr 3, 734; CHECK-NO-ISEL-NEXT: blr35entry:36 %cmp1 = icmp eq i32 %c3, %c437 %cmp3tmp = icmp eq i32 %c1, %c238 %cmp3 = icmp slt i1 %cmp3tmp, %cmp139 %cond = select i1 %cmp3, i32 %a1, i32 %a240 ret i32 %cond41 42}43 44define signext i32 @testi32ult(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {45; CHECK-LABEL: testi32ult:46; CHECK: # %bb.0: # %entry47; CHECK-NEXT: cmpw 5, 648; CHECK-NEXT: cmpw 1, 3, 449; CHECK-NEXT: crandc 20, 2, 650; CHECK-NEXT: isel 3, 7, 8, 2051; CHECK-NEXT: blr52;53; CHECK-NO-ISEL-LABEL: testi32ult:54; CHECK-NO-ISEL: # %bb.0: # %entry55; CHECK-NO-ISEL-NEXT: cmpw 5, 656; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB1_357; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry58; CHECK-NO-ISEL-NEXT: cmpw 3, 459; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB1_360; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry61; CHECK-NO-ISEL-NEXT: mr 3, 762; CHECK-NO-ISEL-NEXT: blr63; CHECK-NO-ISEL-NEXT: .LBB1_3: # %entry64; CHECK-NO-ISEL-NEXT: mr 7, 865; CHECK-NO-ISEL-NEXT: mr 3, 766; CHECK-NO-ISEL-NEXT: blr67entry:68 %cmp1 = icmp eq i32 %c3, %c469 %cmp3tmp = icmp eq i32 %c1, %c270 %cmp3 = icmp ult i1 %cmp3tmp, %cmp171 %cond = select i1 %cmp3, i32 %a1, i32 %a272 ret i32 %cond73 74}75 76define signext i32 @testi32sle(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {77; CHECK-LABEL: testi32sle:78; CHECK: # %bb.0: # %entry79; CHECK-NEXT: cmpw 5, 680; CHECK-NEXT: cmpw 1, 3, 481; CHECK-NEXT: crorc 20, 6, 282; CHECK-NEXT: isel 3, 7, 8, 2083; CHECK-NEXT: blr84;85; CHECK-NO-ISEL-LABEL: testi32sle:86; CHECK-NO-ISEL: # %bb.0: # %entry87; CHECK-NO-ISEL-NEXT: cmpw 5, 688; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB2_389; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry90; CHECK-NO-ISEL-NEXT: cmpw 3, 491; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB2_392; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry93; CHECK-NO-ISEL-NEXT: mr 7, 894; CHECK-NO-ISEL-NEXT: .LBB2_3: # %entry95; CHECK-NO-ISEL-NEXT: mr 3, 796; CHECK-NO-ISEL-NEXT: blr97entry:98 %cmp1 = icmp eq i32 %c3, %c499 %cmp3tmp = icmp eq i32 %c1, %c2100 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1101 %cond = select i1 %cmp3, i32 %a1, i32 %a2102 ret i32 %cond103 104}105 106define signext i32 @testi32ule(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {107; CHECK-LABEL: testi32ule:108; CHECK: # %bb.0: # %entry109; CHECK-NEXT: cmpw 5, 6110; CHECK-NEXT: cmpw 1, 3, 4111; CHECK-NEXT: crorc 20, 2, 6112; CHECK-NEXT: isel 3, 7, 8, 20113; CHECK-NEXT: blr114;115; CHECK-NO-ISEL-LABEL: testi32ule:116; CHECK-NO-ISEL: # %bb.0: # %entry117; CHECK-NO-ISEL-NEXT: cmpw 5, 6118; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB3_3119; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry120; CHECK-NO-ISEL-NEXT: cmpw 3, 4121; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB3_3122; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry123; CHECK-NO-ISEL-NEXT: mr 7, 8124; CHECK-NO-ISEL-NEXT: .LBB3_3: # %entry125; CHECK-NO-ISEL-NEXT: mr 3, 7126; CHECK-NO-ISEL-NEXT: blr127entry:128 %cmp1 = icmp eq i32 %c3, %c4129 %cmp3tmp = icmp eq i32 %c1, %c2130 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1131 %cond = select i1 %cmp3, i32 %a1, i32 %a2132 ret i32 %cond133 134}135 136define signext i32 @testi32eq(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {137; CHECK-LABEL: testi32eq:138; CHECK: # %bb.0: # %entry139; CHECK-NEXT: cmpw 5, 6140; CHECK-NEXT: cmpw 1, 3, 4141; CHECK-NEXT: creqv 20, 6, 2142; CHECK-NEXT: isel 3, 7, 8, 20143; CHECK-NEXT: blr144;145; CHECK-NO-ISEL-LABEL: testi32eq:146; CHECK-NO-ISEL: # %bb.0: # %entry147; CHECK-NO-ISEL-NEXT: cmpw 5, 6148; CHECK-NO-ISEL-NEXT: cmpw 1, 3, 4149; CHECK-NO-ISEL-NEXT: creqv 20, 6, 2150; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB4_2151; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry152; CHECK-NO-ISEL-NEXT: mr 7, 8153; CHECK-NO-ISEL-NEXT: .LBB4_2: # %entry154; CHECK-NO-ISEL-NEXT: mr 3, 7155; CHECK-NO-ISEL-NEXT: blr156entry:157 %cmp1 = icmp eq i32 %c3, %c4158 %cmp3tmp = icmp eq i32 %c1, %c2159 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1160 %cond = select i1 %cmp3, i32 %a1, i32 %a2161 ret i32 %cond162 163}164 165define signext i32 @testi32sge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {166; CHECK-LABEL: testi32sge:167; CHECK: # %bb.0: # %entry168; CHECK-NEXT: cmpw 5, 6169; CHECK-NEXT: cmpw 1, 3, 4170; CHECK-NEXT: crorc 20, 2, 6171; CHECK-NEXT: isel 3, 7, 8, 20172; CHECK-NEXT: blr173;174; CHECK-NO-ISEL-LABEL: testi32sge:175; CHECK-NO-ISEL: # %bb.0: # %entry176; CHECK-NO-ISEL-NEXT: cmpw 5, 6177; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB5_3178; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry179; CHECK-NO-ISEL-NEXT: cmpw 3, 4180; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB5_3181; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry182; CHECK-NO-ISEL-NEXT: mr 7, 8183; CHECK-NO-ISEL-NEXT: .LBB5_3: # %entry184; CHECK-NO-ISEL-NEXT: mr 3, 7185; CHECK-NO-ISEL-NEXT: blr186entry:187 %cmp1 = icmp eq i32 %c3, %c4188 %cmp3tmp = icmp eq i32 %c1, %c2189 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1190 %cond = select i1 %cmp3, i32 %a1, i32 %a2191 ret i32 %cond192 193}194 195define signext i32 @testi32uge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {196; CHECK-LABEL: testi32uge:197; CHECK: # %bb.0: # %entry198; CHECK-NEXT: cmpw 5, 6199; CHECK-NEXT: cmpw 1, 3, 4200; CHECK-NEXT: crorc 20, 6, 2201; CHECK-NEXT: isel 3, 7, 8, 20202; CHECK-NEXT: blr203;204; CHECK-NO-ISEL-LABEL: testi32uge:205; CHECK-NO-ISEL: # %bb.0: # %entry206; CHECK-NO-ISEL-NEXT: cmpw 5, 6207; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB6_3208; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry209; CHECK-NO-ISEL-NEXT: cmpw 3, 4210; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB6_3211; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry212; CHECK-NO-ISEL-NEXT: mr 7, 8213; CHECK-NO-ISEL-NEXT: .LBB6_3: # %entry214; CHECK-NO-ISEL-NEXT: mr 3, 7215; CHECK-NO-ISEL-NEXT: blr216entry:217 %cmp1 = icmp eq i32 %c3, %c4218 %cmp3tmp = icmp eq i32 %c1, %c2219 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1220 %cond = select i1 %cmp3, i32 %a1, i32 %a2221 ret i32 %cond222 223}224 225define signext i32 @testi32sgt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {226; CHECK-LABEL: testi32sgt:227; CHECK: # %bb.0: # %entry228; CHECK-NEXT: cmpw 5, 6229; CHECK-NEXT: cmpw 1, 3, 4230; CHECK-NEXT: crandc 20, 2, 6231; CHECK-NEXT: isel 3, 7, 8, 20232; CHECK-NEXT: blr233;234; CHECK-NO-ISEL-LABEL: testi32sgt:235; CHECK-NO-ISEL: # %bb.0: # %entry236; CHECK-NO-ISEL-NEXT: cmpw 5, 6237; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB7_3238; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry239; CHECK-NO-ISEL-NEXT: cmpw 3, 4240; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB7_3241; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry242; CHECK-NO-ISEL-NEXT: mr 3, 7243; CHECK-NO-ISEL-NEXT: blr244; CHECK-NO-ISEL-NEXT: .LBB7_3: # %entry245; CHECK-NO-ISEL-NEXT: mr 7, 8246; CHECK-NO-ISEL-NEXT: mr 3, 7247; CHECK-NO-ISEL-NEXT: blr248entry:249 %cmp1 = icmp eq i32 %c3, %c4250 %cmp3tmp = icmp eq i32 %c1, %c2251 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1252 %cond = select i1 %cmp3, i32 %a1, i32 %a2253 ret i32 %cond254 255}256 257define signext i32 @testi32ugt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {258; CHECK-LABEL: testi32ugt:259; CHECK: # %bb.0: # %entry260; CHECK-NEXT: cmpw 5, 6261; CHECK-NEXT: cmpw 1, 3, 4262; CHECK-NEXT: crandc 20, 6, 2263; CHECK-NEXT: isel 3, 7, 8, 20264; CHECK-NEXT: blr265;266; CHECK-NO-ISEL-LABEL: testi32ugt:267; CHECK-NO-ISEL: # %bb.0: # %entry268; CHECK-NO-ISEL-NEXT: cmpw 5, 6269; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB8_3270; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry271; CHECK-NO-ISEL-NEXT: cmpw 3, 4272; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB8_3273; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry274; CHECK-NO-ISEL-NEXT: mr 3, 7275; CHECK-NO-ISEL-NEXT: blr276; CHECK-NO-ISEL-NEXT: .LBB8_3: # %entry277; CHECK-NO-ISEL-NEXT: mr 7, 8278; CHECK-NO-ISEL-NEXT: mr 3, 7279; CHECK-NO-ISEL-NEXT: blr280entry:281 %cmp1 = icmp eq i32 %c3, %c4282 %cmp3tmp = icmp eq i32 %c1, %c2283 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1284 %cond = select i1 %cmp3, i32 %a1, i32 %a2285 ret i32 %cond286 287}288 289define signext i32 @testi32ne(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {290; CHECK-LABEL: testi32ne:291; CHECK: # %bb.0: # %entry292; CHECK-NEXT: cmpw 5, 6293; CHECK-NEXT: cmpw 1, 3, 4294; CHECK-NEXT: crxor 20, 6, 2295; CHECK-NEXT: isel 3, 7, 8, 20296; CHECK-NEXT: blr297;298; CHECK-NO-ISEL-LABEL: testi32ne:299; CHECK-NO-ISEL: # %bb.0: # %entry300; CHECK-NO-ISEL-NEXT: cmpw 5, 6301; CHECK-NO-ISEL-NEXT: cmpw 1, 3, 4302; CHECK-NO-ISEL-NEXT: crxor 20, 6, 2303; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB9_2304; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry305; CHECK-NO-ISEL-NEXT: mr 7, 8306; CHECK-NO-ISEL-NEXT: .LBB9_2: # %entry307; CHECK-NO-ISEL-NEXT: mr 3, 7308; CHECK-NO-ISEL-NEXT: blr309entry:310 %cmp1 = icmp eq i32 %c3, %c4311 %cmp3tmp = icmp eq i32 %c1, %c2312 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1313 %cond = select i1 %cmp3, i32 %a1, i32 %a2314 ret i32 %cond315 316}317 318define i64 @testi64slt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {319; CHECK-LABEL: testi64slt:320; CHECK: # %bb.0: # %entry321; CHECK-NEXT: cmpd 5, 6322; CHECK-NEXT: cmpd 1, 3, 4323; CHECK-NEXT: crandc 20, 6, 2324; CHECK-NEXT: isel 3, 7, 8, 20325; CHECK-NEXT: blr326;327; CHECK-NO-ISEL-LABEL: testi64slt:328; CHECK-NO-ISEL: # %bb.0: # %entry329; CHECK-NO-ISEL-NEXT: cmpd 5, 6330; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB10_3331; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry332; CHECK-NO-ISEL-NEXT: cmpd 3, 4333; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB10_3334; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry335; CHECK-NO-ISEL-NEXT: mr 3, 7336; CHECK-NO-ISEL-NEXT: blr337; CHECK-NO-ISEL-NEXT: .LBB10_3: # %entry338; CHECK-NO-ISEL-NEXT: mr 7, 8339; CHECK-NO-ISEL-NEXT: mr 3, 7340; CHECK-NO-ISEL-NEXT: blr341entry:342 %cmp1 = icmp eq i64 %c3, %c4343 %cmp3tmp = icmp eq i64 %c1, %c2344 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1345 %cond = select i1 %cmp3, i64 %a1, i64 %a2346 ret i64 %cond347 348}349 350define i64 @testi64ult(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {351; CHECK-LABEL: testi64ult:352; CHECK: # %bb.0: # %entry353; CHECK-NEXT: cmpd 5, 6354; CHECK-NEXT: cmpd 1, 3, 4355; CHECK-NEXT: crandc 20, 2, 6356; CHECK-NEXT: isel 3, 7, 8, 20357; CHECK-NEXT: blr358;359; CHECK-NO-ISEL-LABEL: testi64ult:360; CHECK-NO-ISEL: # %bb.0: # %entry361; CHECK-NO-ISEL-NEXT: cmpd 5, 6362; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB11_3363; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry364; CHECK-NO-ISEL-NEXT: cmpd 3, 4365; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB11_3366; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry367; CHECK-NO-ISEL-NEXT: mr 3, 7368; CHECK-NO-ISEL-NEXT: blr369; CHECK-NO-ISEL-NEXT: .LBB11_3: # %entry370; CHECK-NO-ISEL-NEXT: mr 7, 8371; CHECK-NO-ISEL-NEXT: mr 3, 7372; CHECK-NO-ISEL-NEXT: blr373entry:374 %cmp1 = icmp eq i64 %c3, %c4375 %cmp3tmp = icmp eq i64 %c1, %c2376 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1377 %cond = select i1 %cmp3, i64 %a1, i64 %a2378 ret i64 %cond379 380}381 382define i64 @testi64sle(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {383; CHECK-LABEL: testi64sle:384; CHECK: # %bb.0: # %entry385; CHECK-NEXT: cmpd 5, 6386; CHECK-NEXT: cmpd 1, 3, 4387; CHECK-NEXT: crorc 20, 6, 2388; CHECK-NEXT: isel 3, 7, 8, 20389; CHECK-NEXT: blr390;391; CHECK-NO-ISEL-LABEL: testi64sle:392; CHECK-NO-ISEL: # %bb.0: # %entry393; CHECK-NO-ISEL-NEXT: cmpd 5, 6394; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB12_3395; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry396; CHECK-NO-ISEL-NEXT: cmpd 3, 4397; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB12_3398; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry399; CHECK-NO-ISEL-NEXT: mr 7, 8400; CHECK-NO-ISEL-NEXT: .LBB12_3: # %entry401; CHECK-NO-ISEL-NEXT: mr 3, 7402; CHECK-NO-ISEL-NEXT: blr403entry:404 %cmp1 = icmp eq i64 %c3, %c4405 %cmp3tmp = icmp eq i64 %c1, %c2406 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1407 %cond = select i1 %cmp3, i64 %a1, i64 %a2408 ret i64 %cond409 410}411 412define i64 @testi64ule(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {413; CHECK-LABEL: testi64ule:414; CHECK: # %bb.0: # %entry415; CHECK-NEXT: cmpd 5, 6416; CHECK-NEXT: cmpd 1, 3, 4417; CHECK-NEXT: crorc 20, 2, 6418; CHECK-NEXT: isel 3, 7, 8, 20419; CHECK-NEXT: blr420;421; CHECK-NO-ISEL-LABEL: testi64ule:422; CHECK-NO-ISEL: # %bb.0: # %entry423; CHECK-NO-ISEL-NEXT: cmpd 5, 6424; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB13_3425; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry426; CHECK-NO-ISEL-NEXT: cmpd 3, 4427; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB13_3428; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry429; CHECK-NO-ISEL-NEXT: mr 7, 8430; CHECK-NO-ISEL-NEXT: .LBB13_3: # %entry431; CHECK-NO-ISEL-NEXT: mr 3, 7432; CHECK-NO-ISEL-NEXT: blr433entry:434 %cmp1 = icmp eq i64 %c3, %c4435 %cmp3tmp = icmp eq i64 %c1, %c2436 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1437 %cond = select i1 %cmp3, i64 %a1, i64 %a2438 ret i64 %cond439 440}441 442define i64 @testi64eq(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {443; CHECK-LABEL: testi64eq:444; CHECK: # %bb.0: # %entry445; CHECK-NEXT: cmpd 5, 6446; CHECK-NEXT: cmpd 1, 3, 4447; CHECK-NEXT: creqv 20, 6, 2448; CHECK-NEXT: isel 3, 7, 8, 20449; CHECK-NEXT: blr450;451; CHECK-NO-ISEL-LABEL: testi64eq:452; CHECK-NO-ISEL: # %bb.0: # %entry453; CHECK-NO-ISEL-NEXT: cmpd 5, 6454; CHECK-NO-ISEL-NEXT: cmpd 1, 3, 4455; CHECK-NO-ISEL-NEXT: creqv 20, 6, 2456; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB14_2457; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry458; CHECK-NO-ISEL-NEXT: mr 7, 8459; CHECK-NO-ISEL-NEXT: .LBB14_2: # %entry460; CHECK-NO-ISEL-NEXT: mr 3, 7461; CHECK-NO-ISEL-NEXT: blr462entry:463 %cmp1 = icmp eq i64 %c3, %c4464 %cmp3tmp = icmp eq i64 %c1, %c2465 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1466 %cond = select i1 %cmp3, i64 %a1, i64 %a2467 ret i64 %cond468 469}470 471define i64 @testi64sge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {472; CHECK-LABEL: testi64sge:473; CHECK: # %bb.0: # %entry474; CHECK-NEXT: cmpd 5, 6475; CHECK-NEXT: cmpd 1, 3, 4476; CHECK-NEXT: crorc 20, 2, 6477; CHECK-NEXT: isel 3, 7, 8, 20478; CHECK-NEXT: blr479;480; CHECK-NO-ISEL-LABEL: testi64sge:481; CHECK-NO-ISEL: # %bb.0: # %entry482; CHECK-NO-ISEL-NEXT: cmpd 5, 6483; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB15_3484; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry485; CHECK-NO-ISEL-NEXT: cmpd 3, 4486; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB15_3487; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry488; CHECK-NO-ISEL-NEXT: mr 7, 8489; CHECK-NO-ISEL-NEXT: .LBB15_3: # %entry490; CHECK-NO-ISEL-NEXT: mr 3, 7491; CHECK-NO-ISEL-NEXT: blr492entry:493 %cmp1 = icmp eq i64 %c3, %c4494 %cmp3tmp = icmp eq i64 %c1, %c2495 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1496 %cond = select i1 %cmp3, i64 %a1, i64 %a2497 ret i64 %cond498 499}500 501define i64 @testi64uge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {502; CHECK-LABEL: testi64uge:503; CHECK: # %bb.0: # %entry504; CHECK-NEXT: cmpd 5, 6505; CHECK-NEXT: cmpd 1, 3, 4506; CHECK-NEXT: crorc 20, 6, 2507; CHECK-NEXT: isel 3, 7, 8, 20508; CHECK-NEXT: blr509;510; CHECK-NO-ISEL-LABEL: testi64uge:511; CHECK-NO-ISEL: # %bb.0: # %entry512; CHECK-NO-ISEL-NEXT: cmpd 5, 6513; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB16_3514; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry515; CHECK-NO-ISEL-NEXT: cmpd 3, 4516; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB16_3517; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry518; CHECK-NO-ISEL-NEXT: mr 7, 8519; CHECK-NO-ISEL-NEXT: .LBB16_3: # %entry520; CHECK-NO-ISEL-NEXT: mr 3, 7521; CHECK-NO-ISEL-NEXT: blr522entry:523 %cmp1 = icmp eq i64 %c3, %c4524 %cmp3tmp = icmp eq i64 %c1, %c2525 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1526 %cond = select i1 %cmp3, i64 %a1, i64 %a2527 ret i64 %cond528 529}530 531define i64 @testi64sgt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {532; CHECK-LABEL: testi64sgt:533; CHECK: # %bb.0: # %entry534; CHECK-NEXT: cmpd 5, 6535; CHECK-NEXT: cmpd 1, 3, 4536; CHECK-NEXT: crandc 20, 2, 6537; CHECK-NEXT: isel 3, 7, 8, 20538; CHECK-NEXT: blr539;540; CHECK-NO-ISEL-LABEL: testi64sgt:541; CHECK-NO-ISEL: # %bb.0: # %entry542; CHECK-NO-ISEL-NEXT: cmpd 5, 6543; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB17_3544; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry545; CHECK-NO-ISEL-NEXT: cmpd 3, 4546; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB17_3547; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry548; CHECK-NO-ISEL-NEXT: mr 3, 7549; CHECK-NO-ISEL-NEXT: blr550; CHECK-NO-ISEL-NEXT: .LBB17_3: # %entry551; CHECK-NO-ISEL-NEXT: mr 7, 8552; CHECK-NO-ISEL-NEXT: mr 3, 7553; CHECK-NO-ISEL-NEXT: blr554entry:555 %cmp1 = icmp eq i64 %c3, %c4556 %cmp3tmp = icmp eq i64 %c1, %c2557 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1558 %cond = select i1 %cmp3, i64 %a1, i64 %a2559 ret i64 %cond560 561}562 563define i64 @testi64ugt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {564; CHECK-LABEL: testi64ugt:565; CHECK: # %bb.0: # %entry566; CHECK-NEXT: cmpd 5, 6567; CHECK-NEXT: cmpd 1, 3, 4568; CHECK-NEXT: crandc 20, 6, 2569; CHECK-NEXT: isel 3, 7, 8, 20570; CHECK-NEXT: blr571;572; CHECK-NO-ISEL-LABEL: testi64ugt:573; CHECK-NO-ISEL: # %bb.0: # %entry574; CHECK-NO-ISEL-NEXT: cmpd 5, 6575; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB18_3576; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry577; CHECK-NO-ISEL-NEXT: cmpd 3, 4578; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB18_3579; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry580; CHECK-NO-ISEL-NEXT: mr 3, 7581; CHECK-NO-ISEL-NEXT: blr582; CHECK-NO-ISEL-NEXT: .LBB18_3: # %entry583; CHECK-NO-ISEL-NEXT: mr 7, 8584; CHECK-NO-ISEL-NEXT: mr 3, 7585; CHECK-NO-ISEL-NEXT: blr586entry:587 %cmp1 = icmp eq i64 %c3, %c4588 %cmp3tmp = icmp eq i64 %c1, %c2589 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1590 %cond = select i1 %cmp3, i64 %a1, i64 %a2591 ret i64 %cond592 593}594 595define i64 @testi64ne(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {596; CHECK-LABEL: testi64ne:597; CHECK: # %bb.0: # %entry598; CHECK-NEXT: cmpd 5, 6599; CHECK-NEXT: cmpd 1, 3, 4600; CHECK-NEXT: crxor 20, 6, 2601; CHECK-NEXT: isel 3, 7, 8, 20602; CHECK-NEXT: blr603;604; CHECK-NO-ISEL-LABEL: testi64ne:605; CHECK-NO-ISEL: # %bb.0: # %entry606; CHECK-NO-ISEL-NEXT: cmpd 5, 6607; CHECK-NO-ISEL-NEXT: cmpd 1, 3, 4608; CHECK-NO-ISEL-NEXT: crxor 20, 6, 2609; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB19_2610; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry611; CHECK-NO-ISEL-NEXT: mr 7, 8612; CHECK-NO-ISEL-NEXT: .LBB19_2: # %entry613; CHECK-NO-ISEL-NEXT: mr 3, 7614; CHECK-NO-ISEL-NEXT: blr615entry:616 %cmp1 = icmp eq i64 %c3, %c4617 %cmp3tmp = icmp eq i64 %c1, %c2618 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1619 %cond = select i1 %cmp3, i64 %a1, i64 %a2620 ret i64 %cond621 622}623 624define float @testfloatslt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {625; CHECK-LABEL: testfloatslt:626; CHECK: # %bb.0: # %entry627; CHECK-NEXT: fcmpu 0, 3, 4628; CHECK-NEXT: bc 12, 2, .LBB20_2629; CHECK-NEXT: # %bb.1: # %entry630; CHECK-NEXT: fcmpu 0, 1, 2631; CHECK-NEXT: bc 12, 2, .LBB20_3632; CHECK-NEXT: .LBB20_2: # %entry633; CHECK-NEXT: fmr 5, 6634; CHECK-NEXT: .LBB20_3: # %entry635; CHECK-NEXT: fmr 1, 5636; CHECK-NEXT: blr637;638; CHECK-NO-ISEL-LABEL: testfloatslt:639; CHECK-NO-ISEL: # %bb.0: # %entry640; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4641; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB20_3642; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry643; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2644; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB20_3645; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry646; CHECK-NO-ISEL-NEXT: fmr 1, 5647; CHECK-NO-ISEL-NEXT: blr648; CHECK-NO-ISEL-NEXT: .LBB20_3: # %entry649; CHECK-NO-ISEL-NEXT: fmr 5, 6650; CHECK-NO-ISEL-NEXT: fmr 1, 5651; CHECK-NO-ISEL-NEXT: blr652entry:653 %cmp1 = fcmp oeq float %c3, %c4654 %cmp3tmp = fcmp oeq float %c1, %c2655 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1656 %cond = select i1 %cmp3, float %a1, float %a2657 ret float %cond658 659}660 661define float @testfloatult(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {662; CHECK-LABEL: testfloatult:663; CHECK: # %bb.0: # %entry664; CHECK-NEXT: fcmpu 0, 3, 4665; CHECK-NEXT: bc 4, 2, .LBB21_2666; CHECK-NEXT: # %bb.1: # %entry667; CHECK-NEXT: fcmpu 0, 1, 2668; CHECK-NEXT: bc 4, 2, .LBB21_3669; CHECK-NEXT: .LBB21_2: # %entry670; CHECK-NEXT: fmr 5, 6671; CHECK-NEXT: .LBB21_3: # %entry672; CHECK-NEXT: fmr 1, 5673; CHECK-NEXT: blr674;675; CHECK-NO-ISEL-LABEL: testfloatult:676; CHECK-NO-ISEL: # %bb.0: # %entry677; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4678; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB21_3679; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry680; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2681; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB21_3682; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry683; CHECK-NO-ISEL-NEXT: fmr 1, 5684; CHECK-NO-ISEL-NEXT: blr685; CHECK-NO-ISEL-NEXT: .LBB21_3: # %entry686; CHECK-NO-ISEL-NEXT: fmr 5, 6687; CHECK-NO-ISEL-NEXT: fmr 1, 5688; CHECK-NO-ISEL-NEXT: blr689entry:690 %cmp1 = fcmp oeq float %c3, %c4691 %cmp3tmp = fcmp oeq float %c1, %c2692 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1693 %cond = select i1 %cmp3, float %a1, float %a2694 ret float %cond695 696}697 698define float @testfloatsle(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {699; CHECK-LABEL: testfloatsle:700; CHECK: # %bb.0: # %entry701; CHECK-NEXT: fcmpu 0, 3, 4702; CHECK-NEXT: bc 4, 2, .LBB22_3703; CHECK-NEXT: # %bb.1: # %entry704; CHECK-NEXT: fcmpu 0, 1, 2705; CHECK-NEXT: bc 12, 2, .LBB22_3706; CHECK-NEXT: # %bb.2: # %entry707; CHECK-NEXT: fmr 5, 6708; CHECK-NEXT: .LBB22_3: # %entry709; CHECK-NEXT: fmr 1, 5710; CHECK-NEXT: blr711;712; CHECK-NO-ISEL-LABEL: testfloatsle:713; CHECK-NO-ISEL: # %bb.0: # %entry714; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4715; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB22_3716; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry717; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2718; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB22_3719; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry720; CHECK-NO-ISEL-NEXT: fmr 5, 6721; CHECK-NO-ISEL-NEXT: .LBB22_3: # %entry722; CHECK-NO-ISEL-NEXT: fmr 1, 5723; CHECK-NO-ISEL-NEXT: blr724entry:725 %cmp1 = fcmp oeq float %c3, %c4726 %cmp3tmp = fcmp oeq float %c1, %c2727 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1728 %cond = select i1 %cmp3, float %a1, float %a2729 ret float %cond730 731}732 733define float @testfloatule(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {734; CHECK-LABEL: testfloatule:735; CHECK: # %bb.0: # %entry736; CHECK-NEXT: fcmpu 0, 3, 4737; CHECK-NEXT: bc 12, 2, .LBB23_3738; CHECK-NEXT: # %bb.1: # %entry739; CHECK-NEXT: fcmpu 0, 1, 2740; CHECK-NEXT: bc 4, 2, .LBB23_3741; CHECK-NEXT: # %bb.2: # %entry742; CHECK-NEXT: fmr 5, 6743; CHECK-NEXT: .LBB23_3: # %entry744; CHECK-NEXT: fmr 1, 5745; CHECK-NEXT: blr746;747; CHECK-NO-ISEL-LABEL: testfloatule:748; CHECK-NO-ISEL: # %bb.0: # %entry749; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4750; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB23_3751; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry752; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2753; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB23_3754; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry755; CHECK-NO-ISEL-NEXT: fmr 5, 6756; CHECK-NO-ISEL-NEXT: .LBB23_3: # %entry757; CHECK-NO-ISEL-NEXT: fmr 1, 5758; CHECK-NO-ISEL-NEXT: blr759entry:760 %cmp1 = fcmp oeq float %c3, %c4761 %cmp3tmp = fcmp oeq float %c1, %c2762 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1763 %cond = select i1 %cmp3, float %a1, float %a2764 ret float %cond765 766}767 768define float @testfloateq(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {769; CHECK-LABEL: testfloateq:770; CHECK: # %bb.0: # %entry771; CHECK-NEXT: fcmpu 0, 3, 4772; CHECK-NEXT: fcmpu 1, 1, 2773; CHECK-NEXT: creqv 20, 6, 2774; CHECK-NEXT: bc 12, 20, .LBB24_2775; CHECK-NEXT: # %bb.1: # %entry776; CHECK-NEXT: fmr 5, 6777; CHECK-NEXT: .LBB24_2: # %entry778; CHECK-NEXT: fmr 1, 5779; CHECK-NEXT: blr780;781; CHECK-NO-ISEL-LABEL: testfloateq:782; CHECK-NO-ISEL: # %bb.0: # %entry783; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4784; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 2785; CHECK-NO-ISEL-NEXT: creqv 20, 6, 2786; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB24_2787; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry788; CHECK-NO-ISEL-NEXT: fmr 5, 6789; CHECK-NO-ISEL-NEXT: .LBB24_2: # %entry790; CHECK-NO-ISEL-NEXT: fmr 1, 5791; CHECK-NO-ISEL-NEXT: blr792entry:793 %cmp1 = fcmp oeq float %c3, %c4794 %cmp3tmp = fcmp oeq float %c1, %c2795 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1796 %cond = select i1 %cmp3, float %a1, float %a2797 ret float %cond798 799}800 801define float @testfloatsge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {802; CHECK-LABEL: testfloatsge:803; CHECK: # %bb.0: # %entry804; CHECK-NEXT: fcmpu 0, 3, 4805; CHECK-NEXT: bc 12, 2, .LBB25_3806; CHECK-NEXT: # %bb.1: # %entry807; CHECK-NEXT: fcmpu 0, 1, 2808; CHECK-NEXT: bc 4, 2, .LBB25_3809; CHECK-NEXT: # %bb.2: # %entry810; CHECK-NEXT: fmr 5, 6811; CHECK-NEXT: .LBB25_3: # %entry812; CHECK-NEXT: fmr 1, 5813; CHECK-NEXT: blr814;815; CHECK-NO-ISEL-LABEL: testfloatsge:816; CHECK-NO-ISEL: # %bb.0: # %entry817; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4818; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB25_3819; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry820; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2821; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB25_3822; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry823; CHECK-NO-ISEL-NEXT: fmr 5, 6824; CHECK-NO-ISEL-NEXT: .LBB25_3: # %entry825; CHECK-NO-ISEL-NEXT: fmr 1, 5826; CHECK-NO-ISEL-NEXT: blr827entry:828 %cmp1 = fcmp oeq float %c3, %c4829 %cmp3tmp = fcmp oeq float %c1, %c2830 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1831 %cond = select i1 %cmp3, float %a1, float %a2832 ret float %cond833 834}835 836define float @testfloatuge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {837; CHECK-LABEL: testfloatuge:838; CHECK: # %bb.0: # %entry839; CHECK-NEXT: fcmpu 0, 3, 4840; CHECK-NEXT: bc 4, 2, .LBB26_3841; CHECK-NEXT: # %bb.1: # %entry842; CHECK-NEXT: fcmpu 0, 1, 2843; CHECK-NEXT: bc 12, 2, .LBB26_3844; CHECK-NEXT: # %bb.2: # %entry845; CHECK-NEXT: fmr 5, 6846; CHECK-NEXT: .LBB26_3: # %entry847; CHECK-NEXT: fmr 1, 5848; CHECK-NEXT: blr849;850; CHECK-NO-ISEL-LABEL: testfloatuge:851; CHECK-NO-ISEL: # %bb.0: # %entry852; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4853; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB26_3854; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry855; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2856; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB26_3857; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry858; CHECK-NO-ISEL-NEXT: fmr 5, 6859; CHECK-NO-ISEL-NEXT: .LBB26_3: # %entry860; CHECK-NO-ISEL-NEXT: fmr 1, 5861; CHECK-NO-ISEL-NEXT: blr862entry:863 %cmp1 = fcmp oeq float %c3, %c4864 %cmp3tmp = fcmp oeq float %c1, %c2865 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1866 %cond = select i1 %cmp3, float %a1, float %a2867 ret float %cond868 869}870 871define float @testfloatsgt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {872; CHECK-LABEL: testfloatsgt:873; CHECK: # %bb.0: # %entry874; CHECK-NEXT: fcmpu 0, 3, 4875; CHECK-NEXT: bc 4, 2, .LBB27_2876; CHECK-NEXT: # %bb.1: # %entry877; CHECK-NEXT: fcmpu 0, 1, 2878; CHECK-NEXT: bc 4, 2, .LBB27_3879; CHECK-NEXT: .LBB27_2: # %entry880; CHECK-NEXT: fmr 5, 6881; CHECK-NEXT: .LBB27_3: # %entry882; CHECK-NEXT: fmr 1, 5883; CHECK-NEXT: blr884;885; CHECK-NO-ISEL-LABEL: testfloatsgt:886; CHECK-NO-ISEL: # %bb.0: # %entry887; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4888; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB27_3889; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry890; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2891; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB27_3892; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry893; CHECK-NO-ISEL-NEXT: fmr 1, 5894; CHECK-NO-ISEL-NEXT: blr895; CHECK-NO-ISEL-NEXT: .LBB27_3: # %entry896; CHECK-NO-ISEL-NEXT: fmr 5, 6897; CHECK-NO-ISEL-NEXT: fmr 1, 5898; CHECK-NO-ISEL-NEXT: blr899entry:900 %cmp1 = fcmp oeq float %c3, %c4901 %cmp3tmp = fcmp oeq float %c1, %c2902 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1903 %cond = select i1 %cmp3, float %a1, float %a2904 ret float %cond905 906}907 908define float @testfloatugt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {909; CHECK-LABEL: testfloatugt:910; CHECK: # %bb.0: # %entry911; CHECK-NEXT: fcmpu 0, 3, 4912; CHECK-NEXT: bc 12, 2, .LBB28_2913; CHECK-NEXT: # %bb.1: # %entry914; CHECK-NEXT: fcmpu 0, 1, 2915; CHECK-NEXT: bc 12, 2, .LBB28_3916; CHECK-NEXT: .LBB28_2: # %entry917; CHECK-NEXT: fmr 5, 6918; CHECK-NEXT: .LBB28_3: # %entry919; CHECK-NEXT: fmr 1, 5920; CHECK-NEXT: blr921;922; CHECK-NO-ISEL-LABEL: testfloatugt:923; CHECK-NO-ISEL: # %bb.0: # %entry924; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4925; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB28_3926; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry927; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2928; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB28_3929; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry930; CHECK-NO-ISEL-NEXT: fmr 1, 5931; CHECK-NO-ISEL-NEXT: blr932; CHECK-NO-ISEL-NEXT: .LBB28_3: # %entry933; CHECK-NO-ISEL-NEXT: fmr 5, 6934; CHECK-NO-ISEL-NEXT: fmr 1, 5935; CHECK-NO-ISEL-NEXT: blr936entry:937 %cmp1 = fcmp oeq float %c3, %c4938 %cmp3tmp = fcmp oeq float %c1, %c2939 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1940 %cond = select i1 %cmp3, float %a1, float %a2941 ret float %cond942 943}944 945define float @testfloatne(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {946; CHECK-LABEL: testfloatne:947; CHECK: # %bb.0: # %entry948; CHECK-NEXT: fcmpu 0, 3, 4949; CHECK-NEXT: fcmpu 1, 1, 2950; CHECK-NEXT: crxor 20, 6, 2951; CHECK-NEXT: bc 12, 20, .LBB29_2952; CHECK-NEXT: # %bb.1: # %entry953; CHECK-NEXT: fmr 5, 6954; CHECK-NEXT: .LBB29_2: # %entry955; CHECK-NEXT: fmr 1, 5956; CHECK-NEXT: blr957;958; CHECK-NO-ISEL-LABEL: testfloatne:959; CHECK-NO-ISEL: # %bb.0: # %entry960; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4961; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 2962; CHECK-NO-ISEL-NEXT: crxor 20, 6, 2963; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB29_2964; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry965; CHECK-NO-ISEL-NEXT: fmr 5, 6966; CHECK-NO-ISEL-NEXT: .LBB29_2: # %entry967; CHECK-NO-ISEL-NEXT: fmr 1, 5968; CHECK-NO-ISEL-NEXT: blr969entry:970 %cmp1 = fcmp oeq float %c3, %c4971 %cmp3tmp = fcmp oeq float %c1, %c2972 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1973 %cond = select i1 %cmp3, float %a1, float %a2974 ret float %cond975 976}977 978define double @testdoubleslt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {979; CHECK-LABEL: testdoubleslt:980; CHECK: # %bb.0: # %entry981; CHECK-NEXT: fcmpu 0, 3, 4982; CHECK-NEXT: bc 12, 2, .LBB30_2983; CHECK-NEXT: # %bb.1: # %entry984; CHECK-NEXT: fcmpu 0, 1, 2985; CHECK-NEXT: bc 12, 2, .LBB30_3986; CHECK-NEXT: .LBB30_2: # %entry987; CHECK-NEXT: fmr 5, 6988; CHECK-NEXT: .LBB30_3: # %entry989; CHECK-NEXT: fmr 1, 5990; CHECK-NEXT: blr991;992; CHECK-NO-ISEL-LABEL: testdoubleslt:993; CHECK-NO-ISEL: # %bb.0: # %entry994; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 4995; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB30_3996; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry997; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 2998; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB30_3999; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1000; CHECK-NO-ISEL-NEXT: fmr 1, 51001; CHECK-NO-ISEL-NEXT: blr1002; CHECK-NO-ISEL-NEXT: .LBB30_3: # %entry1003; CHECK-NO-ISEL-NEXT: fmr 5, 61004; CHECK-NO-ISEL-NEXT: fmr 1, 51005; CHECK-NO-ISEL-NEXT: blr1006entry:1007 %cmp1 = fcmp oeq double %c3, %c41008 %cmp3tmp = fcmp oeq double %c1, %c21009 %cmp3 = icmp slt i1 %cmp3tmp, %cmp11010 %cond = select i1 %cmp3, double %a1, double %a21011 ret double %cond1012 1013}1014 1015define double @testdoubleult(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1016; CHECK-LABEL: testdoubleult:1017; CHECK: # %bb.0: # %entry1018; CHECK-NEXT: fcmpu 0, 3, 41019; CHECK-NEXT: bc 4, 2, .LBB31_21020; CHECK-NEXT: # %bb.1: # %entry1021; CHECK-NEXT: fcmpu 0, 1, 21022; CHECK-NEXT: bc 4, 2, .LBB31_31023; CHECK-NEXT: .LBB31_2: # %entry1024; CHECK-NEXT: fmr 5, 61025; CHECK-NEXT: .LBB31_3: # %entry1026; CHECK-NEXT: fmr 1, 51027; CHECK-NEXT: blr1028;1029; CHECK-NO-ISEL-LABEL: testdoubleult:1030; CHECK-NO-ISEL: # %bb.0: # %entry1031; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41032; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB31_31033; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1034; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21035; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB31_31036; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1037; CHECK-NO-ISEL-NEXT: fmr 1, 51038; CHECK-NO-ISEL-NEXT: blr1039; CHECK-NO-ISEL-NEXT: .LBB31_3: # %entry1040; CHECK-NO-ISEL-NEXT: fmr 5, 61041; CHECK-NO-ISEL-NEXT: fmr 1, 51042; CHECK-NO-ISEL-NEXT: blr1043entry:1044 %cmp1 = fcmp oeq double %c3, %c41045 %cmp3tmp = fcmp oeq double %c1, %c21046 %cmp3 = icmp ult i1 %cmp3tmp, %cmp11047 %cond = select i1 %cmp3, double %a1, double %a21048 ret double %cond1049 1050}1051 1052define double @testdoublesle(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1053; CHECK-LABEL: testdoublesle:1054; CHECK: # %bb.0: # %entry1055; CHECK-NEXT: fcmpu 0, 3, 41056; CHECK-NEXT: bc 4, 2, .LBB32_31057; CHECK-NEXT: # %bb.1: # %entry1058; CHECK-NEXT: fcmpu 0, 1, 21059; CHECK-NEXT: bc 12, 2, .LBB32_31060; CHECK-NEXT: # %bb.2: # %entry1061; CHECK-NEXT: fmr 5, 61062; CHECK-NEXT: .LBB32_3: # %entry1063; CHECK-NEXT: fmr 1, 51064; CHECK-NEXT: blr1065;1066; CHECK-NO-ISEL-LABEL: testdoublesle:1067; CHECK-NO-ISEL: # %bb.0: # %entry1068; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41069; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB32_31070; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1071; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21072; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB32_31073; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1074; CHECK-NO-ISEL-NEXT: fmr 5, 61075; CHECK-NO-ISEL-NEXT: .LBB32_3: # %entry1076; CHECK-NO-ISEL-NEXT: fmr 1, 51077; CHECK-NO-ISEL-NEXT: blr1078entry:1079 %cmp1 = fcmp oeq double %c3, %c41080 %cmp3tmp = fcmp oeq double %c1, %c21081 %cmp3 = icmp sle i1 %cmp3tmp, %cmp11082 %cond = select i1 %cmp3, double %a1, double %a21083 ret double %cond1084 1085}1086 1087define double @testdoubleule(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1088; CHECK-LABEL: testdoubleule:1089; CHECK: # %bb.0: # %entry1090; CHECK-NEXT: fcmpu 0, 3, 41091; CHECK-NEXT: bc 12, 2, .LBB33_31092; CHECK-NEXT: # %bb.1: # %entry1093; CHECK-NEXT: fcmpu 0, 1, 21094; CHECK-NEXT: bc 4, 2, .LBB33_31095; CHECK-NEXT: # %bb.2: # %entry1096; CHECK-NEXT: fmr 5, 61097; CHECK-NEXT: .LBB33_3: # %entry1098; CHECK-NEXT: fmr 1, 51099; CHECK-NEXT: blr1100;1101; CHECK-NO-ISEL-LABEL: testdoubleule:1102; CHECK-NO-ISEL: # %bb.0: # %entry1103; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41104; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB33_31105; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1106; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21107; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB33_31108; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1109; CHECK-NO-ISEL-NEXT: fmr 5, 61110; CHECK-NO-ISEL-NEXT: .LBB33_3: # %entry1111; CHECK-NO-ISEL-NEXT: fmr 1, 51112; CHECK-NO-ISEL-NEXT: blr1113entry:1114 %cmp1 = fcmp oeq double %c3, %c41115 %cmp3tmp = fcmp oeq double %c1, %c21116 %cmp3 = icmp ule i1 %cmp3tmp, %cmp11117 %cond = select i1 %cmp3, double %a1, double %a21118 ret double %cond1119 1120}1121 1122define double @testdoubleeq(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1123; CHECK-LABEL: testdoubleeq:1124; CHECK: # %bb.0: # %entry1125; CHECK-NEXT: fcmpu 0, 3, 41126; CHECK-NEXT: fcmpu 1, 1, 21127; CHECK-NEXT: creqv 20, 6, 21128; CHECK-NEXT: bc 12, 20, .LBB34_21129; CHECK-NEXT: # %bb.1: # %entry1130; CHECK-NEXT: fmr 5, 61131; CHECK-NEXT: .LBB34_2: # %entry1132; CHECK-NEXT: fmr 1, 51133; CHECK-NEXT: blr1134;1135; CHECK-NO-ISEL-LABEL: testdoubleeq:1136; CHECK-NO-ISEL: # %bb.0: # %entry1137; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41138; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21139; CHECK-NO-ISEL-NEXT: creqv 20, 6, 21140; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB34_21141; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1142; CHECK-NO-ISEL-NEXT: fmr 5, 61143; CHECK-NO-ISEL-NEXT: .LBB34_2: # %entry1144; CHECK-NO-ISEL-NEXT: fmr 1, 51145; CHECK-NO-ISEL-NEXT: blr1146entry:1147 %cmp1 = fcmp oeq double %c3, %c41148 %cmp3tmp = fcmp oeq double %c1, %c21149 %cmp3 = icmp eq i1 %cmp3tmp, %cmp11150 %cond = select i1 %cmp3, double %a1, double %a21151 ret double %cond1152 1153}1154 1155define double @testdoublesge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1156; CHECK-LABEL: testdoublesge:1157; CHECK: # %bb.0: # %entry1158; CHECK-NEXT: fcmpu 0, 3, 41159; CHECK-NEXT: bc 12, 2, .LBB35_31160; CHECK-NEXT: # %bb.1: # %entry1161; CHECK-NEXT: fcmpu 0, 1, 21162; CHECK-NEXT: bc 4, 2, .LBB35_31163; CHECK-NEXT: # %bb.2: # %entry1164; CHECK-NEXT: fmr 5, 61165; CHECK-NEXT: .LBB35_3: # %entry1166; CHECK-NEXT: fmr 1, 51167; CHECK-NEXT: blr1168;1169; CHECK-NO-ISEL-LABEL: testdoublesge:1170; CHECK-NO-ISEL: # %bb.0: # %entry1171; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41172; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB35_31173; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1174; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21175; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB35_31176; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1177; CHECK-NO-ISEL-NEXT: fmr 5, 61178; CHECK-NO-ISEL-NEXT: .LBB35_3: # %entry1179; CHECK-NO-ISEL-NEXT: fmr 1, 51180; CHECK-NO-ISEL-NEXT: blr1181entry:1182 %cmp1 = fcmp oeq double %c3, %c41183 %cmp3tmp = fcmp oeq double %c1, %c21184 %cmp3 = icmp sge i1 %cmp3tmp, %cmp11185 %cond = select i1 %cmp3, double %a1, double %a21186 ret double %cond1187 1188}1189 1190define double @testdoubleuge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1191; CHECK-LABEL: testdoubleuge:1192; CHECK: # %bb.0: # %entry1193; CHECK-NEXT: fcmpu 0, 3, 41194; CHECK-NEXT: bc 4, 2, .LBB36_31195; CHECK-NEXT: # %bb.1: # %entry1196; CHECK-NEXT: fcmpu 0, 1, 21197; CHECK-NEXT: bc 12, 2, .LBB36_31198; CHECK-NEXT: # %bb.2: # %entry1199; CHECK-NEXT: fmr 5, 61200; CHECK-NEXT: .LBB36_3: # %entry1201; CHECK-NEXT: fmr 1, 51202; CHECK-NEXT: blr1203;1204; CHECK-NO-ISEL-LABEL: testdoubleuge:1205; CHECK-NO-ISEL: # %bb.0: # %entry1206; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41207; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB36_31208; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1209; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21210; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB36_31211; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1212; CHECK-NO-ISEL-NEXT: fmr 5, 61213; CHECK-NO-ISEL-NEXT: .LBB36_3: # %entry1214; CHECK-NO-ISEL-NEXT: fmr 1, 51215; CHECK-NO-ISEL-NEXT: blr1216entry:1217 %cmp1 = fcmp oeq double %c3, %c41218 %cmp3tmp = fcmp oeq double %c1, %c21219 %cmp3 = icmp uge i1 %cmp3tmp, %cmp11220 %cond = select i1 %cmp3, double %a1, double %a21221 ret double %cond1222 1223}1224 1225define double @testdoublesgt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1226; CHECK-LABEL: testdoublesgt:1227; CHECK: # %bb.0: # %entry1228; CHECK-NEXT: fcmpu 0, 3, 41229; CHECK-NEXT: bc 4, 2, .LBB37_21230; CHECK-NEXT: # %bb.1: # %entry1231; CHECK-NEXT: fcmpu 0, 1, 21232; CHECK-NEXT: bc 4, 2, .LBB37_31233; CHECK-NEXT: .LBB37_2: # %entry1234; CHECK-NEXT: fmr 5, 61235; CHECK-NEXT: .LBB37_3: # %entry1236; CHECK-NEXT: fmr 1, 51237; CHECK-NEXT: blr1238;1239; CHECK-NO-ISEL-LABEL: testdoublesgt:1240; CHECK-NO-ISEL: # %bb.0: # %entry1241; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41242; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB37_31243; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1244; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21245; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB37_31246; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1247; CHECK-NO-ISEL-NEXT: fmr 1, 51248; CHECK-NO-ISEL-NEXT: blr1249; CHECK-NO-ISEL-NEXT: .LBB37_3: # %entry1250; CHECK-NO-ISEL-NEXT: fmr 5, 61251; CHECK-NO-ISEL-NEXT: fmr 1, 51252; CHECK-NO-ISEL-NEXT: blr1253entry:1254 %cmp1 = fcmp oeq double %c3, %c41255 %cmp3tmp = fcmp oeq double %c1, %c21256 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp11257 %cond = select i1 %cmp3, double %a1, double %a21258 ret double %cond1259 1260}1261 1262define double @testdoubleugt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1263; CHECK-LABEL: testdoubleugt:1264; CHECK: # %bb.0: # %entry1265; CHECK-NEXT: fcmpu 0, 3, 41266; CHECK-NEXT: bc 12, 2, .LBB38_21267; CHECK-NEXT: # %bb.1: # %entry1268; CHECK-NEXT: fcmpu 0, 1, 21269; CHECK-NEXT: bc 12, 2, .LBB38_31270; CHECK-NEXT: .LBB38_2: # %entry1271; CHECK-NEXT: fmr 5, 61272; CHECK-NEXT: .LBB38_3: # %entry1273; CHECK-NEXT: fmr 1, 51274; CHECK-NEXT: blr1275;1276; CHECK-NO-ISEL-LABEL: testdoubleugt:1277; CHECK-NO-ISEL: # %bb.0: # %entry1278; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41279; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB38_31280; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1281; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21282; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB38_31283; CHECK-NO-ISEL-NEXT: # %bb.2: # %entry1284; CHECK-NO-ISEL-NEXT: fmr 1, 51285; CHECK-NO-ISEL-NEXT: blr1286; CHECK-NO-ISEL-NEXT: .LBB38_3: # %entry1287; CHECK-NO-ISEL-NEXT: fmr 5, 61288; CHECK-NO-ISEL-NEXT: fmr 1, 51289; CHECK-NO-ISEL-NEXT: blr1290entry:1291 %cmp1 = fcmp oeq double %c3, %c41292 %cmp3tmp = fcmp oeq double %c1, %c21293 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp11294 %cond = select i1 %cmp3, double %a1, double %a21295 ret double %cond1296 1297}1298 1299define double @testdoublene(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {1300; CHECK-LABEL: testdoublene:1301; CHECK: # %bb.0: # %entry1302; CHECK-NEXT: fcmpu 0, 3, 41303; CHECK-NEXT: fcmpu 1, 1, 21304; CHECK-NEXT: crxor 20, 6, 21305; CHECK-NEXT: bc 12, 20, .LBB39_21306; CHECK-NEXT: # %bb.1: # %entry1307; CHECK-NEXT: fmr 5, 61308; CHECK-NEXT: .LBB39_2: # %entry1309; CHECK-NEXT: fmr 1, 51310; CHECK-NEXT: blr1311;1312; CHECK-NO-ISEL-LABEL: testdoublene:1313; CHECK-NO-ISEL: # %bb.0: # %entry1314; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41315; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21316; CHECK-NO-ISEL-NEXT: crxor 20, 6, 21317; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB39_21318; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1319; CHECK-NO-ISEL-NEXT: fmr 5, 61320; CHECK-NO-ISEL-NEXT: .LBB39_2: # %entry1321; CHECK-NO-ISEL-NEXT: fmr 1, 51322; CHECK-NO-ISEL-NEXT: blr1323entry:1324 %cmp1 = fcmp oeq double %c3, %c41325 %cmp3tmp = fcmp oeq double %c1, %c21326 %cmp3 = icmp ne i1 %cmp3tmp, %cmp11327 %cond = select i1 %cmp3, double %a1, double %a21328 ret double %cond1329 1330}1331 1332define <4 x float> @testv4floatslt(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1333; CHECK-LABEL: testv4floatslt:1334; CHECK: # %bb.0: # %entry1335; CHECK-NEXT: fcmpu 0, 3, 41336; CHECK-NEXT: bc 12, 2, .LBB40_21337; CHECK-NEXT: # %bb.1: # %entry1338; CHECK-NEXT: fcmpu 0, 1, 21339; CHECK-NEXT: bclr 12, 2, 01340; CHECK-NEXT: .LBB40_2: # %select.false1341; CHECK-NEXT: vmr 2, 31342; CHECK-NEXT: blr1343;1344; CHECK-NO-ISEL-LABEL: testv4floatslt:1345; CHECK-NO-ISEL: # %bb.0: # %entry1346; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41347; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB40_21348; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1349; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21350; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01351; CHECK-NO-ISEL-NEXT: .LBB40_2: # %select.false1352; CHECK-NO-ISEL-NEXT: vmr 2, 31353; CHECK-NO-ISEL-NEXT: blr1354entry:1355 %cmp1 = fcmp oeq float %c3, %c41356 %cmp3tmp = fcmp oeq float %c1, %c21357 %cmp3 = icmp slt i1 %cmp3tmp, %cmp11358 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21359 ret <4 x float> %cond1360 1361}1362 1363define <4 x float> @testv4floatult(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1364; CHECK-LABEL: testv4floatult:1365; CHECK: # %bb.0: # %entry1366; CHECK-NEXT: fcmpu 0, 3, 41367; CHECK-NEXT: bc 4, 2, .LBB41_21368; CHECK-NEXT: # %bb.1: # %entry1369; CHECK-NEXT: fcmpu 0, 1, 21370; CHECK-NEXT: bclr 4, 2, 01371; CHECK-NEXT: .LBB41_2: # %select.false1372; CHECK-NEXT: vmr 2, 31373; CHECK-NEXT: blr1374;1375; CHECK-NO-ISEL-LABEL: testv4floatult:1376; CHECK-NO-ISEL: # %bb.0: # %entry1377; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41378; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB41_21379; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1380; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21381; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01382; CHECK-NO-ISEL-NEXT: .LBB41_2: # %select.false1383; CHECK-NO-ISEL-NEXT: vmr 2, 31384; CHECK-NO-ISEL-NEXT: blr1385entry:1386 %cmp1 = fcmp oeq float %c3, %c41387 %cmp3tmp = fcmp oeq float %c1, %c21388 %cmp3 = icmp ult i1 %cmp3tmp, %cmp11389 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21390 ret <4 x float> %cond1391 1392}1393 1394define <4 x float> @testv4floatsle(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1395; CHECK-LABEL: testv4floatsle:1396; CHECK: # %bb.0: # %entry1397; CHECK-NEXT: fcmpu 0, 3, 41398; CHECK-NEXT: bclr 4, 2, 01399; CHECK-NEXT: # %bb.1: # %entry1400; CHECK-NEXT: fcmpu 0, 1, 21401; CHECK-NEXT: bclr 12, 2, 01402; CHECK-NEXT: # %bb.2: # %select.false1403; CHECK-NEXT: vmr 2, 31404; CHECK-NEXT: blr1405;1406; CHECK-NO-ISEL-LABEL: testv4floatsle:1407; CHECK-NO-ISEL: # %bb.0: # %entry1408; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41409; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01410; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1411; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21412; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01413; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1414; CHECK-NO-ISEL-NEXT: vmr 2, 31415; CHECK-NO-ISEL-NEXT: blr1416entry:1417 %cmp1 = fcmp oeq float %c3, %c41418 %cmp3tmp = fcmp oeq float %c1, %c21419 %cmp3 = icmp sle i1 %cmp3tmp, %cmp11420 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21421 ret <4 x float> %cond1422 1423}1424 1425define <4 x float> @testv4floatule(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1426; CHECK-LABEL: testv4floatule:1427; CHECK: # %bb.0: # %entry1428; CHECK-NEXT: fcmpu 0, 3, 41429; CHECK-NEXT: bclr 12, 2, 01430; CHECK-NEXT: # %bb.1: # %entry1431; CHECK-NEXT: fcmpu 0, 1, 21432; CHECK-NEXT: bclr 4, 2, 01433; CHECK-NEXT: # %bb.2: # %select.false1434; CHECK-NEXT: vmr 2, 31435; CHECK-NEXT: blr1436;1437; CHECK-NO-ISEL-LABEL: testv4floatule:1438; CHECK-NO-ISEL: # %bb.0: # %entry1439; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41440; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01441; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1442; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21443; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01444; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1445; CHECK-NO-ISEL-NEXT: vmr 2, 31446; CHECK-NO-ISEL-NEXT: blr1447entry:1448 %cmp1 = fcmp oeq float %c3, %c41449 %cmp3tmp = fcmp oeq float %c1, %c21450 %cmp3 = icmp ule i1 %cmp3tmp, %cmp11451 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21452 ret <4 x float> %cond1453 1454}1455 1456define <4 x float> @testv4floateq(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1457; CHECK-LABEL: testv4floateq:1458; CHECK: # %bb.0: # %entry1459; CHECK-NEXT: fcmpu 0, 3, 41460; CHECK-NEXT: fcmpu 1, 1, 21461; CHECK-NEXT: creqv 20, 6, 21462; CHECK-NEXT: bclr 12, 20, 01463; CHECK-NEXT: # %bb.1: # %select.false1464; CHECK-NEXT: vmr 2, 31465; CHECK-NEXT: blr1466;1467; CHECK-NO-ISEL-LABEL: testv4floateq:1468; CHECK-NO-ISEL: # %bb.0: # %entry1469; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41470; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21471; CHECK-NO-ISEL-NEXT: creqv 20, 6, 21472; CHECK-NO-ISEL-NEXT: bclr 12, 20, 01473; CHECK-NO-ISEL-NEXT: # %bb.1: # %select.false1474; CHECK-NO-ISEL-NEXT: vmr 2, 31475; CHECK-NO-ISEL-NEXT: blr1476entry:1477 %cmp1 = fcmp oeq float %c3, %c41478 %cmp3tmp = fcmp oeq float %c1, %c21479 %cmp3 = icmp eq i1 %cmp3tmp, %cmp11480 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21481 ret <4 x float> %cond1482 1483}1484 1485define <4 x float> @testv4floatsge(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1486; CHECK-LABEL: testv4floatsge:1487; CHECK: # %bb.0: # %entry1488; CHECK-NEXT: fcmpu 0, 3, 41489; CHECK-NEXT: bclr 12, 2, 01490; CHECK-NEXT: # %bb.1: # %entry1491; CHECK-NEXT: fcmpu 0, 1, 21492; CHECK-NEXT: bclr 4, 2, 01493; CHECK-NEXT: # %bb.2: # %select.false1494; CHECK-NEXT: vmr 2, 31495; CHECK-NEXT: blr1496;1497; CHECK-NO-ISEL-LABEL: testv4floatsge:1498; CHECK-NO-ISEL: # %bb.0: # %entry1499; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41500; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01501; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1502; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21503; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01504; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1505; CHECK-NO-ISEL-NEXT: vmr 2, 31506; CHECK-NO-ISEL-NEXT: blr1507entry:1508 %cmp1 = fcmp oeq float %c3, %c41509 %cmp3tmp = fcmp oeq float %c1, %c21510 %cmp3 = icmp sge i1 %cmp3tmp, %cmp11511 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21512 ret <4 x float> %cond1513 1514}1515 1516define <4 x float> @testv4floatuge(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1517; CHECK-LABEL: testv4floatuge:1518; CHECK: # %bb.0: # %entry1519; CHECK-NEXT: fcmpu 0, 3, 41520; CHECK-NEXT: bclr 4, 2, 01521; CHECK-NEXT: # %bb.1: # %entry1522; CHECK-NEXT: fcmpu 0, 1, 21523; CHECK-NEXT: bclr 12, 2, 01524; CHECK-NEXT: # %bb.2: # %select.false1525; CHECK-NEXT: vmr 2, 31526; CHECK-NEXT: blr1527;1528; CHECK-NO-ISEL-LABEL: testv4floatuge:1529; CHECK-NO-ISEL: # %bb.0: # %entry1530; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41531; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01532; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1533; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21534; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01535; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1536; CHECK-NO-ISEL-NEXT: vmr 2, 31537; CHECK-NO-ISEL-NEXT: blr1538entry:1539 %cmp1 = fcmp oeq float %c3, %c41540 %cmp3tmp = fcmp oeq float %c1, %c21541 %cmp3 = icmp uge i1 %cmp3tmp, %cmp11542 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21543 ret <4 x float> %cond1544 1545}1546 1547define <4 x float> @testv4floatsgt(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1548; CHECK-LABEL: testv4floatsgt:1549; CHECK: # %bb.0: # %entry1550; CHECK-NEXT: fcmpu 0, 3, 41551; CHECK-NEXT: bc 4, 2, .LBB47_21552; CHECK-NEXT: # %bb.1: # %entry1553; CHECK-NEXT: fcmpu 0, 1, 21554; CHECK-NEXT: bclr 4, 2, 01555; CHECK-NEXT: .LBB47_2: # %select.false1556; CHECK-NEXT: vmr 2, 31557; CHECK-NEXT: blr1558;1559; CHECK-NO-ISEL-LABEL: testv4floatsgt:1560; CHECK-NO-ISEL: # %bb.0: # %entry1561; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41562; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB47_21563; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1564; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21565; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01566; CHECK-NO-ISEL-NEXT: .LBB47_2: # %select.false1567; CHECK-NO-ISEL-NEXT: vmr 2, 31568; CHECK-NO-ISEL-NEXT: blr1569entry:1570 %cmp1 = fcmp oeq float %c3, %c41571 %cmp3tmp = fcmp oeq float %c1, %c21572 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp11573 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21574 ret <4 x float> %cond1575 1576}1577 1578define <4 x float> @testv4floatugt(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1579; CHECK-LABEL: testv4floatugt:1580; CHECK: # %bb.0: # %entry1581; CHECK-NEXT: fcmpu 0, 3, 41582; CHECK-NEXT: bc 12, 2, .LBB48_21583; CHECK-NEXT: # %bb.1: # %entry1584; CHECK-NEXT: fcmpu 0, 1, 21585; CHECK-NEXT: bclr 12, 2, 01586; CHECK-NEXT: .LBB48_2: # %select.false1587; CHECK-NEXT: vmr 2, 31588; CHECK-NEXT: blr1589;1590; CHECK-NO-ISEL-LABEL: testv4floatugt:1591; CHECK-NO-ISEL: # %bb.0: # %entry1592; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41593; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB48_21594; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1595; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21596; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01597; CHECK-NO-ISEL-NEXT: .LBB48_2: # %select.false1598; CHECK-NO-ISEL-NEXT: vmr 2, 31599; CHECK-NO-ISEL-NEXT: blr1600entry:1601 %cmp1 = fcmp oeq float %c3, %c41602 %cmp3tmp = fcmp oeq float %c1, %c21603 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp11604 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21605 ret <4 x float> %cond1606 1607}1608 1609define <4 x float> @testv4floatne(float %c1, float %c2, float %c3, float %c4, <4 x float> %a1, <4 x float> %a2) #0 {1610; CHECK-LABEL: testv4floatne:1611; CHECK: # %bb.0: # %entry1612; CHECK-NEXT: fcmpu 0, 3, 41613; CHECK-NEXT: fcmpu 1, 1, 21614; CHECK-NEXT: crxor 20, 6, 21615; CHECK-NEXT: bclr 12, 20, 01616; CHECK-NEXT: # %bb.1: # %select.false1617; CHECK-NEXT: vmr 2, 31618; CHECK-NEXT: blr1619;1620; CHECK-NO-ISEL-LABEL: testv4floatne:1621; CHECK-NO-ISEL: # %bb.0: # %entry1622; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41623; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21624; CHECK-NO-ISEL-NEXT: crxor 20, 6, 21625; CHECK-NO-ISEL-NEXT: bclr 12, 20, 01626; CHECK-NO-ISEL-NEXT: # %bb.1: # %select.false1627; CHECK-NO-ISEL-NEXT: vmr 2, 31628; CHECK-NO-ISEL-NEXT: blr1629entry:1630 %cmp1 = fcmp oeq float %c3, %c41631 %cmp3tmp = fcmp oeq float %c1, %c21632 %cmp3 = icmp ne i1 %cmp3tmp, %cmp11633 %cond = select i1 %cmp3, <4 x float> %a1, <4 x float> %a21634 ret <4 x float> %cond1635 1636}1637 1638define ppc_fp128 @testppc_fp128eq(ppc_fp128 %c1, ppc_fp128 %c2, ppc_fp128 %c3, ppc_fp128 %c4, ppc_fp128 %a1, ppc_fp128 %a2) #0 {1639; CHECK-LABEL: testppc_fp128eq:1640; CHECK: # %bb.0: # %entry1641; CHECK-NEXT: fcmpu 0, 6, 81642; CHECK-NEXT: fcmpu 1, 5, 71643; CHECK-NEXT: crand 20, 6, 21644; CHECK-NEXT: fcmpu 0, 2, 41645; CHECK-NEXT: fcmpu 1, 1, 31646; CHECK-NEXT: crand 21, 6, 21647; CHECK-NEXT: crxor 20, 21, 201648; CHECK-NEXT: bc 12, 20, .LBB50_21649; CHECK-NEXT: # %bb.1: # %entry1650; CHECK-NEXT: fmr 11, 91651; CHECK-NEXT: .LBB50_2: # %entry1652; CHECK-NEXT: bc 12, 20, .LBB50_41653; CHECK-NEXT: # %bb.3: # %entry1654; CHECK-NEXT: fmr 12, 101655; CHECK-NEXT: .LBB50_4: # %entry1656; CHECK-NEXT: fmr 1, 111657; CHECK-NEXT: fmr 2, 121658; CHECK-NEXT: blr1659;1660; CHECK-NO-ISEL-LABEL: testppc_fp128eq:1661; CHECK-NO-ISEL: # %bb.0: # %entry1662; CHECK-NO-ISEL-NEXT: fcmpu 0, 6, 81663; CHECK-NO-ISEL-NEXT: fcmpu 1, 5, 71664; CHECK-NO-ISEL-NEXT: crand 20, 6, 21665; CHECK-NO-ISEL-NEXT: fcmpu 0, 2, 41666; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 31667; CHECK-NO-ISEL-NEXT: crand 21, 6, 21668; CHECK-NO-ISEL-NEXT: crxor 20, 21, 201669; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB50_21670; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1671; CHECK-NO-ISEL-NEXT: fmr 11, 91672; CHECK-NO-ISEL-NEXT: .LBB50_2: # %entry1673; CHECK-NO-ISEL-NEXT: bc 12, 20, .LBB50_41674; CHECK-NO-ISEL-NEXT: # %bb.3: # %entry1675; CHECK-NO-ISEL-NEXT: fmr 12, 101676; CHECK-NO-ISEL-NEXT: .LBB50_4: # %entry1677; CHECK-NO-ISEL-NEXT: fmr 1, 111678; CHECK-NO-ISEL-NEXT: fmr 2, 121679; CHECK-NO-ISEL-NEXT: blr1680entry:1681 %cmp1 = fcmp oeq ppc_fp128 %c3, %c41682 %cmp3tmp = fcmp oeq ppc_fp128 %c1, %c21683 %cmp3 = icmp eq i1 %cmp3tmp, %cmp11684 %cond = select i1 %cmp3, ppc_fp128 %a1, ppc_fp128 %a21685 ret ppc_fp128 %cond1686 1687; FIXME: Because of the way that the late SELECT_* pseudo-instruction expansion1688; works, we end up with two blocks with the same predicate. These could be1689; combined.1690 1691}1692 1693define <2 x double> @testv2doubleslt(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1694; CHECK-LABEL: testv2doubleslt:1695; CHECK: # %bb.0: # %entry1696; CHECK-NEXT: fcmpu 0, 3, 41697; CHECK-NEXT: bc 12, 2, .LBB51_21698; CHECK-NEXT: # %bb.1: # %entry1699; CHECK-NEXT: fcmpu 0, 1, 21700; CHECK-NEXT: bclr 12, 2, 01701; CHECK-NEXT: .LBB51_2: # %select.false1702; CHECK-NEXT: vmr 2, 31703; CHECK-NEXT: blr1704;1705; CHECK-NO-ISEL-LABEL: testv2doubleslt:1706; CHECK-NO-ISEL: # %bb.0: # %entry1707; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41708; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB51_21709; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1710; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21711; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01712; CHECK-NO-ISEL-NEXT: .LBB51_2: # %select.false1713; CHECK-NO-ISEL-NEXT: vmr 2, 31714; CHECK-NO-ISEL-NEXT: blr1715entry:1716 %cmp1 = fcmp oeq float %c3, %c41717 %cmp3tmp = fcmp oeq float %c1, %c21718 %cmp3 = icmp slt i1 %cmp3tmp, %cmp11719 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21720 ret <2 x double> %cond1721 1722}1723 1724define <2 x double> @testv2doubleult(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1725; CHECK-LABEL: testv2doubleult:1726; CHECK: # %bb.0: # %entry1727; CHECK-NEXT: fcmpu 0, 3, 41728; CHECK-NEXT: bc 4, 2, .LBB52_21729; CHECK-NEXT: # %bb.1: # %entry1730; CHECK-NEXT: fcmpu 0, 1, 21731; CHECK-NEXT: bclr 4, 2, 01732; CHECK-NEXT: .LBB52_2: # %select.false1733; CHECK-NEXT: vmr 2, 31734; CHECK-NEXT: blr1735;1736; CHECK-NO-ISEL-LABEL: testv2doubleult:1737; CHECK-NO-ISEL: # %bb.0: # %entry1738; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41739; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB52_21740; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1741; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21742; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01743; CHECK-NO-ISEL-NEXT: .LBB52_2: # %select.false1744; CHECK-NO-ISEL-NEXT: vmr 2, 31745; CHECK-NO-ISEL-NEXT: blr1746entry:1747 %cmp1 = fcmp oeq float %c3, %c41748 %cmp3tmp = fcmp oeq float %c1, %c21749 %cmp3 = icmp ult i1 %cmp3tmp, %cmp11750 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21751 ret <2 x double> %cond1752 1753}1754 1755define <2 x double> @testv2doublesle(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1756; CHECK-LABEL: testv2doublesle:1757; CHECK: # %bb.0: # %entry1758; CHECK-NEXT: fcmpu 0, 3, 41759; CHECK-NEXT: bclr 4, 2, 01760; CHECK-NEXT: # %bb.1: # %entry1761; CHECK-NEXT: fcmpu 0, 1, 21762; CHECK-NEXT: bclr 12, 2, 01763; CHECK-NEXT: # %bb.2: # %select.false1764; CHECK-NEXT: vmr 2, 31765; CHECK-NEXT: blr1766;1767; CHECK-NO-ISEL-LABEL: testv2doublesle:1768; CHECK-NO-ISEL: # %bb.0: # %entry1769; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41770; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01771; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1772; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21773; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01774; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1775; CHECK-NO-ISEL-NEXT: vmr 2, 31776; CHECK-NO-ISEL-NEXT: blr1777entry:1778 %cmp1 = fcmp oeq float %c3, %c41779 %cmp3tmp = fcmp oeq float %c1, %c21780 %cmp3 = icmp sle i1 %cmp3tmp, %cmp11781 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21782 ret <2 x double> %cond1783 1784}1785 1786define <2 x double> @testv2doubleule(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1787; CHECK-LABEL: testv2doubleule:1788; CHECK: # %bb.0: # %entry1789; CHECK-NEXT: fcmpu 0, 3, 41790; CHECK-NEXT: bclr 12, 2, 01791; CHECK-NEXT: # %bb.1: # %entry1792; CHECK-NEXT: fcmpu 0, 1, 21793; CHECK-NEXT: bclr 4, 2, 01794; CHECK-NEXT: # %bb.2: # %select.false1795; CHECK-NEXT: vmr 2, 31796; CHECK-NEXT: blr1797;1798; CHECK-NO-ISEL-LABEL: testv2doubleule:1799; CHECK-NO-ISEL: # %bb.0: # %entry1800; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41801; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01802; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1803; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21804; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01805; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1806; CHECK-NO-ISEL-NEXT: vmr 2, 31807; CHECK-NO-ISEL-NEXT: blr1808entry:1809 %cmp1 = fcmp oeq float %c3, %c41810 %cmp3tmp = fcmp oeq float %c1, %c21811 %cmp3 = icmp ule i1 %cmp3tmp, %cmp11812 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21813 ret <2 x double> %cond1814 1815}1816 1817define <2 x double> @testv2doubleeq(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1818; CHECK-LABEL: testv2doubleeq:1819; CHECK: # %bb.0: # %entry1820; CHECK-NEXT: fcmpu 0, 3, 41821; CHECK-NEXT: fcmpu 1, 1, 21822; CHECK-NEXT: creqv 20, 6, 21823; CHECK-NEXT: bclr 12, 20, 01824; CHECK-NEXT: # %bb.1: # %select.false1825; CHECK-NEXT: vmr 2, 31826; CHECK-NEXT: blr1827;1828; CHECK-NO-ISEL-LABEL: testv2doubleeq:1829; CHECK-NO-ISEL: # %bb.0: # %entry1830; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41831; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21832; CHECK-NO-ISEL-NEXT: creqv 20, 6, 21833; CHECK-NO-ISEL-NEXT: bclr 12, 20, 01834; CHECK-NO-ISEL-NEXT: # %bb.1: # %select.false1835; CHECK-NO-ISEL-NEXT: vmr 2, 31836; CHECK-NO-ISEL-NEXT: blr1837entry:1838 %cmp1 = fcmp oeq float %c3, %c41839 %cmp3tmp = fcmp oeq float %c1, %c21840 %cmp3 = icmp eq i1 %cmp3tmp, %cmp11841 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21842 ret <2 x double> %cond1843 1844}1845 1846define <2 x double> @testv2doublesge(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1847; CHECK-LABEL: testv2doublesge:1848; CHECK: # %bb.0: # %entry1849; CHECK-NEXT: fcmpu 0, 3, 41850; CHECK-NEXT: bclr 12, 2, 01851; CHECK-NEXT: # %bb.1: # %entry1852; CHECK-NEXT: fcmpu 0, 1, 21853; CHECK-NEXT: bclr 4, 2, 01854; CHECK-NEXT: # %bb.2: # %select.false1855; CHECK-NEXT: vmr 2, 31856; CHECK-NEXT: blr1857;1858; CHECK-NO-ISEL-LABEL: testv2doublesge:1859; CHECK-NO-ISEL: # %bb.0: # %entry1860; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41861; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01862; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1863; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21864; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01865; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1866; CHECK-NO-ISEL-NEXT: vmr 2, 31867; CHECK-NO-ISEL-NEXT: blr1868entry:1869 %cmp1 = fcmp oeq float %c3, %c41870 %cmp3tmp = fcmp oeq float %c1, %c21871 %cmp3 = icmp sge i1 %cmp3tmp, %cmp11872 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21873 ret <2 x double> %cond1874 1875}1876 1877define <2 x double> @testv2doubleuge(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1878; CHECK-LABEL: testv2doubleuge:1879; CHECK: # %bb.0: # %entry1880; CHECK-NEXT: fcmpu 0, 3, 41881; CHECK-NEXT: bclr 4, 2, 01882; CHECK-NEXT: # %bb.1: # %entry1883; CHECK-NEXT: fcmpu 0, 1, 21884; CHECK-NEXT: bclr 12, 2, 01885; CHECK-NEXT: # %bb.2: # %select.false1886; CHECK-NEXT: vmr 2, 31887; CHECK-NEXT: blr1888;1889; CHECK-NO-ISEL-LABEL: testv2doubleuge:1890; CHECK-NO-ISEL: # %bb.0: # %entry1891; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41892; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01893; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1894; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21895; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01896; CHECK-NO-ISEL-NEXT: # %bb.2: # %select.false1897; CHECK-NO-ISEL-NEXT: vmr 2, 31898; CHECK-NO-ISEL-NEXT: blr1899entry:1900 %cmp1 = fcmp oeq float %c3, %c41901 %cmp3tmp = fcmp oeq float %c1, %c21902 %cmp3 = icmp uge i1 %cmp3tmp, %cmp11903 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21904 ret <2 x double> %cond1905 1906}1907 1908define <2 x double> @testv2doublesgt(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1909; CHECK-LABEL: testv2doublesgt:1910; CHECK: # %bb.0: # %entry1911; CHECK-NEXT: fcmpu 0, 3, 41912; CHECK-NEXT: bc 4, 2, .LBB58_21913; CHECK-NEXT: # %bb.1: # %entry1914; CHECK-NEXT: fcmpu 0, 1, 21915; CHECK-NEXT: bclr 4, 2, 01916; CHECK-NEXT: .LBB58_2: # %select.false1917; CHECK-NEXT: vmr 2, 31918; CHECK-NEXT: blr1919;1920; CHECK-NO-ISEL-LABEL: testv2doublesgt:1921; CHECK-NO-ISEL: # %bb.0: # %entry1922; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41923; CHECK-NO-ISEL-NEXT: bc 4, 2, .LBB58_21924; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1925; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21926; CHECK-NO-ISEL-NEXT: bclr 4, 2, 01927; CHECK-NO-ISEL-NEXT: .LBB58_2: # %select.false1928; CHECK-NO-ISEL-NEXT: vmr 2, 31929; CHECK-NO-ISEL-NEXT: blr1930entry:1931 %cmp1 = fcmp oeq float %c3, %c41932 %cmp3tmp = fcmp oeq float %c1, %c21933 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp11934 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21935 ret <2 x double> %cond1936 1937}1938 1939define <2 x double> @testv2doubleugt(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1940; CHECK-LABEL: testv2doubleugt:1941; CHECK: # %bb.0: # %entry1942; CHECK-NEXT: fcmpu 0, 3, 41943; CHECK-NEXT: bc 12, 2, .LBB59_21944; CHECK-NEXT: # %bb.1: # %entry1945; CHECK-NEXT: fcmpu 0, 1, 21946; CHECK-NEXT: bclr 12, 2, 01947; CHECK-NEXT: .LBB59_2: # %select.false1948; CHECK-NEXT: vmr 2, 31949; CHECK-NEXT: blr1950;1951; CHECK-NO-ISEL-LABEL: testv2doubleugt:1952; CHECK-NO-ISEL: # %bb.0: # %entry1953; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41954; CHECK-NO-ISEL-NEXT: bc 12, 2, .LBB59_21955; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry1956; CHECK-NO-ISEL-NEXT: fcmpu 0, 1, 21957; CHECK-NO-ISEL-NEXT: bclr 12, 2, 01958; CHECK-NO-ISEL-NEXT: .LBB59_2: # %select.false1959; CHECK-NO-ISEL-NEXT: vmr 2, 31960; CHECK-NO-ISEL-NEXT: blr1961entry:1962 %cmp1 = fcmp oeq float %c3, %c41963 %cmp3tmp = fcmp oeq float %c1, %c21964 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp11965 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21966 ret <2 x double> %cond1967 1968}1969 1970define <2 x double> @testv2doublene(float %c1, float %c2, float %c3, float %c4, <2 x double> %a1, <2 x double> %a2) #0 {1971; CHECK-LABEL: testv2doublene:1972; CHECK: # %bb.0: # %entry1973; CHECK-NEXT: fcmpu 0, 3, 41974; CHECK-NEXT: fcmpu 1, 1, 21975; CHECK-NEXT: crxor 20, 6, 21976; CHECK-NEXT: bclr 12, 20, 01977; CHECK-NEXT: # %bb.1: # %select.false1978; CHECK-NEXT: vmr 2, 31979; CHECK-NEXT: blr1980;1981; CHECK-NO-ISEL-LABEL: testv2doublene:1982; CHECK-NO-ISEL: # %bb.0: # %entry1983; CHECK-NO-ISEL-NEXT: fcmpu 0, 3, 41984; CHECK-NO-ISEL-NEXT: fcmpu 1, 1, 21985; CHECK-NO-ISEL-NEXT: crxor 20, 6, 21986; CHECK-NO-ISEL-NEXT: bclr 12, 20, 01987; CHECK-NO-ISEL-NEXT: # %bb.1: # %select.false1988; CHECK-NO-ISEL-NEXT: vmr 2, 31989; CHECK-NO-ISEL-NEXT: blr1990entry:1991 %cmp1 = fcmp oeq float %c3, %c41992 %cmp3tmp = fcmp oeq float %c1, %c21993 %cmp3 = icmp ne i1 %cmp3tmp, %cmp11994 %cond = select i1 %cmp3, <2 x double> %a1, <2 x double> %a21995 ret <2 x double> %cond1996 1997}1998 1999attributes #0 = { nounwind readnone "target-cpu"="pwr7" }2000 2001