brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.6 KiB · 881d1f4 Raw
1140 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names \3; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \4; RUN:   --enable-no-nans-fp-math --enable-no-infs-fp-math \5; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \6; RUN:   --check-prefix=FAST-P87; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names \8; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \9; RUN:   --enable-no-nans-fp-math --enable-no-infs-fp-math \10; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \11; RUN:   --check-prefix=FAST-P912; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -verify-machineinstrs \13; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \14; RUN:   --check-prefix=NO-FAST-P815; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -verify-machineinstrs \16; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \17; RUN:   --check-prefix=NO-FAST-P918 19; Test oeq20define float @select_oeq_float(float %a, float %b, float %c, float %d) {21; FAST-P8-LABEL: select_oeq_float:22; FAST-P8:       # %bb.0: # %entry23; FAST-P8-NEXT:    xssubsp f0, f1, f224; FAST-P8-NEXT:    xsnegdp f1, f025; FAST-P8-NEXT:    fsel f0, f0, f3, f426; FAST-P8-NEXT:    fsel f1, f1, f0, f427; FAST-P8-NEXT:    blr28;29; FAST-P9-LABEL: select_oeq_float:30; FAST-P9:       # %bb.0: # %entry31; FAST-P9-NEXT:    xssubsp f0, f1, f232; FAST-P9-NEXT:    xsnegdp f1, f033; FAST-P9-NEXT:    fsel f0, f0, f3, f434; FAST-P9-NEXT:    fsel f1, f1, f0, f435; FAST-P9-NEXT:    blr36;37; NO-FAST-P8-LABEL: select_oeq_float:38; NO-FAST-P8:       # %bb.0: # %entry39; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f240; NO-FAST-P8-NEXT:    beq cr0, .LBB0_241; NO-FAST-P8-NEXT:  # %bb.1: # %entry42; NO-FAST-P8-NEXT:    fmr f3, f443; NO-FAST-P8-NEXT:  .LBB0_2: # %entry44; NO-FAST-P8-NEXT:    fmr f1, f345; NO-FAST-P8-NEXT:    blr46;47; NO-FAST-P9-LABEL: select_oeq_float:48; NO-FAST-P9:       # %bb.0: # %entry49; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f250; NO-FAST-P9-NEXT:    beq cr0, .LBB0_251; NO-FAST-P9-NEXT:  # %bb.1: # %entry52; NO-FAST-P9-NEXT:    fmr f3, f453; NO-FAST-P9-NEXT:  .LBB0_2: # %entry54; NO-FAST-P9-NEXT:    fmr f1, f355; NO-FAST-P9-NEXT:    blr56entry:57  %cmp = fcmp oeq float %a, %b58  %cond = select i1 %cmp, float %c, float %d59  ret float %cond60}61 62define float @select_oeq_float_nsz(float %a, float %b, float %c, float %d) {63; FAST-P8-LABEL: select_oeq_float_nsz:64; FAST-P8:       # %bb.0: # %entry65; FAST-P8-NEXT:    xssubsp f0, f2, f166; FAST-P8-NEXT:    xssubsp f1, f1, f267; FAST-P8-NEXT:    fsel f1, f1, f3, f468; FAST-P8-NEXT:    fsel f1, f0, f1, f469; FAST-P8-NEXT:    blr70;71; FAST-P9-LABEL: select_oeq_float_nsz:72; FAST-P9:       # %bb.0: # %entry73; FAST-P9-NEXT:    xssubsp f0, f2, f174; FAST-P9-NEXT:    xssubsp f1, f1, f275; FAST-P9-NEXT:    fsel f1, f1, f3, f476; FAST-P9-NEXT:    fsel f1, f0, f1, f477; FAST-P9-NEXT:    blr78;79; NO-FAST-P8-LABEL: select_oeq_float_nsz:80; NO-FAST-P8:       # %bb.0: # %entry81; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f282; NO-FAST-P8-NEXT:    beq cr0, .LBB1_283; NO-FAST-P8-NEXT:  # %bb.1: # %entry84; NO-FAST-P8-NEXT:    fmr f3, f485; NO-FAST-P8-NEXT:  .LBB1_2: # %entry86; NO-FAST-P8-NEXT:    fmr f1, f387; NO-FAST-P8-NEXT:    blr88;89; NO-FAST-P9-LABEL: select_oeq_float_nsz:90; NO-FAST-P9:       # %bb.0: # %entry91; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f292; NO-FAST-P9-NEXT:    beq cr0, .LBB1_293; NO-FAST-P9-NEXT:  # %bb.1: # %entry94; NO-FAST-P9-NEXT:    fmr f3, f495; NO-FAST-P9-NEXT:  .LBB1_2: # %entry96; NO-FAST-P9-NEXT:    fmr f1, f397; NO-FAST-P9-NEXT:    blr98entry:99  %cmp = fcmp nsz oeq float %a, %b100  %cond = select i1 %cmp, float %c, float %d101  ret float %cond102}103 104define double @select_oeq_double(double %a, double %b, double %c, double %d) {105; FAST-P8-LABEL: select_oeq_double:106; FAST-P8:       # %bb.0: # %entry107; FAST-P8-NEXT:    xssubdp f0, f1, f2108; FAST-P8-NEXT:    fsel f1, f0, f3, f4109; FAST-P8-NEXT:    xsnegdp f0, f0110; FAST-P8-NEXT:    fsel f1, f0, f1, f4111; FAST-P8-NEXT:    blr112;113; FAST-P9-LABEL: select_oeq_double:114; FAST-P9:       # %bb.0: # %entry115; FAST-P9-NEXT:    xssubdp f0, f1, f2116; FAST-P9-NEXT:    fsel f1, f0, f3, f4117; FAST-P9-NEXT:    xsnegdp f0, f0118; FAST-P9-NEXT:    fsel f1, f0, f1, f4119; FAST-P9-NEXT:    blr120;121; NO-FAST-P8-LABEL: select_oeq_double:122; NO-FAST-P8:       # %bb.0: # %entry123; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2124; NO-FAST-P8-NEXT:    beq cr0, .LBB2_2125; NO-FAST-P8-NEXT:  # %bb.1: # %entry126; NO-FAST-P8-NEXT:    fmr f3, f4127; NO-FAST-P8-NEXT:  .LBB2_2: # %entry128; NO-FAST-P8-NEXT:    fmr f1, f3129; NO-FAST-P8-NEXT:    blr130;131; NO-FAST-P9-LABEL: select_oeq_double:132; NO-FAST-P9:       # %bb.0: # %entry133; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f2134; NO-FAST-P9-NEXT:    beq cr0, .LBB2_2135; NO-FAST-P9-NEXT:  # %bb.1: # %entry136; NO-FAST-P9-NEXT:    fmr f3, f4137; NO-FAST-P9-NEXT:  .LBB2_2: # %entry138; NO-FAST-P9-NEXT:    fmr f1, f3139; NO-FAST-P9-NEXT:    blr140entry:141  %cmp = fcmp oeq double %a, %b142  %cond = select i1 %cmp, double %c, double %d143  ret double %cond144}145 146define float @select_fast_oeq_float(float %a, float %b, float %c, float %d) {147; FAST-P8-LABEL: select_fast_oeq_float:148; FAST-P8:       # %bb.0: # %entry149; FAST-P8-NEXT:    xssubsp f0, f2, f1150; FAST-P8-NEXT:    xssubsp f1, f1, f2151; FAST-P8-NEXT:    fsel f1, f1, f3, f4152; FAST-P8-NEXT:    fsel f1, f0, f1, f4153; FAST-P8-NEXT:    blr154;155; FAST-P9-LABEL: select_fast_oeq_float:156; FAST-P9:       # %bb.0: # %entry157; FAST-P9-NEXT:    xssubsp f0, f2, f1158; FAST-P9-NEXT:    xssubsp f1, f1, f2159; FAST-P9-NEXT:    fsel f1, f1, f3, f4160; FAST-P9-NEXT:    fsel f1, f0, f1, f4161; FAST-P9-NEXT:    blr162;163; NO-FAST-P8-LABEL: select_fast_oeq_float:164; NO-FAST-P8:       # %bb.0: # %entry165; NO-FAST-P8-NEXT:    xssubsp f0, f2, f1166; NO-FAST-P8-NEXT:    xssubsp f1, f1, f2167; NO-FAST-P8-NEXT:    fsel f1, f1, f3, f4168; NO-FAST-P8-NEXT:    fsel f1, f0, f1, f4169; NO-FAST-P8-NEXT:    blr170;171; NO-FAST-P9-LABEL: select_fast_oeq_float:172; NO-FAST-P9:       # %bb.0: # %entry173; NO-FAST-P9-NEXT:    xssubsp f0, f2, f1174; NO-FAST-P9-NEXT:    xssubsp f1, f1, f2175; NO-FAST-P9-NEXT:    fsel f1, f1, f3, f4176; NO-FAST-P9-NEXT:    fsel f1, f0, f1, f4177; NO-FAST-P9-NEXT:    blr178entry:179  %cmp = fcmp nnan ninf nsz oeq float %a, %b180  %cond = select i1 %cmp, float %c, float %d181  ret float %cond182}183 184define double @select_fast_oeq_double(double %a, double %b, double %c, double %d) {185; FAST-P8-LABEL: select_fast_oeq_double:186; FAST-P8:       # %bb.0: # %entry187; FAST-P8-NEXT:    xssubdp f0, f1, f2188; FAST-P8-NEXT:    fsel f1, f0, f3, f4189; FAST-P8-NEXT:    xsnegdp f0, f0190; FAST-P8-NEXT:    fsel f1, f0, f1, f4191; FAST-P8-NEXT:    blr192;193; FAST-P9-LABEL: select_fast_oeq_double:194; FAST-P9:       # %bb.0: # %entry195; FAST-P9-NEXT:    xssubdp f0, f1, f2196; FAST-P9-NEXT:    fsel f1, f0, f3, f4197; FAST-P9-NEXT:    xsnegdp f0, f0198; FAST-P9-NEXT:    fsel f1, f0, f1, f4199; FAST-P9-NEXT:    blr200;201; NO-FAST-P8-LABEL: select_fast_oeq_double:202; NO-FAST-P8:       # %bb.0: # %entry203; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2204; NO-FAST-P8-NEXT:    fsel f1, f0, f3, f4205; NO-FAST-P8-NEXT:    xsnegdp f0, f0206; NO-FAST-P8-NEXT:    fsel f1, f0, f1, f4207; NO-FAST-P8-NEXT:    blr208;209; NO-FAST-P9-LABEL: select_fast_oeq_double:210; NO-FAST-P9:       # %bb.0: # %entry211; NO-FAST-P9-NEXT:    xssubdp f0, f1, f2212; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4213; NO-FAST-P9-NEXT:    xsnegdp f0, f0214; NO-FAST-P9-NEXT:    fsel f1, f0, f1, f4215; NO-FAST-P9-NEXT:    blr216entry:217  %cmp = fcmp nnan ninf nsz oeq double %a, %b218  %cond = select i1 %cmp, double %c, double %d219  ret double %cond220}221 222 223; Test one224define float @select_one_float(float %a, float %b, float %c, float %d) {225; FAST-P8-LABEL: select_one_float:226; FAST-P8:       # %bb.0: # %entry227; FAST-P8-NEXT:    xssubsp f0, f1, f2228; FAST-P8-NEXT:    xsnegdp f1, f0229; FAST-P8-NEXT:    fsel f0, f0, f4, f3230; FAST-P8-NEXT:    fsel f1, f1, f0, f3231; FAST-P8-NEXT:    blr232;233; FAST-P9-LABEL: select_one_float:234; FAST-P9:       # %bb.0: # %entry235; FAST-P9-NEXT:    xssubsp f0, f1, f2236; FAST-P9-NEXT:    xsnegdp f1, f0237; FAST-P9-NEXT:    fsel f0, f0, f4, f3238; FAST-P9-NEXT:    fsel f1, f1, f0, f3239; FAST-P9-NEXT:    blr240;241; NO-FAST-P8-LABEL: select_one_float:242; NO-FAST-P8:       # %bb.0: # %entry243; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2244; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, eq245; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB5_2246; NO-FAST-P8-NEXT:  # %bb.1: # %entry247; NO-FAST-P8-NEXT:    fmr f3, f4248; NO-FAST-P8-NEXT:  .LBB5_2: # %entry249; NO-FAST-P8-NEXT:    fmr f1, f3250; NO-FAST-P8-NEXT:    blr251;252; NO-FAST-P9-LABEL: select_one_float:253; NO-FAST-P9:       # %bb.0: # %entry254; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2255; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, eq256; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB5_2257; NO-FAST-P9-NEXT:  # %bb.1: # %entry258; NO-FAST-P9-NEXT:    fmr f3, f4259; NO-FAST-P9-NEXT:  .LBB5_2: # %entry260; NO-FAST-P9-NEXT:    fmr f1, f3261; NO-FAST-P9-NEXT:    blr262entry:263  %cmp = fcmp one float %a, %b264  %cond = select i1 %cmp, float %c, float %d265  ret float %cond266}267 268define float @select_one_float_nsz(float %a, float %b, float %c, float %d) {269; FAST-P8-LABEL: select_one_float_nsz:270; FAST-P8:       # %bb.0: # %entry271; FAST-P8-NEXT:    xssubsp f0, f2, f1272; FAST-P8-NEXT:    xssubsp f1, f1, f2273; FAST-P8-NEXT:    fsel f1, f1, f4, f3274; FAST-P8-NEXT:    fsel f1, f0, f1, f3275; FAST-P8-NEXT:    blr276;277; FAST-P9-LABEL: select_one_float_nsz:278; FAST-P9:       # %bb.0: # %entry279; FAST-P9-NEXT:    xssubsp f0, f2, f1280; FAST-P9-NEXT:    xssubsp f1, f1, f2281; FAST-P9-NEXT:    fsel f1, f1, f4, f3282; FAST-P9-NEXT:    fsel f1, f0, f1, f3283; FAST-P9-NEXT:    blr284;285; NO-FAST-P8-LABEL: select_one_float_nsz:286; NO-FAST-P8:       # %bb.0: # %entry287; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2288; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, eq289; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB6_2290; NO-FAST-P8-NEXT:  # %bb.1: # %entry291; NO-FAST-P8-NEXT:    fmr f3, f4292; NO-FAST-P8-NEXT:  .LBB6_2: # %entry293; NO-FAST-P8-NEXT:    fmr f1, f3294; NO-FAST-P8-NEXT:    blr295;296; NO-FAST-P9-LABEL: select_one_float_nsz:297; NO-FAST-P9:       # %bb.0: # %entry298; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2299; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, eq300; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB6_2301; NO-FAST-P9-NEXT:  # %bb.1: # %entry302; NO-FAST-P9-NEXT:    fmr f3, f4303; NO-FAST-P9-NEXT:  .LBB6_2: # %entry304; NO-FAST-P9-NEXT:    fmr f1, f3305; NO-FAST-P9-NEXT:    blr306entry:307  %cmp = fcmp nsz one float %a, %b308  %cond = select i1 %cmp, float %c, float %d309  ret float %cond310}311 312define double @select_one_double(double %a, double %b, double %c, double %d) {313; FAST-P8-LABEL: select_one_double:314; FAST-P8:       # %bb.0: # %entry315; FAST-P8-NEXT:    xssubdp f0, f1, f2316; FAST-P8-NEXT:    fsel f1, f0, f4, f3317; FAST-P8-NEXT:    xsnegdp f0, f0318; FAST-P8-NEXT:    fsel f1, f0, f1, f3319; FAST-P8-NEXT:    blr320;321; FAST-P9-LABEL: select_one_double:322; FAST-P9:       # %bb.0: # %entry323; FAST-P9-NEXT:    xssubdp f0, f1, f2324; FAST-P9-NEXT:    fsel f1, f0, f4, f3325; FAST-P9-NEXT:    xsnegdp f0, f0326; FAST-P9-NEXT:    fsel f1, f0, f1, f3327; FAST-P9-NEXT:    blr328;329; NO-FAST-P8-LABEL: select_one_double:330; NO-FAST-P8:       # %bb.0: # %entry331; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2332; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, eq333; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB7_2334; NO-FAST-P8-NEXT:  # %bb.1: # %entry335; NO-FAST-P8-NEXT:    fmr f3, f4336; NO-FAST-P8-NEXT:  .LBB7_2: # %entry337; NO-FAST-P8-NEXT:    fmr f1, f3338; NO-FAST-P8-NEXT:    blr339;340; NO-FAST-P9-LABEL: select_one_double:341; NO-FAST-P9:       # %bb.0: # %entry342; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2343; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, eq344; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB7_2345; NO-FAST-P9-NEXT:  # %bb.1: # %entry346; NO-FAST-P9-NEXT:    fmr f3, f4347; NO-FAST-P9-NEXT:  .LBB7_2: # %entry348; NO-FAST-P9-NEXT:    fmr f1, f3349; NO-FAST-P9-NEXT:    blr350entry:351  %cmp = fcmp one double %a, %b352  %cond = select i1 %cmp, double %c, double %d353  ret double %cond354}355 356define float @select_fast_one_float(float %a, float %b, float %c, float %d) {357; FAST-P8-LABEL: select_fast_one_float:358; FAST-P8:       # %bb.0: # %entry359; FAST-P8-NEXT:    xssubsp f0, f2, f1360; FAST-P8-NEXT:    xssubsp f1, f1, f2361; FAST-P8-NEXT:    fsel f1, f1, f4, f3362; FAST-P8-NEXT:    fsel f1, f0, f1, f3363; FAST-P8-NEXT:    blr364;365; FAST-P9-LABEL: select_fast_one_float:366; FAST-P9:       # %bb.0: # %entry367; FAST-P9-NEXT:    xssubsp f0, f2, f1368; FAST-P9-NEXT:    xssubsp f1, f1, f2369; FAST-P9-NEXT:    fsel f1, f1, f4, f3370; FAST-P9-NEXT:    fsel f1, f0, f1, f3371; FAST-P9-NEXT:    blr372;373; NO-FAST-P8-LABEL: select_fast_one_float:374; NO-FAST-P8:       # %bb.0: # %entry375; NO-FAST-P8-NEXT:    xssubsp f0, f2, f1376; NO-FAST-P8-NEXT:    xssubsp f1, f1, f2377; NO-FAST-P8-NEXT:    fsel f1, f1, f4, f3378; NO-FAST-P8-NEXT:    fsel f1, f0, f1, f3379; NO-FAST-P8-NEXT:    blr380;381; NO-FAST-P9-LABEL: select_fast_one_float:382; NO-FAST-P9:       # %bb.0: # %entry383; NO-FAST-P9-NEXT:    xssubsp f0, f2, f1384; NO-FAST-P9-NEXT:    xssubsp f1, f1, f2385; NO-FAST-P9-NEXT:    fsel f1, f1, f4, f3386; NO-FAST-P9-NEXT:    fsel f1, f0, f1, f3387; NO-FAST-P9-NEXT:    blr388entry:389  %cmp = fcmp nnan ninf nsz one float %a, %b390  %cond = select i1 %cmp, float %c, float %d391  ret float %cond392}393 394define double @select_fast_one_double(double %a, double %b, double %c, double %d) {395; FAST-P8-LABEL: select_fast_one_double:396; FAST-P8:       # %bb.0: # %entry397; FAST-P8-NEXT:    xssubdp f0, f1, f2398; FAST-P8-NEXT:    fsel f1, f0, f4, f3399; FAST-P8-NEXT:    xsnegdp f0, f0400; FAST-P8-NEXT:    fsel f1, f0, f1, f3401; FAST-P8-NEXT:    blr402;403; FAST-P9-LABEL: select_fast_one_double:404; FAST-P9:       # %bb.0: # %entry405; FAST-P9-NEXT:    xssubdp f0, f1, f2406; FAST-P9-NEXT:    fsel f1, f0, f4, f3407; FAST-P9-NEXT:    xsnegdp f0, f0408; FAST-P9-NEXT:    fsel f1, f0, f1, f3409; FAST-P9-NEXT:    blr410;411; NO-FAST-P8-LABEL: select_fast_one_double:412; NO-FAST-P8:       # %bb.0: # %entry413; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2414; NO-FAST-P8-NEXT:    fsel f1, f0, f4, f3415; NO-FAST-P8-NEXT:    xsnegdp f0, f0416; NO-FAST-P8-NEXT:    fsel f1, f0, f1, f3417; NO-FAST-P8-NEXT:    blr418;419; NO-FAST-P9-LABEL: select_fast_one_double:420; NO-FAST-P9:       # %bb.0: # %entry421; NO-FAST-P9-NEXT:    xssubdp f0, f1, f2422; NO-FAST-P9-NEXT:    fsel f1, f0, f4, f3423; NO-FAST-P9-NEXT:    xsnegdp f0, f0424; NO-FAST-P9-NEXT:    fsel f1, f0, f1, f3425; NO-FAST-P9-NEXT:    blr426entry:427  %cmp = fcmp nnan ninf nsz one double %a, %b428  %cond = select i1 %cmp, double %c, double %d429  ret double %cond430}431 432 433; Test oge434define float @select_oge_float(float %a, float %b, float %c, float %d) {435; FAST-P8-LABEL: select_oge_float:436; FAST-P8:       # %bb.0: # %entry437; FAST-P8-NEXT:    xssubsp f0, f1, f2438; FAST-P8-NEXT:    fsel f1, f0, f3, f4439; FAST-P8-NEXT:    blr440;441; FAST-P9-LABEL: select_oge_float:442; FAST-P9:       # %bb.0: # %entry443; FAST-P9-NEXT:    xssubsp f0, f1, f2444; FAST-P9-NEXT:    fsel f1, f0, f3, f4445; FAST-P9-NEXT:    blr446;447; NO-FAST-P8-LABEL: select_oge_float:448; NO-FAST-P8:       # %bb.0: # %entry449; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2450; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, lt451; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB10_2452; NO-FAST-P8-NEXT:  # %bb.1: # %entry453; NO-FAST-P8-NEXT:    fmr f3, f4454; NO-FAST-P8-NEXT:  .LBB10_2: # %entry455; NO-FAST-P8-NEXT:    fmr f1, f3456; NO-FAST-P8-NEXT:    blr457;458; NO-FAST-P9-LABEL: select_oge_float:459; NO-FAST-P9:       # %bb.0: # %entry460; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2461; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, lt462; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB10_2463; NO-FAST-P9-NEXT:  # %bb.1: # %entry464; NO-FAST-P9-NEXT:    fmr f3, f4465; NO-FAST-P9-NEXT:  .LBB10_2: # %entry466; NO-FAST-P9-NEXT:    fmr f1, f3467; NO-FAST-P9-NEXT:    blr468entry:469  %cmp = fcmp oge float %a, %b470  %cond = select i1 %cmp, float %c, float %d471  ret float %cond472}473 474define double @select_oge_double(double %a, double %b, double %c, double %d) {475; FAST-P8-LABEL: select_oge_double:476; FAST-P8:       # %bb.0: # %entry477; FAST-P8-NEXT:    xssubdp f0, f1, f2478; FAST-P8-NEXT:    fsel f1, f0, f3, f4479; FAST-P8-NEXT:    blr480;481; FAST-P9-LABEL: select_oge_double:482; FAST-P9:       # %bb.0: # %entry483; FAST-P9-NEXT:    xssubdp f0, f1, f2484; FAST-P9-NEXT:    fsel f1, f0, f3, f4485; FAST-P9-NEXT:    blr486;487; NO-FAST-P8-LABEL: select_oge_double:488; NO-FAST-P8:       # %bb.0: # %entry489; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2490; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, lt491; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB11_2492; NO-FAST-P8-NEXT:  # %bb.1: # %entry493; NO-FAST-P8-NEXT:    fmr f3, f4494; NO-FAST-P8-NEXT:  .LBB11_2: # %entry495; NO-FAST-P8-NEXT:    fmr f1, f3496; NO-FAST-P8-NEXT:    blr497;498; NO-FAST-P9-LABEL: select_oge_double:499; NO-FAST-P9:       # %bb.0: # %entry500; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2501; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, lt502; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB11_2503; NO-FAST-P9-NEXT:  # %bb.1: # %entry504; NO-FAST-P9-NEXT:    fmr f3, f4505; NO-FAST-P9-NEXT:  .LBB11_2: # %entry506; NO-FAST-P9-NEXT:    fmr f1, f3507; NO-FAST-P9-NEXT:    blr508entry:509  %cmp = fcmp oge double %a, %b510  %cond = select i1 %cmp, double %c, double %d511  ret double %cond512}513 514define float @select_fast_oge_float(float %a, float %b, float %c, float %d) {515; FAST-P8-LABEL: select_fast_oge_float:516; FAST-P8:       # %bb.0: # %entry517; FAST-P8-NEXT:    xssubsp f0, f1, f2518; FAST-P8-NEXT:    fsel f1, f0, f3, f4519; FAST-P8-NEXT:    blr520;521; FAST-P9-LABEL: select_fast_oge_float:522; FAST-P9:       # %bb.0: # %entry523; FAST-P9-NEXT:    xssubsp f0, f1, f2524; FAST-P9-NEXT:    fsel f1, f0, f3, f4525; FAST-P9-NEXT:    blr526;527; NO-FAST-P8-LABEL: select_fast_oge_float:528; NO-FAST-P8:       # %bb.0: # %entry529; NO-FAST-P8-NEXT:    xssubsp f0, f1, f2530; NO-FAST-P8-NEXT:    fsel f1, f0, f3, f4531; NO-FAST-P8-NEXT:    blr532;533; NO-FAST-P9-LABEL: select_fast_oge_float:534; NO-FAST-P9:       # %bb.0: # %entry535; NO-FAST-P9-NEXT:    xssubsp f0, f1, f2536; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4537; NO-FAST-P9-NEXT:    blr538entry:539  %cmp = fcmp nnan ninf nsz oge float %a, %b540  %cond = select i1 %cmp, float %c, float %d541  ret float %cond542}543 544define double @select_fast_oge_double(double %a, double %b, double %c, double %d) {545; FAST-P8-LABEL: select_fast_oge_double:546; FAST-P8:       # %bb.0: # %entry547; FAST-P8-NEXT:    xssubdp f0, f1, f2548; FAST-P8-NEXT:    fsel f1, f0, f3, f4549; FAST-P8-NEXT:    blr550;551; FAST-P9-LABEL: select_fast_oge_double:552; FAST-P9:       # %bb.0: # %entry553; FAST-P9-NEXT:    xssubdp f0, f1, f2554; FAST-P9-NEXT:    fsel f1, f0, f3, f4555; FAST-P9-NEXT:    blr556;557; NO-FAST-P8-LABEL: select_fast_oge_double:558; NO-FAST-P8:       # %bb.0: # %entry559; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2560; NO-FAST-P8-NEXT:    fsel f1, f0, f3, f4561; NO-FAST-P8-NEXT:    blr562;563; NO-FAST-P9-LABEL: select_fast_oge_double:564; NO-FAST-P9:       # %bb.0: # %entry565; NO-FAST-P9-NEXT:    xssubdp f0, f1, f2566; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4567; NO-FAST-P9-NEXT:    blr568entry:569  %cmp = fcmp nnan ninf nsz oge double %a, %b570  %cond = select i1 %cmp, double %c, double %d571  ret double %cond572}573 574 575; Test olt576define float @select_olt_float(float %a, float %b, float %c, float %d) {577; FAST-P8-LABEL: select_olt_float:578; FAST-P8:       # %bb.0: # %entry579; FAST-P8-NEXT:    xssubsp f0, f1, f2580; FAST-P8-NEXT:    fsel f1, f0, f4, f3581; FAST-P8-NEXT:    blr582;583; FAST-P9-LABEL: select_olt_float:584; FAST-P9:       # %bb.0: # %entry585; FAST-P9-NEXT:    xssubsp f0, f1, f2586; FAST-P9-NEXT:    fsel f1, f0, f4, f3587; FAST-P9-NEXT:    blr588;589; NO-FAST-P8-LABEL: select_olt_float:590; NO-FAST-P8:       # %bb.0: # %entry591; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2592; NO-FAST-P8-NEXT:    blt cr0, .LBB14_2593; NO-FAST-P8-NEXT:  # %bb.1: # %entry594; NO-FAST-P8-NEXT:    fmr f3, f4595; NO-FAST-P8-NEXT:  .LBB14_2: # %entry596; NO-FAST-P8-NEXT:    fmr f1, f3597; NO-FAST-P8-NEXT:    blr598;599; NO-FAST-P9-LABEL: select_olt_float:600; NO-FAST-P9:       # %bb.0: # %entry601; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2602; NO-FAST-P9-NEXT:    blt cr0, .LBB14_2603; NO-FAST-P9-NEXT:  # %bb.1: # %entry604; NO-FAST-P9-NEXT:    fmr f3, f4605; NO-FAST-P9-NEXT:  .LBB14_2: # %entry606; NO-FAST-P9-NEXT:    fmr f1, f3607; NO-FAST-P9-NEXT:    blr608entry:609  %cmp = fcmp olt float %a, %b610  %cond = select i1 %cmp, float %c, float %d611  ret float %cond612}613 614define double @select_olt_double(double %a, double %b, double %c, double %d) {615; FAST-P8-LABEL: select_olt_double:616; FAST-P8:       # %bb.0: # %entry617; FAST-P8-NEXT:    xssubdp f0, f1, f2618; FAST-P8-NEXT:    fsel f1, f0, f4, f3619; FAST-P8-NEXT:    blr620;621; FAST-P9-LABEL: select_olt_double:622; FAST-P9:       # %bb.0: # %entry623; FAST-P9-NEXT:    xssubdp f0, f1, f2624; FAST-P9-NEXT:    fsel f1, f0, f4, f3625; FAST-P9-NEXT:    blr626;627; NO-FAST-P8-LABEL: select_olt_double:628; NO-FAST-P8:       # %bb.0: # %entry629; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2630; NO-FAST-P8-NEXT:    blt cr0, .LBB15_2631; NO-FAST-P8-NEXT:  # %bb.1: # %entry632; NO-FAST-P8-NEXT:    fmr f3, f4633; NO-FAST-P8-NEXT:  .LBB15_2: # %entry634; NO-FAST-P8-NEXT:    fmr f1, f3635; NO-FAST-P8-NEXT:    blr636;637; NO-FAST-P9-LABEL: select_olt_double:638; NO-FAST-P9:       # %bb.0: # %entry639; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f2640; NO-FAST-P9-NEXT:    blt cr0, .LBB15_2641; NO-FAST-P9-NEXT:  # %bb.1: # %entry642; NO-FAST-P9-NEXT:    fmr f3, f4643; NO-FAST-P9-NEXT:  .LBB15_2: # %entry644; NO-FAST-P9-NEXT:    fmr f1, f3645; NO-FAST-P9-NEXT:    blr646entry:647  %cmp = fcmp olt double %a, %b648  %cond = select i1 %cmp, double %c, double %d649  ret double %cond650}651 652define float @select_fast_olt_float(float %a, float %b, float %c, float %d) {653; FAST-P8-LABEL: select_fast_olt_float:654; FAST-P8:       # %bb.0: # %entry655; FAST-P8-NEXT:    xssubsp f0, f1, f2656; FAST-P8-NEXT:    fsel f1, f0, f4, f3657; FAST-P8-NEXT:    blr658;659; FAST-P9-LABEL: select_fast_olt_float:660; FAST-P9:       # %bb.0: # %entry661; FAST-P9-NEXT:    xssubsp f0, f1, f2662; FAST-P9-NEXT:    fsel f1, f0, f4, f3663; FAST-P9-NEXT:    blr664;665; NO-FAST-P8-LABEL: select_fast_olt_float:666; NO-FAST-P8:       # %bb.0: # %entry667; NO-FAST-P8-NEXT:    xssubsp f0, f1, f2668; NO-FAST-P8-NEXT:    fsel f1, f0, f4, f3669; NO-FAST-P8-NEXT:    blr670;671; NO-FAST-P9-LABEL: select_fast_olt_float:672; NO-FAST-P9:       # %bb.0: # %entry673; NO-FAST-P9-NEXT:    xssubsp f0, f1, f2674; NO-FAST-P9-NEXT:    fsel f1, f0, f4, f3675; NO-FAST-P9-NEXT:    blr676entry:677  %cmp = fcmp ninf nnan nsz olt float %a, %b678  %cond = select i1 %cmp, float %c, float %d679  ret float %cond680}681 682define double @select_fast_olt_double(double %a, double %b, double %c, double %d) {683; FAST-P8-LABEL: select_fast_olt_double:684; FAST-P8:       # %bb.0: # %entry685; FAST-P8-NEXT:    xssubdp f0, f1, f2686; FAST-P8-NEXT:    fsel f1, f0, f4, f3687; FAST-P8-NEXT:    blr688;689; FAST-P9-LABEL: select_fast_olt_double:690; FAST-P9:       # %bb.0: # %entry691; FAST-P9-NEXT:    xssubdp f0, f1, f2692; FAST-P9-NEXT:    fsel f1, f0, f4, f3693; FAST-P9-NEXT:    blr694;695; NO-FAST-P8-LABEL: select_fast_olt_double:696; NO-FAST-P8:       # %bb.0: # %entry697; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2698; NO-FAST-P8-NEXT:    fsel f1, f0, f4, f3699; NO-FAST-P8-NEXT:    blr700;701; NO-FAST-P9-LABEL: select_fast_olt_double:702; NO-FAST-P9:       # %bb.0: # %entry703; NO-FAST-P9-NEXT:    xssubdp f0, f1, f2704; NO-FAST-P9-NEXT:    fsel f1, f0, f4, f3705; NO-FAST-P9-NEXT:    blr706entry:707  %cmp = fcmp nnan ninf nsz olt double %a, %b708  %cond = select i1 %cmp, double %c, double %d709  ret double %cond710}711 712 713; Test ogt714define float @select_ogt_float(float %a, float %b, float %c, float %d) {715; FAST-P8-LABEL: select_ogt_float:716; FAST-P8:       # %bb.0: # %entry717; FAST-P8-NEXT:    xssubsp f0, f2, f1718; FAST-P8-NEXT:    fsel f1, f0, f4, f3719; FAST-P8-NEXT:    blr720;721; FAST-P9-LABEL: select_ogt_float:722; FAST-P9:       # %bb.0: # %entry723; FAST-P9-NEXT:    xssubsp f0, f2, f1724; FAST-P9-NEXT:    fsel f1, f0, f4, f3725; FAST-P9-NEXT:    blr726;727; NO-FAST-P8-LABEL: select_ogt_float:728; NO-FAST-P8:       # %bb.0: # %entry729; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2730; NO-FAST-P8-NEXT:    bgt cr0, .LBB18_2731; NO-FAST-P8-NEXT:  # %bb.1: # %entry732; NO-FAST-P8-NEXT:    fmr f3, f4733; NO-FAST-P8-NEXT:  .LBB18_2: # %entry734; NO-FAST-P8-NEXT:    fmr f1, f3735; NO-FAST-P8-NEXT:    blr736;737; NO-FAST-P9-LABEL: select_ogt_float:738; NO-FAST-P9:       # %bb.0: # %entry739; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2740; NO-FAST-P9-NEXT:    bgt cr0, .LBB18_2741; NO-FAST-P9-NEXT:  # %bb.1: # %entry742; NO-FAST-P9-NEXT:    fmr f3, f4743; NO-FAST-P9-NEXT:  .LBB18_2: # %entry744; NO-FAST-P9-NEXT:    fmr f1, f3745; NO-FAST-P9-NEXT:    blr746entry:747  %cmp = fcmp ogt float %a, %b748  %cond = select i1 %cmp, float %c, float %d749  ret float %cond750}751 752define double @select_ogt_double(double %a, double %b, double %c, double %d) {753; FAST-P8-LABEL: select_ogt_double:754; FAST-P8:       # %bb.0: # %entry755; FAST-P8-NEXT:    xssubdp f0, f2, f1756; FAST-P8-NEXT:    fsel f1, f0, f4, f3757; FAST-P8-NEXT:    blr758;759; FAST-P9-LABEL: select_ogt_double:760; FAST-P9:       # %bb.0: # %entry761; FAST-P9-NEXT:    xssubdp f0, f2, f1762; FAST-P9-NEXT:    fsel f1, f0, f4, f3763; FAST-P9-NEXT:    blr764;765; NO-FAST-P8-LABEL: select_ogt_double:766; NO-FAST-P8:       # %bb.0: # %entry767; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2768; NO-FAST-P8-NEXT:    bgt cr0, .LBB19_2769; NO-FAST-P8-NEXT:  # %bb.1: # %entry770; NO-FAST-P8-NEXT:    fmr f3, f4771; NO-FAST-P8-NEXT:  .LBB19_2: # %entry772; NO-FAST-P8-NEXT:    fmr f1, f3773; NO-FAST-P8-NEXT:    blr774;775; NO-FAST-P9-LABEL: select_ogt_double:776; NO-FAST-P9:       # %bb.0: # %entry777; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f2778; NO-FAST-P9-NEXT:    bgt cr0, .LBB19_2779; NO-FAST-P9-NEXT:  # %bb.1: # %entry780; NO-FAST-P9-NEXT:    fmr f3, f4781; NO-FAST-P9-NEXT:  .LBB19_2: # %entry782; NO-FAST-P9-NEXT:    fmr f1, f3783; NO-FAST-P9-NEXT:    blr784entry:785  %cmp = fcmp ogt double %a, %b786  %cond = select i1 %cmp, double %c, double %d787  ret double %cond788}789 790define float @select_fast_ogt_float(float %a, float %b, float %c, float %d) {791; FAST-P8-LABEL: select_fast_ogt_float:792; FAST-P8:       # %bb.0: # %entry793; FAST-P8-NEXT:    xssubsp f0, f2, f1794; FAST-P8-NEXT:    fsel f1, f0, f4, f3795; FAST-P8-NEXT:    blr796;797; FAST-P9-LABEL: select_fast_ogt_float:798; FAST-P9:       # %bb.0: # %entry799; FAST-P9-NEXT:    xssubsp f0, f2, f1800; FAST-P9-NEXT:    fsel f1, f0, f4, f3801; FAST-P9-NEXT:    blr802;803; NO-FAST-P8-LABEL: select_fast_ogt_float:804; NO-FAST-P8:       # %bb.0: # %entry805; NO-FAST-P8-NEXT:    xssubsp f0, f2, f1806; NO-FAST-P8-NEXT:    fsel f1, f0, f4, f3807; NO-FAST-P8-NEXT:    blr808;809; NO-FAST-P9-LABEL: select_fast_ogt_float:810; NO-FAST-P9:       # %bb.0: # %entry811; NO-FAST-P9-NEXT:    xssubsp f0, f2, f1812; NO-FAST-P9-NEXT:    fsel f1, f0, f4, f3813; NO-FAST-P9-NEXT:    blr814entry:815  %cmp = fcmp nnan ninf nsz ogt float %a, %b816  %cond = select i1 %cmp, float %c, float %d817  ret float %cond818}819 820define double @select_fast_ogt_double(double %a, double %b, double %c, double %d) {821; FAST-P8-LABEL: select_fast_ogt_double:822; FAST-P8:       # %bb.0: # %entry823; FAST-P8-NEXT:    xssubdp f0, f2, f1824; FAST-P8-NEXT:    fsel f1, f0, f4, f3825; FAST-P8-NEXT:    blr826;827; FAST-P9-LABEL: select_fast_ogt_double:828; FAST-P9:       # %bb.0: # %entry829; FAST-P9-NEXT:    xssubdp f0, f2, f1830; FAST-P9-NEXT:    fsel f1, f0, f4, f3831; FAST-P9-NEXT:    blr832;833; NO-FAST-P8-LABEL: select_fast_ogt_double:834; NO-FAST-P8:       # %bb.0: # %entry835; NO-FAST-P8-NEXT:    xssubdp f0, f2, f1836; NO-FAST-P8-NEXT:    fsel f1, f0, f4, f3837; NO-FAST-P8-NEXT:    blr838;839; NO-FAST-P9-LABEL: select_fast_ogt_double:840; NO-FAST-P9:       # %bb.0: # %entry841; NO-FAST-P9-NEXT:    xssubdp f0, f2, f1842; NO-FAST-P9-NEXT:    fsel f1, f0, f4, f3843; NO-FAST-P9-NEXT:    blr844entry:845  %cmp = fcmp nnan ninf nsz ogt double %a, %b846  %cond = select i1 %cmp, double %c, double %d847  ret double %cond848}849 850 851; Test ole852define float @select_ole_float(float %a, float %b, float %c, float %d) {853; FAST-P8-LABEL: select_ole_float:854; FAST-P8:       # %bb.0: # %entry855; FAST-P8-NEXT:    xssubsp f0, f2, f1856; FAST-P8-NEXT:    fsel f1, f0, f3, f4857; FAST-P8-NEXT:    blr858;859; FAST-P9-LABEL: select_ole_float:860; FAST-P9:       # %bb.0: # %entry861; FAST-P9-NEXT:    xssubsp f0, f2, f1862; FAST-P9-NEXT:    fsel f1, f0, f3, f4863; FAST-P9-NEXT:    blr864;865; NO-FAST-P8-LABEL: select_ole_float:866; NO-FAST-P8:       # %bb.0: # %entry867; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2868; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, gt869; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB22_2870; NO-FAST-P8-NEXT:  # %bb.1: # %entry871; NO-FAST-P8-NEXT:    fmr f3, f4872; NO-FAST-P8-NEXT:  .LBB22_2: # %entry873; NO-FAST-P8-NEXT:    fmr f1, f3874; NO-FAST-P8-NEXT:    blr875;876; NO-FAST-P9-LABEL: select_ole_float:877; NO-FAST-P9:       # %bb.0: # %entry878; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2879; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, gt880; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB22_2881; NO-FAST-P9-NEXT:  # %bb.1: # %entry882; NO-FAST-P9-NEXT:    fmr f3, f4883; NO-FAST-P9-NEXT:  .LBB22_2: # %entry884; NO-FAST-P9-NEXT:    fmr f1, f3885; NO-FAST-P9-NEXT:    blr886entry:887  %cmp = fcmp ole float %a, %b888  %cond = select i1 %cmp, float %c, float %d889  ret float %cond890}891 892define double @select_ole_double(double %a, double %b, double %c, double %d) {893; FAST-P8-LABEL: select_ole_double:894; FAST-P8:       # %bb.0: # %entry895; FAST-P8-NEXT:    xssubdp f0, f2, f1896; FAST-P8-NEXT:    fsel f1, f0, f3, f4897; FAST-P8-NEXT:    blr898;899; FAST-P9-LABEL: select_ole_double:900; FAST-P9:       # %bb.0: # %entry901; FAST-P9-NEXT:    xssubdp f0, f2, f1902; FAST-P9-NEXT:    fsel f1, f0, f3, f4903; FAST-P9-NEXT:    blr904;905; NO-FAST-P8-LABEL: select_ole_double:906; NO-FAST-P8:       # %bb.0: # %entry907; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2908; NO-FAST-P8-NEXT:    crnor 4*cr5+lt, un, gt909; NO-FAST-P8-NEXT:    bc 12, 4*cr5+lt, .LBB23_2910; NO-FAST-P8-NEXT:  # %bb.1: # %entry911; NO-FAST-P8-NEXT:    fmr f3, f4912; NO-FAST-P8-NEXT:  .LBB23_2: # %entry913; NO-FAST-P8-NEXT:    fmr f1, f3914; NO-FAST-P8-NEXT:    blr915;916; NO-FAST-P9-LABEL: select_ole_double:917; NO-FAST-P9:       # %bb.0: # %entry918; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f2919; NO-FAST-P9-NEXT:    crnor 4*cr5+lt, un, gt920; NO-FAST-P9-NEXT:    bc 12, 4*cr5+lt, .LBB23_2921; NO-FAST-P9-NEXT:  # %bb.1: # %entry922; NO-FAST-P9-NEXT:    fmr f3, f4923; NO-FAST-P9-NEXT:  .LBB23_2: # %entry924; NO-FAST-P9-NEXT:    fmr f1, f3925; NO-FAST-P9-NEXT:    blr926entry:927  %cmp = fcmp ole double %a, %b928  %cond = select i1 %cmp, double %c, double %d929  ret double %cond930}931 932define float @select_fast_ole_float(float %a, float %b, float %c, float %d) {933; FAST-P8-LABEL: select_fast_ole_float:934; FAST-P8:       # %bb.0: # %entry935; FAST-P8-NEXT:    xssubsp f0, f2, f1936; FAST-P8-NEXT:    fsel f1, f0, f3, f4937; FAST-P8-NEXT:    blr938;939; FAST-P9-LABEL: select_fast_ole_float:940; FAST-P9:       # %bb.0: # %entry941; FAST-P9-NEXT:    xssubsp f0, f2, f1942; FAST-P9-NEXT:    fsel f1, f0, f3, f4943; FAST-P9-NEXT:    blr944;945; NO-FAST-P8-LABEL: select_fast_ole_float:946; NO-FAST-P8:       # %bb.0: # %entry947; NO-FAST-P8-NEXT:    xssubsp f0, f2, f1948; NO-FAST-P8-NEXT:    fsel f1, f0, f3, f4949; NO-FAST-P8-NEXT:    blr950;951; NO-FAST-P9-LABEL: select_fast_ole_float:952; NO-FAST-P9:       # %bb.0: # %entry953; NO-FAST-P9-NEXT:    xssubsp f0, f2, f1954; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4955; NO-FAST-P9-NEXT:    blr956entry:957  %cmp = fcmp nnan ninf nsz ole float %a, %b958  %cond = select i1 %cmp, float %c, float %d959  ret float %cond960}961 962define double @select_fast_ole_double(double %a, double %b, double %c, double %d) {963; FAST-P8-LABEL: select_fast_ole_double:964; FAST-P8:       # %bb.0: # %entry965; FAST-P8-NEXT:    xssubdp f0, f2, f1966; FAST-P8-NEXT:    fsel f1, f0, f3, f4967; FAST-P8-NEXT:    blr968;969; FAST-P9-LABEL: select_fast_ole_double:970; FAST-P9:       # %bb.0: # %entry971; FAST-P9-NEXT:    xssubdp f0, f2, f1972; FAST-P9-NEXT:    fsel f1, f0, f3, f4973; FAST-P9-NEXT:    blr974;975; NO-FAST-P8-LABEL: select_fast_ole_double:976; NO-FAST-P8:       # %bb.0: # %entry977; NO-FAST-P8-NEXT:    xssubdp f0, f2, f1978; NO-FAST-P8-NEXT:    fsel f1, f0, f3, f4979; NO-FAST-P8-NEXT:    blr980;981; NO-FAST-P9-LABEL: select_fast_ole_double:982; NO-FAST-P9:       # %bb.0: # %entry983; NO-FAST-P9-NEXT:    xssubdp f0, f2, f1984; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4985; NO-FAST-P9-NEXT:    blr986entry:987  %cmp = fcmp nnan ninf nsz ole double %a, %b988  %cond = select i1 %cmp, double %c, double %d989  ret double %cond990}991 992; Test RHS is 1.000000e+00993define double @onecmp1(double %a, double %y, double %z) {994; FAST-P8-LABEL: onecmp1:995; FAST-P8:       # %bb.0: # %entry996; FAST-P8-NEXT:    vspltisw v2, -1997; FAST-P8-NEXT:    xvcvsxwdp vs0, vs34998; FAST-P8-NEXT:    xsadddp f0, f1, f0999; FAST-P8-NEXT:    fsel f1, f0, f2, f31000; FAST-P8-NEXT:    blr1001;1002; FAST-P9-LABEL: onecmp1:1003; FAST-P9:       # %bb.0: # %entry1004; FAST-P9-NEXT:    vspltisw v2, -11005; FAST-P9-NEXT:    xvcvsxwdp vs0, vs341006; FAST-P9-NEXT:    xsadddp f0, f1, f01007; FAST-P9-NEXT:    fsel f1, f0, f2, f31008; FAST-P9-NEXT:    blr1009;1010; NO-FAST-P8-LABEL: onecmp1:1011; NO-FAST-P8:       # %bb.0: # %entry1012; NO-FAST-P8-NEXT:    vspltisw v2, 11013; NO-FAST-P8-NEXT:    xvcvsxwdp vs0, vs341014; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f01015; NO-FAST-P8-NEXT:    bc 12, lt, .LBB26_31016; NO-FAST-P8-NEXT:  # %bb.1: # %entry1017; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f11018; NO-FAST-P8-NEXT:    bc 12, un, .LBB26_31019; NO-FAST-P8-NEXT:  # %bb.2: # %entry1020; NO-FAST-P8-NEXT:    fmr f3, f21021; NO-FAST-P8-NEXT:  .LBB26_3: # %entry1022; NO-FAST-P8-NEXT:    fmr f1, f31023; NO-FAST-P8-NEXT:    blr1024;1025; NO-FAST-P9-LABEL: onecmp1:1026; NO-FAST-P9:       # %bb.0: # %entry1027; NO-FAST-P9-NEXT:    vspltisw v2, 11028; NO-FAST-P9-NEXT:    xvcvsxwdp vs0, vs341029; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f01030; NO-FAST-P9-NEXT:    bc 12, lt, .LBB26_31031; NO-FAST-P9-NEXT:  # %bb.1: # %entry1032; NO-FAST-P9-NEXT:    fcmpu cr0, f1, f11033; NO-FAST-P9-NEXT:    bc 12, un, .LBB26_31034; NO-FAST-P9-NEXT:  # %bb.2: # %entry1035; NO-FAST-P9-NEXT:    fmr f3, f21036; NO-FAST-P9-NEXT:  .LBB26_3: # %entry1037; NO-FAST-P9-NEXT:    fmr f1, f31038; NO-FAST-P9-NEXT:    blr1039entry:1040  %cmp = fcmp ult double %a, 1.000000e+001041  %z.y = select i1 %cmp, double %z, double %y1042  ret double %z.y1043}1044 1045define double @onecmp2(double %a, double %y, double %z) {1046; FAST-P8-LABEL: onecmp2:1047; FAST-P8:       # %bb.0: # %entry1048; FAST-P8-NEXT:    vspltisw v2, 11049; FAST-P8-NEXT:    xvcvsxwdp vs0, vs341050; FAST-P8-NEXT:    xssubdp f0, f0, f11051; FAST-P8-NEXT:    fsel f1, f0, f3, f21052; FAST-P8-NEXT:    blr1053;1054; FAST-P9-LABEL: onecmp2:1055; FAST-P9:       # %bb.0: # %entry1056; FAST-P9-NEXT:    vspltisw v2, 11057; FAST-P9-NEXT:    xvcvsxwdp vs0, vs341058; FAST-P9-NEXT:    xssubdp f0, f0, f11059; FAST-P9-NEXT:    fsel f1, f0, f3, f21060; FAST-P9-NEXT:    blr1061;1062; NO-FAST-P8-LABEL: onecmp2:1063; NO-FAST-P8:       # %bb.0: # %entry1064; NO-FAST-P8-NEXT:    vspltisw v2, 11065; NO-FAST-P8-NEXT:    xvcvsxwdp vs0, vs341066; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f01067; NO-FAST-P8-NEXT:    bgt cr0, .LBB27_21068; NO-FAST-P8-NEXT:  # %bb.1: # %entry1069; NO-FAST-P8-NEXT:    fmr f2, f31070; NO-FAST-P8-NEXT:  .LBB27_2: # %entry1071; NO-FAST-P8-NEXT:    fmr f1, f21072; NO-FAST-P8-NEXT:    blr1073;1074; NO-FAST-P9-LABEL: onecmp2:1075; NO-FAST-P9:       # %bb.0: # %entry1076; NO-FAST-P9-NEXT:    vspltisw v2, 11077; NO-FAST-P9-NEXT:    xvcvsxwdp vs0, vs341078; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f01079; NO-FAST-P9-NEXT:    bgt cr0, .LBB27_21080; NO-FAST-P9-NEXT:  # %bb.1: # %entry1081; NO-FAST-P9-NEXT:    fmr f2, f31082; NO-FAST-P9-NEXT:  .LBB27_2: # %entry1083; NO-FAST-P9-NEXT:    fmr f1, f21084; NO-FAST-P9-NEXT:    blr1085entry:1086  %cmp = fcmp ogt double %a, 1.000000e+001087  %y.z = select i1 %cmp, double %y, double %z1088  ret double %y.z1089}1090 1091define double @onecmp3(double %a, double %y, double %z) {1092; FAST-P8-LABEL: onecmp3:1093; FAST-P8:       # %bb.0: # %entry1094; FAST-P8-NEXT:    vspltisw v2, -11095; FAST-P8-NEXT:    xvcvsxwdp vs0, vs341096; FAST-P8-NEXT:    xsadddp f0, f1, f01097; FAST-P8-NEXT:    fsel f1, f0, f2, f31098; FAST-P8-NEXT:    xsnegdp f0, f01099; FAST-P8-NEXT:    fsel f1, f0, f1, f31100; FAST-P8-NEXT:    blr1101;1102; FAST-P9-LABEL: onecmp3:1103; FAST-P9:       # %bb.0: # %entry1104; FAST-P9-NEXT:    vspltisw v2, -11105; FAST-P9-NEXT:    xvcvsxwdp vs0, vs341106; FAST-P9-NEXT:    xsadddp f0, f1, f01107; FAST-P9-NEXT:    fsel f1, f0, f2, f31108; FAST-P9-NEXT:    xsnegdp f0, f01109; FAST-P9-NEXT:    fsel f1, f0, f1, f31110; FAST-P9-NEXT:    blr1111;1112; NO-FAST-P8-LABEL: onecmp3:1113; NO-FAST-P8:       # %bb.0: # %entry1114; NO-FAST-P8-NEXT:    vspltisw v2, 11115; NO-FAST-P8-NEXT:    xvcvsxwdp vs0, vs341116; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f01117; NO-FAST-P8-NEXT:    beq cr0, .LBB28_21118; NO-FAST-P8-NEXT:  # %bb.1: # %entry1119; NO-FAST-P8-NEXT:    fmr f2, f31120; NO-FAST-P8-NEXT:  .LBB28_2: # %entry1121; NO-FAST-P8-NEXT:    fmr f1, f21122; NO-FAST-P8-NEXT:    blr1123;1124; NO-FAST-P9-LABEL: onecmp3:1125; NO-FAST-P9:       # %bb.0: # %entry1126; NO-FAST-P9-NEXT:    vspltisw v2, 11127; NO-FAST-P9-NEXT:    xvcvsxwdp vs0, vs341128; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f01129; NO-FAST-P9-NEXT:    beq cr0, .LBB28_21130; NO-FAST-P9-NEXT:  # %bb.1: # %entry1131; NO-FAST-P9-NEXT:    fmr f2, f31132; NO-FAST-P9-NEXT:  .LBB28_2: # %entry1133; NO-FAST-P9-NEXT:    fmr f1, f21134; NO-FAST-P9-NEXT:    blr1135entry:1136  %cmp = fcmp oeq double %a, 1.000000e+001137  %y.z = select i1 %cmp, double %y, double %z1138  ret double %y.z1139}1140