brintos

brintos / llvm-project-archived public Read only

0
0
Text · 63.2 KiB · ebf4cbc Raw
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