diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp --- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -1322,7 +1322,7 @@ } Value *InstCombinerImpl::foldLogicOfFCmps(FCmpInst *LHS, FCmpInst *RHS, - bool IsAnd) { + bool IsAnd, bool IsLogicalSelect) { Value *LHS0 = LHS->getOperand(0), *LHS1 = LHS->getOperand(1); Value *RHS0 = RHS->getOperand(0), *RHS1 = RHS->getOperand(1); FCmpInst::Predicate PredL = LHS->getPredicate(), PredR = RHS->getPredicate(); @@ -1353,7 +1353,7 @@ unsigned NewPred = IsAnd ? FCmpCodeL & FCmpCodeR : FCmpCodeL | FCmpCodeR; // Intersect the fast math flags. - // TODO: We can union the fast math flags. + // TODO: We can union the fast math flags unless this is a logical select. IRBuilder<>::FastMathFlagGuard FMFG(Builder); FastMathFlags FMF = LHS->getFastMathFlags(); FMF &= RHS->getFastMathFlags(); @@ -1362,8 +1362,11 @@ return getFCmpValue(NewPred, LHS0, LHS1, Builder); } - if ((PredL == FCmpInst::FCMP_ORD && PredR == FCmpInst::FCMP_ORD && IsAnd) || - (PredL == FCmpInst::FCMP_UNO && PredR == FCmpInst::FCMP_UNO && !IsAnd)) { + // This transform is not valid for a logical select. + if (!IsLogicalSelect && + ((PredL == FCmpInst::FCMP_ORD && PredR == FCmpInst::FCMP_ORD && IsAnd) || + (PredL == FCmpInst::FCMP_UNO && PredR == FCmpInst::FCMP_UNO && + !IsAnd))) { if (LHS0->getType() != RHS0->getType()) return nullptr; @@ -2125,7 +2128,7 @@ if (FCmpInst *LHS = dyn_cast(I.getOperand(0))) if (FCmpInst *RHS = dyn_cast(I.getOperand(1))) - if (Value *Res = foldLogicOfFCmps(LHS, RHS, true)) + if (Value *Res = foldLogicOfFCmps(LHS, RHS, /*IsAnd*/ true)) return replaceInstUsesWith(I, Res); if (Instruction *FoldedFCmps = reassociateFCmps(I, Builder)) @@ -2891,7 +2894,7 @@ if (FCmpInst *LHS = dyn_cast(I.getOperand(0))) if (FCmpInst *RHS = dyn_cast(I.getOperand(1))) - if (Value *Res = foldLogicOfFCmps(LHS, RHS, false)) + if (Value *Res = foldLogicOfFCmps(LHS, RHS, /*IsAnd*/ false)) return replaceInstUsesWith(I, Res); if (Instruction *FoldedFCmps = reassociateFCmps(I, Builder)) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h --- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h +++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h @@ -353,7 +353,8 @@ /// Optimize (fcmp)&(fcmp) or (fcmp)|(fcmp). /// NOTE: Unlike most of instcombine, this returns a Value which should /// already be inserted into the function. - Value *foldLogicOfFCmps(FCmpInst *LHS, FCmpInst *RHS, bool IsAnd); + Value *foldLogicOfFCmps(FCmpInst *LHS, FCmpInst *RHS, bool IsAnd, + bool IsLogicalSelect = false); Value *foldAndOrOfICmpsOfAndWithPow2(ICmpInst *LHS, ICmpInst *RHS, Instruction *CxtI, bool IsAnd, diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp --- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp @@ -2605,13 +2605,29 @@ // Folding select to and/or i1 isn't poison safe in general. impliesPoison // checks whether folding it does not convert a well-defined value into // poison. - if (match(TrueVal, m_One()) && impliesPoison(FalseVal, CondVal)) { - // Change: A = select B, true, C --> A = or B, C - return BinaryOperator::CreateOr(CondVal, FalseVal); + if (match(TrueVal, m_One())) { + if (impliesPoison(FalseVal, CondVal)) { + // Change: A = select B, true, C --> A = or B, C + return BinaryOperator::CreateOr(CondVal, FalseVal); + } + + if (auto *LHS = dyn_cast(CondVal)) + if (auto *RHS = dyn_cast(FalseVal)) + if (Value *V = foldLogicOfFCmps(LHS, RHS, /*IsAnd*/ false, + /*IsSelectLogical*/ true)) + return replaceInstUsesWith(SI, V); } - if (match(FalseVal, m_Zero()) && impliesPoison(TrueVal, CondVal)) { - // Change: A = select B, C, false --> A = and B, C - return BinaryOperator::CreateAnd(CondVal, TrueVal); + if (match(FalseVal, m_Zero())) { + if (impliesPoison(TrueVal, CondVal)) { + // Change: A = select B, C, false --> A = and B, C + return BinaryOperator::CreateAnd(CondVal, TrueVal); + } + + if (auto *LHS = dyn_cast(CondVal)) + if (auto *RHS = dyn_cast(TrueVal)) + if (Value *V = foldLogicOfFCmps(LHS, RHS, /*IsAnd*/ true, + /*IsSelectLogical*/ true)) + return replaceInstUsesWith(SI, V); } auto *One = ConstantInt::getTrue(SelType); diff --git a/llvm/test/Transforms/InstCombine/and-fcmp.ll b/llvm/test/Transforms/InstCombine/and-fcmp.ll --- a/llvm/test/Transforms/InstCombine/and-fcmp.ll +++ b/llvm/test/Transforms/InstCombine/and-fcmp.ll @@ -233,6 +233,16 @@ ret i1 %retval } +define i1 @auto_gen_0_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_0_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp false double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_1(double %a, double %b) { ; CHECK-LABEL: @auto_gen_1( ; CHECK-NEXT: ret i1 false @@ -253,6 +263,16 @@ ret i1 %retval } +define i1 @auto_gen_1_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_1_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast oeq double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_2(double %a, double %b) { ; CHECK-LABEL: @auto_gen_2( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -275,6 +295,17 @@ ret i1 %retval } +define i1 @auto_gen_2_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_2_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp oeq double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_3(double %a, double %b) { ; CHECK-LABEL: @auto_gen_3( ; CHECK-NEXT: ret i1 false @@ -295,6 +326,16 @@ ret i1 %retval } +define i1 @auto_gen_3_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_3_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ogt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_4(double %a, double %b) { ; CHECK-LABEL: @auto_gen_4( ; CHECK-NEXT: ret i1 false @@ -315,6 +356,16 @@ ret i1 %retval } +define i1 @auto_gen_4_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_4_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ogt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_5(double %a, double %b) { ; CHECK-LABEL: @auto_gen_5( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -337,6 +388,17 @@ ret i1 %retval } +define i1 @auto_gen_5_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_5_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ogt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_6(double %a, double %b) { ; CHECK-LABEL: @auto_gen_6( ; CHECK-NEXT: ret i1 false @@ -357,6 +419,16 @@ ret i1 %retval } +define i1 @auto_gen_6_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_6_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp oge double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_7(double %a, double %b) { ; CHECK-LABEL: @auto_gen_7( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -379,6 +451,17 @@ ret i1 %retval } +define i1 @auto_gen_7_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_7_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast oge double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_8(double %a, double %b) { ; CHECK-LABEL: @auto_gen_8( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -401,6 +484,17 @@ ret i1 %retval } +define i1 @auto_gen_8_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_8_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp oge double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_9(double %a, double %b) { ; CHECK-LABEL: @auto_gen_9( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -423,6 +517,17 @@ ret i1 %retval } +define i1 @auto_gen_9_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_9_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast oge double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_10(double %a, double %b) { ; CHECK-LABEL: @auto_gen_10( ; CHECK-NEXT: ret i1 false @@ -443,6 +548,16 @@ ret i1 %retval } +define i1 @auto_gen_10_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_10_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_11(double %a, double %b) { ; CHECK-LABEL: @auto_gen_11( ; CHECK-NEXT: ret i1 false @@ -463,6 +578,16 @@ ret i1 %retval } +define i1 @auto_gen_11_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_11_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast olt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_12(double %a, double %b) { ; CHECK-LABEL: @auto_gen_12( ; CHECK-NEXT: ret i1 false @@ -483,6 +608,16 @@ ret i1 %retval } +define i1 @auto_gen_12_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_12_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_13(double %a, double %b) { ; CHECK-LABEL: @auto_gen_13( ; CHECK-NEXT: ret i1 false @@ -503,6 +638,16 @@ ret i1 %retval } +define i1 @auto_gen_13_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_13_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast olt double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_14(double %a, double %b) { ; CHECK-LABEL: @auto_gen_14( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -525,6 +670,17 @@ ret i1 %retval } +define i1 @auto_gen_14_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_14_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_15(double %a, double %b) { ; CHECK-LABEL: @auto_gen_15( ; CHECK-NEXT: ret i1 false @@ -545,6 +701,16 @@ ret i1 %retval } +define i1 @auto_gen_15_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_15_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_16(double %a, double %b) { ; CHECK-LABEL: @auto_gen_16( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -567,6 +733,17 @@ ret i1 %retval } +define i1 @auto_gen_16_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_16_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_17(double %a, double %b) { ; CHECK-LABEL: @auto_gen_17( ; CHECK-NEXT: ret i1 false @@ -587,6 +764,16 @@ ret i1 %retval } +define i1 @auto_gen_17_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_17_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_18(double %a, double %b) { ; CHECK-LABEL: @auto_gen_18( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -609,6 +796,17 @@ ret i1 %retval } +define i1 @auto_gen_18_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_18_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_19(double %a, double %b) { ; CHECK-LABEL: @auto_gen_19( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -631,6 +829,17 @@ ret i1 %retval } +define i1 @auto_gen_19_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_19_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_20(double %a, double %b) { ; CHECK-LABEL: @auto_gen_20( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -653,6 +862,17 @@ ret i1 %retval } +define i1 @auto_gen_20_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_20_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_21(double %a, double %b) { ; CHECK-LABEL: @auto_gen_21( ; CHECK-NEXT: ret i1 false @@ -673,6 +893,16 @@ ret i1 %retval } +define i1 @auto_gen_21_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_21_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_22(double %a, double %b) { ; CHECK-LABEL: @auto_gen_22( ; CHECK-NEXT: ret i1 false @@ -693,6 +923,16 @@ ret i1 %retval } +define i1 @auto_gen_22_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_22_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_23(double %a, double %b) { ; CHECK-LABEL: @auto_gen_23( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -715,6 +955,17 @@ ret i1 %retval } +define i1 @auto_gen_23_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_23_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_24(double %a, double %b) { ; CHECK-LABEL: @auto_gen_24( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -737,6 +988,17 @@ ret i1 %retval } +define i1 @auto_gen_24_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_24_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_25(double %a, double %b) { ; CHECK-LABEL: @auto_gen_25( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -759,6 +1021,17 @@ ret i1 %retval } +define i1 @auto_gen_25_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_25_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_26(double %a, double %b) { ; CHECK-LABEL: @auto_gen_26( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -781,6 +1054,17 @@ ret i1 %retval } +define i1 @auto_gen_26_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_26_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_27(double %a, double %b) { ; CHECK-LABEL: @auto_gen_27( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -803,6 +1087,17 @@ ret i1 %retval } +define i1 @auto_gen_27_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_27_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_28(double %a, double %b) { ; CHECK-LABEL: @auto_gen_28( ; CHECK-NEXT: ret i1 false @@ -823,6 +1118,16 @@ ret i1 %retval } +define i1 @auto_gen_28_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_28_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -845,6 +1150,17 @@ ret i1 %retval } +define i1 @auto_gen_29_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_29_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -867,6 +1183,17 @@ ret i1 %retval } +define i1 @auto_gen_30_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_30_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -889,6 +1216,17 @@ ret i1 %retval } +define i1 @auto_gen_31_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_31_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -911,6 +1249,17 @@ ret i1 %retval } +define i1 @auto_gen_32_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_32_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -933,6 +1282,17 @@ ret i1 %retval } +define i1 @auto_gen_33_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_33_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -955,6 +1315,17 @@ ret i1 %retval } +define i1 @auto_gen_34_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_34_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_35(double %a, double %b) { ; CHECK-LABEL: @auto_gen_35( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -977,6 +1348,16 @@ ret i1 %retval } +define i1 @auto_gen_35_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_35_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_36(double %a, double %b) { ; CHECK-LABEL: @auto_gen_36( ; CHECK-NEXT: ret i1 false @@ -997,6 +1378,16 @@ ret i1 %retval } +define i1 @auto_gen_36_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_36_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1019,6 +1410,17 @@ ret i1 %retval } +define i1 @auto_gen_37_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_37_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_38(double %a, double %b) { ; CHECK-LABEL: @auto_gen_38( ; CHECK-NEXT: ret i1 false @@ -1039,6 +1441,16 @@ ret i1 %retval } +define i1 @auto_gen_38_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_38_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1061,6 +1473,17 @@ ret i1 %retval } +define i1 @auto_gen_39_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_39_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_40(double %a, double %b) { ; CHECK-LABEL: @auto_gen_40( ; CHECK-NEXT: ret i1 false @@ -1081,6 +1504,16 @@ ret i1 %retval } +define i1 @auto_gen_40_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_40_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1103,6 +1536,17 @@ ret i1 %retval } +define i1 @auto_gen_41_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_41_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_42(double %a, double %b) { ; CHECK-LABEL: @auto_gen_42( ; CHECK-NEXT: ret i1 false @@ -1123,6 +1567,16 @@ ret i1 %retval } +define i1 @auto_gen_42_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_42_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_43(double %a, double %b) { ; CHECK-LABEL: @auto_gen_43( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1145,6 +1599,17 @@ ret i1 %retval } +define i1 @auto_gen_43_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_43_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_44(double %a, double %b) { ; CHECK-LABEL: @auto_gen_44( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -1167,6 +1632,17 @@ ret i1 %retval } +define i1 @auto_gen_44_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_44_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_45(double %a, double %b) { ; CHECK-LABEL: @auto_gen_45( ; CHECK-NEXT: ret i1 false @@ -1187,6 +1663,16 @@ ret i1 %retval } +define i1 @auto_gen_45_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_45_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_46(double %a, double %b) { ; CHECK-LABEL: @auto_gen_46( ; CHECK-NEXT: ret i1 false @@ -1207,6 +1693,16 @@ ret i1 %retval } +define i1 @auto_gen_46_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_46_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -1229,6 +1725,17 @@ ret i1 %retval } +define i1 @auto_gen_47_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_47_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -1251,6 +1758,17 @@ ret i1 %retval } +define i1 @auto_gen_48_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_48_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_49(double %a, double %b) { ; CHECK-LABEL: @auto_gen_49( ; CHECK-NEXT: ret i1 false @@ -1271,6 +1789,16 @@ ret i1 %retval } +define i1 @auto_gen_49_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_49_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_50(double %a, double %b) { ; CHECK-LABEL: @auto_gen_50( ; CHECK-NEXT: ret i1 false @@ -1291,6 +1819,16 @@ ret i1 %retval } +define i1 @auto_gen_50_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_50_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -1313,6 +1851,17 @@ ret i1 %retval } +define i1 @auto_gen_51_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_51_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_52(double %a, double %b) { ; CHECK-LABEL: @auto_gen_52( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -1335,6 +1884,17 @@ ret i1 %retval } +define i1 @auto_gen_52_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_52_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_53(double %a, double %b) { ; CHECK-LABEL: @auto_gen_53( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -1357,6 +1917,16 @@ ret i1 %retval } +define i1 @auto_gen_53_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_53_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_54(double %a, double %b) { ; CHECK-LABEL: @auto_gen_54( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -1379,6 +1949,17 @@ ret i1 %retval } +define i1 @auto_gen_54_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_54_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_55(double %a, double %b) { ; CHECK-LABEL: @auto_gen_55( ; CHECK-NEXT: ret i1 false @@ -1399,6 +1980,16 @@ ret i1 %retval } +define i1 @auto_gen_55_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_55_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1421,6 +2012,17 @@ ret i1 %retval } +define i1 @auto_gen_56_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_56_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -1443,6 +2045,17 @@ ret i1 %retval } +define i1 @auto_gen_57_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_57_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -1465,6 +2078,17 @@ ret i1 %retval } +define i1 @auto_gen_58_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_58_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_59(double %a, double %b) { ; CHECK-LABEL: @auto_gen_59( ; CHECK-NEXT: ret i1 false @@ -1485,6 +2109,16 @@ ret i1 %retval } +define i1 @auto_gen_59_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_59_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_60(double %a, double %b) { ; CHECK-LABEL: @auto_gen_60( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1502,7 +2136,18 @@ ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b - %cmp1 = fcmp ole double %a, %b + %cmp1 = fcmp ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + +define i1 @auto_gen_60_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_60_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast ole double %a, %b %retval = select i1 %cmp, i1 %cmp1, i1 false ret i1 %retval } @@ -1529,6 +2174,17 @@ ret i1 %retval } +define i1 @auto_gen_61_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_61_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_62(double %a, double %b) { ; CHECK-LABEL: @auto_gen_62( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -1551,6 +2207,17 @@ ret i1 %retval } +define i1 @auto_gen_62_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_62_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_63(double %a, double %b) { ; CHECK-LABEL: @auto_gen_63( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -1573,6 +2240,17 @@ ret i1 %retval } +define i1 @auto_gen_63_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_63_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_64(double %a, double %b) { ; CHECK-LABEL: @auto_gen_64( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -1595,6 +2273,17 @@ ret i1 %retval } +define i1 @auto_gen_64_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_64_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_65(double %a, double %b) { ; CHECK-LABEL: @auto_gen_65( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1617,6 +2306,17 @@ ret i1 %retval } +define i1 @auto_gen_65_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_65_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_66(double %a, double %b) { ; CHECK-LABEL: @auto_gen_66( ; CHECK-NEXT: ret i1 false @@ -1637,6 +2337,16 @@ ret i1 %retval } +define i1 @auto_gen_66_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_66_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_67(double %a, double %b) { ; CHECK-LABEL: @auto_gen_67( ; CHECK-NEXT: ret i1 false @@ -1657,6 +2367,16 @@ ret i1 %retval } +define i1 @auto_gen_67_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_67_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_68(double %a, double %b) { ; CHECK-LABEL: @auto_gen_68( ; CHECK-NEXT: ret i1 false @@ -1677,6 +2397,16 @@ ret i1 %retval } +define i1 @auto_gen_68_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_68_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_69(double %a, double %b) { ; CHECK-LABEL: @auto_gen_69( ; CHECK-NEXT: ret i1 false @@ -1697,6 +2427,16 @@ ret i1 %retval } +define i1 @auto_gen_69_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_69_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -1719,6 +2459,17 @@ ret i1 %retval } +define i1 @auto_gen_70_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_70_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -1741,6 +2492,17 @@ ret i1 %retval } +define i1 @auto_gen_71_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_71_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -1763,6 +2525,17 @@ ret i1 %retval } +define i1 @auto_gen_72_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_72_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_73(double %a, double %b) { ; CHECK-LABEL: @auto_gen_73( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -1785,6 +2558,17 @@ ret i1 %retval } +define i1 @auto_gen_73_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_73_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_74(double %a, double %b) { ; CHECK-LABEL: @auto_gen_74( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -1807,6 +2591,17 @@ ret i1 %retval } +define i1 @auto_gen_74_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_74_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_75(double %a, double %b) { ; CHECK-LABEL: @auto_gen_75( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -1829,6 +2624,16 @@ ret i1 %retval } +define i1 @auto_gen_75_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_75_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_76(double %a, double %b) { ; CHECK-LABEL: @auto_gen_76( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -1851,6 +2656,17 @@ ret i1 %retval } +define i1 @auto_gen_76_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_76_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_77(double %a, double %b) { ; CHECK-LABEL: @auto_gen_77( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -1873,6 +2689,17 @@ ret i1 %retval } +define i1 @auto_gen_77_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_77_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_78(double %a, double %b) { ; CHECK-LABEL: @auto_gen_78( ; CHECK-NEXT: ret i1 false @@ -1893,6 +2720,16 @@ ret i1 %retval } +define i1 @auto_gen_78_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_78_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1915,6 +2752,17 @@ ret i1 %retval } +define i1 @auto_gen_79_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_79_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_80(double %a, double %b) { ; CHECK-LABEL: @auto_gen_80( ; CHECK-NEXT: ret i1 false @@ -1935,6 +2783,16 @@ ret i1 %retval } +define i1 @auto_gen_80_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_80_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_81(double %a, double %b) { ; CHECK-LABEL: @auto_gen_81( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -1957,6 +2815,17 @@ ret i1 %retval } +define i1 @auto_gen_81_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_81_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -1979,6 +2848,17 @@ ret i1 %retval } +define i1 @auto_gen_82_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_82_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -2001,6 +2881,17 @@ ret i1 %retval } +define i1 @auto_gen_83_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_83_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_84(double %a, double %b) { ; CHECK-LABEL: @auto_gen_84( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -2023,6 +2914,17 @@ ret i1 %retval } +define i1 @auto_gen_84_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_84_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_85(double %a, double %b) { ; CHECK-LABEL: @auto_gen_85( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -2045,6 +2947,17 @@ ret i1 %retval } +define i1 @auto_gen_85_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_85_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_86(double %a, double %b) { ; CHECK-LABEL: @auto_gen_86( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -2067,6 +2980,17 @@ ret i1 %retval } +define i1 @auto_gen_86_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_86_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_87(double %a, double %b) { ; CHECK-LABEL: @auto_gen_87( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2089,6 +3013,16 @@ ret i1 %retval } +define i1 @auto_gen_87_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_87_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_88(double %a, double %b) { ; CHECK-LABEL: @auto_gen_88( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -2111,6 +3045,17 @@ ret i1 %retval } +define i1 @auto_gen_88_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_88_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_89(double %a, double %b) { ; CHECK-LABEL: @auto_gen_89( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -2133,6 +3078,17 @@ ret i1 %retval } +define i1 @auto_gen_89_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_89_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_90(double %a, double %b) { ; CHECK-LABEL: @auto_gen_90( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2155,6 +3111,17 @@ ret i1 %retval } +define i1 @auto_gen_90_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_90_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_91(double %a, double %b) { ; CHECK-LABEL: @auto_gen_91( ; CHECK-NEXT: ret i1 false @@ -2175,6 +3142,16 @@ ret i1 %retval } +define i1 @auto_gen_91_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_91_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_92(double %a, double %b) { ; CHECK-LABEL: @auto_gen_92( ; CHECK-NEXT: ret i1 false @@ -2195,6 +3172,16 @@ ret i1 %retval } +define i1 @auto_gen_92_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_92_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -2217,6 +3204,17 @@ ret i1 %retval } +define i1 @auto_gen_93_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_93_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_94(double %a, double %b) { ; CHECK-LABEL: @auto_gen_94( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -2239,6 +3237,17 @@ ret i1 %retval } +define i1 @auto_gen_94_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_94_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -2261,6 +3270,17 @@ ret i1 %retval } +define i1 @auto_gen_95_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_95_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_96(double %a, double %b) { ; CHECK-LABEL: @auto_gen_96( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -2283,6 +3303,17 @@ ret i1 %retval } +define i1 @auto_gen_96_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_96_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -2299,8 +3330,19 @@ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; - %cmp = fcmp une double %a, %b - %cmp1 = fcmp one double %a, %b + %cmp = fcmp une double %a, %b + %cmp1 = fcmp one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + +define i1 @auto_gen_97_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_97_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast one double %a, %b %retval = select i1 %cmp, i1 %cmp1, i1 false ret i1 %retval } @@ -2327,6 +3369,17 @@ ret i1 %retval } +define i1 @auto_gen_98_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_98_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_99(double %a, double %b) { ; CHECK-LABEL: @auto_gen_99( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2349,6 +3402,16 @@ ret i1 %retval } +define i1 @auto_gen_99_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_99_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_100(double %a, double %b) { ; CHECK-LABEL: @auto_gen_100( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -2371,6 +3434,17 @@ ret i1 %retval } +define i1 @auto_gen_100_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_100_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_101(double %a, double %b) { ; CHECK-LABEL: @auto_gen_101( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -2393,6 +3467,17 @@ ret i1 %retval } +define i1 @auto_gen_101_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_101_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_102(double %a, double %b) { ; CHECK-LABEL: @auto_gen_102( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -2415,6 +3500,17 @@ ret i1 %retval } +define i1 @auto_gen_102_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_102_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_103(double %a, double %b) { ; CHECK-LABEL: @auto_gen_103( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -2437,6 +3533,17 @@ ret i1 %retval } +define i1 @auto_gen_103_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_103_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_104(double %a, double %b) { ; CHECK-LABEL: @auto_gen_104( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2459,6 +3566,17 @@ ret i1 %retval } +define i1 @auto_gen_104_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_104_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_105(double %a, double %b) { ; CHECK-LABEL: @auto_gen_105( ; CHECK-NEXT: ret i1 false @@ -2479,6 +3597,16 @@ ret i1 %retval } +define i1 @auto_gen_105_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_105_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_106(double %a, double %b) { ; CHECK-LABEL: @auto_gen_106( ; CHECK-NEXT: ret i1 false @@ -2499,6 +3627,16 @@ ret i1 %retval } +define i1 @auto_gen_106_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_106_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_107(double %a, double %b) { ; CHECK-LABEL: @auto_gen_107( ; CHECK-NEXT: ret i1 false @@ -2519,6 +3657,16 @@ ret i1 %retval } +define i1 @auto_gen_107_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_107_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_108(double %a, double %b) { ; CHECK-LABEL: @auto_gen_108( ; CHECK-NEXT: ret i1 false @@ -2539,6 +3687,16 @@ ret i1 %retval } +define i1 @auto_gen_108_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_108_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_109(double %a, double %b) { ; CHECK-LABEL: @auto_gen_109( ; CHECK-NEXT: ret i1 false @@ -2559,6 +3717,16 @@ ret i1 %retval } +define i1 @auto_gen_109_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_109_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_110(double %a, double %b) { ; CHECK-LABEL: @auto_gen_110( ; CHECK-NEXT: ret i1 false @@ -2579,6 +3747,16 @@ ret i1 %retval } +define i1 @auto_gen_110_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_110_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_111(double %a, double %b) { ; CHECK-LABEL: @auto_gen_111( ; CHECK-NEXT: ret i1 false @@ -2599,6 +3777,16 @@ ret i1 %retval } +define i1 @auto_gen_111_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_111_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_112(double %a, double %b) { ; CHECK-LABEL: @auto_gen_112( ; CHECK-NEXT: ret i1 false @@ -2619,6 +3807,17 @@ ret i1 %retval } +define i1 @auto_gen_112_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_112_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_113(double %a, double %b) { ; CHECK-LABEL: @auto_gen_113( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2641,6 +3840,16 @@ ret i1 %retval } +define i1 @auto_gen_113_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_113_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_114(double %a, double %b) { ; CHECK-LABEL: @auto_gen_114( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2663,6 +3872,17 @@ ret i1 %retval } +define i1 @auto_gen_114_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_114_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_115(double %a, double %b) { ; CHECK-LABEL: @auto_gen_115( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2685,6 +3905,16 @@ ret i1 %retval } +define i1 @auto_gen_115_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_115_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_116(double %a, double %b) { ; CHECK-LABEL: @auto_gen_116( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2707,6 +3937,17 @@ ret i1 %retval } +define i1 @auto_gen_116_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_116_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_117(double %a, double %b) { ; CHECK-LABEL: @auto_gen_117( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2729,6 +3970,16 @@ ret i1 %retval } +define i1 @auto_gen_117_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_117_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_118(double %a, double %b) { ; CHECK-LABEL: @auto_gen_118( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2751,6 +4002,17 @@ ret i1 %retval } +define i1 @auto_gen_118_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_118_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_119(double %a, double %b) { ; CHECK-LABEL: @auto_gen_119( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2773,6 +4035,16 @@ ret i1 %retval } +define i1 @auto_gen_119_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_119_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast uno double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_120(double %a, double %b) { ; CHECK-LABEL: @auto_gen_120( ; CHECK-NEXT: ret i1 false @@ -2793,6 +4065,16 @@ ret i1 %retval } +define i1 @auto_gen_120_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_120_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_121(double %a, double %b) { ; CHECK-LABEL: @auto_gen_121( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -2815,6 +4097,17 @@ ret i1 %retval } +define i1 @auto_gen_121_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_121_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_122(double %a, double %b) { ; CHECK-LABEL: @auto_gen_122( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -2837,6 +4130,17 @@ ret i1 %retval } +define i1 @auto_gen_122_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_122_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_123(double %a, double %b) { ; CHECK-LABEL: @auto_gen_123( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -2859,6 +4163,17 @@ ret i1 %retval } +define i1 @auto_gen_123_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_123_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_124(double %a, double %b) { ; CHECK-LABEL: @auto_gen_124( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -2881,6 +4196,17 @@ ret i1 %retval } +define i1 @auto_gen_124_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_124_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_125(double %a, double %b) { ; CHECK-LABEL: @auto_gen_125( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -2903,6 +4229,17 @@ ret i1 %retval } +define i1 @auto_gen_125_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_125_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_126(double %a, double %b) { ; CHECK-LABEL: @auto_gen_126( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -2925,6 +4262,17 @@ ret i1 %retval } +define i1 @auto_gen_126_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_126_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_127(double %a, double %b) { ; CHECK-LABEL: @auto_gen_127( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -2947,6 +4295,16 @@ ret i1 %retval } +define i1 @auto_gen_127_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_127_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_128(double %a, double %b) { ; CHECK-LABEL: @auto_gen_128( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -2969,6 +4327,17 @@ ret i1 %retval } +define i1 @auto_gen_128_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_128_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_129(double %a, double %b) { ; CHECK-LABEL: @auto_gen_129( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -2991,6 +4360,17 @@ ret i1 %retval } +define i1 @auto_gen_129_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_129_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_130(double %a, double %b) { ; CHECK-LABEL: @auto_gen_130( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -3013,6 +4393,17 @@ ret i1 %retval } +define i1 @auto_gen_130_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_130_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_131(double %a, double %b) { ; CHECK-LABEL: @auto_gen_131( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -3035,6 +4426,17 @@ ret i1 %retval } +define i1 @auto_gen_131_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_131_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_132(double %a, double %b) { ; CHECK-LABEL: @auto_gen_132( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -3057,6 +4459,17 @@ ret i1 %retval } +define i1 @auto_gen_132_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_132_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_133(double %a, double %b) { ; CHECK-LABEL: @auto_gen_133( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -3079,6 +4492,17 @@ ret i1 %retval } +define i1 @auto_gen_133_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_133_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_134(double %a, double %b) { ; CHECK-LABEL: @auto_gen_134( ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -3101,6 +4525,16 @@ ret i1 %retval } +define i1 @auto_gen_134_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_134_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast uno double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @auto_gen_135(double %a, double %b) { ; CHECK-LABEL: @auto_gen_135( ; CHECK-NEXT: ret i1 true @@ -3121,6 +4555,16 @@ ret i1 %retval } +define i1 @auto_gen_135_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_135_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast true double %a, %b + %retval = select i1 %cmp, i1 %cmp1, i1 false + ret i1 %retval +} + define i1 @intersect_fmf_1(double %a, double %b) { ; CHECK-LABEL: @intersect_fmf_1( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] diff --git a/llvm/test/Transforms/InstCombine/or-fcmp.ll b/llvm/test/Transforms/InstCombine/or-fcmp.ll --- a/llvm/test/Transforms/InstCombine/or-fcmp.ll +++ b/llvm/test/Transforms/InstCombine/or-fcmp.ll @@ -185,6 +185,16 @@ ret i1 %retval } +define i1 @auto_gen_0_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_0_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp false double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_1(double %a, double %b) { ; CHECK-LABEL: @auto_gen_1( ; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -207,6 +217,17 @@ ret i1 %retval } +define i1 @auto_gen_1_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_1_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast oeq double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_2(double %a, double %b) { ; CHECK-LABEL: @auto_gen_2( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] @@ -229,6 +250,17 @@ ret i1 %retval } +define i1 @auto_gen_2_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_2_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp oeq double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_3(double %a, double %b) { ; CHECK-LABEL: @auto_gen_3( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -251,6 +283,17 @@ ret i1 %retval } +define i1 @auto_gen_3_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_3_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ogt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_4(double %a, double %b) { ; CHECK-LABEL: @auto_gen_4( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -273,6 +316,17 @@ ret i1 %retval } +define i1 @auto_gen_4_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_4_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ogt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_5(double %a, double %b) { ; CHECK-LABEL: @auto_gen_5( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]] @@ -295,6 +349,17 @@ ret i1 %retval } +define i1 @auto_gen_5_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_5_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ogt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_6(double %a, double %b) { ; CHECK-LABEL: @auto_gen_6( ; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -317,6 +382,17 @@ ret i1 %retval } +define i1 @auto_gen_6_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_6_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp oge double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_7(double %a, double %b) { ; CHECK-LABEL: @auto_gen_7( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -339,6 +415,17 @@ ret i1 %retval } +define i1 @auto_gen_7_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_7_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast oge double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_8(double %a, double %b) { ; CHECK-LABEL: @auto_gen_8( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -361,6 +448,17 @@ ret i1 %retval } +define i1 @auto_gen_8_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_8_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp oge double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_9(double %a, double %b) { ; CHECK-LABEL: @auto_gen_9( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]] @@ -383,6 +481,17 @@ ret i1 %retval } +define i1 @auto_gen_9_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_9_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast oge double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_10(double %a, double %b) { ; CHECK-LABEL: @auto_gen_10( ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -405,6 +514,17 @@ ret i1 %retval } +define i1 @auto_gen_10_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_10_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_11(double %a, double %b) { ; CHECK-LABEL: @auto_gen_11( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -427,6 +547,17 @@ ret i1 %retval } +define i1 @auto_gen_11_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_11_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast olt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_12(double %a, double %b) { ; CHECK-LABEL: @auto_gen_12( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -449,6 +580,17 @@ ret i1 %retval } +define i1 @auto_gen_12_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_12_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_13(double %a, double %b) { ; CHECK-LABEL: @auto_gen_13( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -471,6 +613,16 @@ ret i1 %retval } +define i1 @auto_gen_13_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_13_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast olt double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_14(double %a, double %b) { ; CHECK-LABEL: @auto_gen_14( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] @@ -493,6 +645,17 @@ ret i1 %retval } +define i1 @auto_gen_14_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_14_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp olt double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_15(double %a, double %b) { ; CHECK-LABEL: @auto_gen_15( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -515,6 +678,17 @@ ret i1 %retval } +define i1 @auto_gen_15_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_15_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_16(double %a, double %b) { ; CHECK-LABEL: @auto_gen_16( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -537,6 +711,17 @@ ret i1 %retval } +define i1 @auto_gen_16_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_16_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_17(double %a, double %b) { ; CHECK-LABEL: @auto_gen_17( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -559,6 +744,16 @@ ret i1 %retval } +define i1 @auto_gen_17_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_17_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_18(double %a, double %b) { ; CHECK-LABEL: @auto_gen_18( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -581,6 +776,17 @@ ret i1 %retval } +define i1 @auto_gen_18_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_18_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_19(double %a, double %b) { ; CHECK-LABEL: @auto_gen_19( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -603,6 +809,17 @@ ret i1 %retval } +define i1 @auto_gen_19_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_19_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ole double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_20(double %a, double %b) { ; CHECK-LABEL: @auto_gen_20( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] @@ -625,6 +842,17 @@ ret i1 %retval } +define i1 @auto_gen_20_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_20_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ole double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_21(double %a, double %b) { ; CHECK-LABEL: @auto_gen_21( ; CHECK-NEXT: [[CMP:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -647,6 +875,17 @@ ret i1 %retval } +define i1 @auto_gen_21_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_21_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_22(double %a, double %b) { ; CHECK-LABEL: @auto_gen_22( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -669,6 +908,17 @@ ret i1 %retval } +define i1 @auto_gen_22_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_22_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_23(double %a, double %b) { ; CHECK-LABEL: @auto_gen_23( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -691,6 +941,17 @@ ret i1 %retval } +define i1 @auto_gen_23_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_23_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_24(double %a, double %b) { ; CHECK-LABEL: @auto_gen_24( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -713,6 +974,17 @@ ret i1 %retval } +define i1 @auto_gen_24_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_24_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_25(double %a, double %b) { ; CHECK-LABEL: @auto_gen_25( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -735,6 +1007,17 @@ ret i1 %retval } +define i1 @auto_gen_25_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_25_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_26(double %a, double %b) { ; CHECK-LABEL: @auto_gen_26( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -757,6 +1040,17 @@ ret i1 %retval } +define i1 @auto_gen_26_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_26_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp one double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_27(double %a, double %b) { ; CHECK-LABEL: @auto_gen_27( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]] @@ -779,6 +1073,17 @@ ret i1 %retval } +define i1 @auto_gen_27_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_27_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast one double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_28(double %a, double %b) { ; CHECK-LABEL: @auto_gen_28( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -801,6 +1106,17 @@ ret i1 %retval } +define i1 @auto_gen_28_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_28_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -823,6 +1139,16 @@ ret i1 %retval } +define i1 @auto_gen_29_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_29_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -845,6 +1171,17 @@ ret i1 %retval } +define i1 @auto_gen_30_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_30_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -867,6 +1204,16 @@ ret i1 %retval } +define i1 @auto_gen_31_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_31_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -889,6 +1236,17 @@ ret i1 %retval } +define i1 @auto_gen_32_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_32_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -911,6 +1269,16 @@ ret i1 %retval } +define i1 @auto_gen_33_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_33_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -933,6 +1301,17 @@ ret i1 %retval } +define i1 @auto_gen_34_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_34_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ord double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_35(double %a, double %b) { ; CHECK-LABEL: @auto_gen_35( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]] @@ -955,6 +1334,16 @@ ret i1 %retval } +define i1 @auto_gen_35_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_35_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ord double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_36(double %a, double %b) { ; CHECK-LABEL: @auto_gen_36( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -977,6 +1366,17 @@ ret i1 %retval } +define i1 @auto_gen_36_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_36_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -999,6 +1399,17 @@ ret i1 %retval } +define i1 @auto_gen_37_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_37_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_38(double %a, double %b) { ; CHECK-LABEL: @auto_gen_38( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1021,6 +1432,17 @@ ret i1 %retval } +define i1 @auto_gen_38_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_38_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1043,6 +1465,17 @@ ret i1 %retval } +define i1 @auto_gen_39_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_39_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_40(double %a, double %b) { ; CHECK-LABEL: @auto_gen_40( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1065,6 +1498,17 @@ ret i1 %retval } +define i1 @auto_gen_40_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_40_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1087,6 +1531,17 @@ ret i1 %retval } +define i1 @auto_gen_41_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_41_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_42(double %a, double %b) { ; CHECK-LABEL: @auto_gen_42( ; CHECK-NEXT: ret i1 true @@ -1107,6 +1562,16 @@ ret i1 %retval } +define i1 @auto_gen_42_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_42_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_43(double %a, double %b) { ; CHECK-LABEL: @auto_gen_43( ; CHECK-NEXT: ret i1 true @@ -1127,6 +1592,16 @@ ret i1 %retval } +define i1 @auto_gen_43_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_43_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ueq double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_44(double %a, double %b) { ; CHECK-LABEL: @auto_gen_44( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -1149,6 +1624,17 @@ ret i1 %retval } +define i1 @auto_gen_44_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_44_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ueq double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_45(double %a, double %b) { ; CHECK-LABEL: @auto_gen_45( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -1171,6 +1657,17 @@ ret i1 %retval } +define i1 @auto_gen_45_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_45_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_46(double %a, double %b) { ; CHECK-LABEL: @auto_gen_46( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1193,6 +1690,17 @@ ret i1 %retval } +define i1 @auto_gen_46_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_46_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -1215,6 +1723,17 @@ ret i1 %retval } +define i1 @auto_gen_47_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_47_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1237,6 +1756,17 @@ ret i1 %retval } +define i1 @auto_gen_48_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_48_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_49(double %a, double %b) { ; CHECK-LABEL: @auto_gen_49( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -1259,6 +1789,17 @@ ret i1 %retval } +define i1 @auto_gen_49_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_49_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_50(double %a, double %b) { ; CHECK-LABEL: @auto_gen_50( ; CHECK-NEXT: ret i1 true @@ -1279,6 +1820,16 @@ ret i1 %retval } +define i1 @auto_gen_50_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_50_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -1301,6 +1852,17 @@ ret i1 %retval } +define i1 @auto_gen_51_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_51_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_52(double %a, double %b) { ; CHECK-LABEL: @auto_gen_52( ; CHECK-NEXT: ret i1 true @@ -1321,6 +1883,16 @@ ret i1 %retval } +define i1 @auto_gen_52_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_52_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_53(double %a, double %b) { ; CHECK-LABEL: @auto_gen_53( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1343,6 +1915,17 @@ ret i1 %retval } +define i1 @auto_gen_53_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_53_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ugt double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_54(double %a, double %b) { ; CHECK-LABEL: @auto_gen_54( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -1365,6 +1948,17 @@ ret i1 %retval } +define i1 @auto_gen_54_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_54_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ugt double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_55(double %a, double %b) { ; CHECK-LABEL: @auto_gen_55( ; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1387,6 +1981,17 @@ ret i1 %retval } +define i1 @auto_gen_55_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_55_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1409,6 +2014,17 @@ ret i1 %retval } +define i1 @auto_gen_56_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_56_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1431,6 +2047,17 @@ ret i1 %retval } +define i1 @auto_gen_57_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_57_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1453,6 +2080,17 @@ ret i1 %retval } +define i1 @auto_gen_58_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_58_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_59(double %a, double %b) { ; CHECK-LABEL: @auto_gen_59( ; CHECK-NEXT: ret i1 true @@ -1473,6 +2111,16 @@ ret i1 %retval } +define i1 @auto_gen_59_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_59_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_60(double %a, double %b) { ; CHECK-LABEL: @auto_gen_60( ; CHECK-NEXT: ret i1 true @@ -1483,12 +2131,22 @@ ret i1 %retval } -define i1 @auto_gen_60_logical(double %a, double %b) { -; CHECK-LABEL: @auto_gen_60_logical( +define i1 @auto_gen_60_logical(double %a, double %b) { +; CHECK-LABEL: @auto_gen_60_logical( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + +define i1 @auto_gen_60_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_60_logical_fmf( ; CHECK-NEXT: ret i1 true ; %cmp = fcmp uge double %a, %b - %cmp1 = fcmp ole double %a, %b + %cmp1 = fcmp fast ole double %a, %b %retval = select i1 %cmp, i1 true, i1 %cmp1 ret i1 %retval } @@ -1513,6 +2171,16 @@ ret i1 %retval } +define i1 @auto_gen_61_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_61_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_62(double %a, double %b) { ; CHECK-LABEL: @auto_gen_62( ; CHECK-NEXT: ret i1 true @@ -1533,6 +2201,16 @@ ret i1 %retval } +define i1 @auto_gen_62_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_62_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_63(double %a, double %b) { ; CHECK-LABEL: @auto_gen_63( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1555,6 +2233,17 @@ ret i1 %retval } +define i1 @auto_gen_63_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_63_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_64(double %a, double %b) { ; CHECK-LABEL: @auto_gen_64( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1577,6 +2266,17 @@ ret i1 %retval } +define i1 @auto_gen_64_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_64_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uge double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_65(double %a, double %b) { ; CHECK-LABEL: @auto_gen_65( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -1599,6 +2299,17 @@ ret i1 %retval } +define i1 @auto_gen_65_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_65_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast uge double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_66(double %a, double %b) { ; CHECK-LABEL: @auto_gen_66( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -1621,6 +2332,17 @@ ret i1 %retval } +define i1 @auto_gen_66_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_66_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_67(double %a, double %b) { ; CHECK-LABEL: @auto_gen_67( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1643,6 +2365,17 @@ ret i1 %retval } +define i1 @auto_gen_67_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_67_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_68(double %a, double %b) { ; CHECK-LABEL: @auto_gen_68( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -1665,6 +2398,17 @@ ret i1 %retval } +define i1 @auto_gen_68_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_68_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_69(double %a, double %b) { ; CHECK-LABEL: @auto_gen_69( ; CHECK-NEXT: ret i1 true @@ -1685,6 +2429,16 @@ ret i1 %retval } +define i1 @auto_gen_69_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_69_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -1707,6 +2461,17 @@ ret i1 %retval } +define i1 @auto_gen_70_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_70_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1729,6 +2494,17 @@ ret i1 %retval } +define i1 @auto_gen_71_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_71_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -1751,6 +2527,17 @@ ret i1 %retval } +define i1 @auto_gen_72_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_72_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_73(double %a, double %b) { ; CHECK-LABEL: @auto_gen_73( ; CHECK-NEXT: ret i1 true @@ -1771,6 +2558,16 @@ ret i1 %retval } +define i1 @auto_gen_73_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_73_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_74(double %a, double %b) { ; CHECK-LABEL: @auto_gen_74( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1793,6 +2590,17 @@ ret i1 %retval } +define i1 @auto_gen_74_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_74_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_75(double %a, double %b) { ; CHECK-LABEL: @auto_gen_75( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -1815,6 +2623,17 @@ ret i1 %retval } +define i1 @auto_gen_75_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_75_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_76(double %a, double %b) { ; CHECK-LABEL: @auto_gen_76( ; CHECK-NEXT: ret i1 true @@ -1835,6 +2654,16 @@ ret i1 %retval } +define i1 @auto_gen_76_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_76_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ult double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_77(double %a, double %b) { ; CHECK-LABEL: @auto_gen_77( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -1857,6 +2686,17 @@ ret i1 %retval } +define i1 @auto_gen_77_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_77_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ult double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_78(double %a, double %b) { ; CHECK-LABEL: @auto_gen_78( ; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1879,6 +2719,17 @@ ret i1 %retval } +define i1 @auto_gen_78_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_78_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1901,6 +2752,17 @@ ret i1 %retval } +define i1 @auto_gen_79_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_79_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_80(double %a, double %b) { ; CHECK-LABEL: @auto_gen_80( ; CHECK-NEXT: ret i1 true @@ -1921,6 +2783,16 @@ ret i1 %retval } +define i1 @auto_gen_80_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_80_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_81(double %a, double %b) { ; CHECK-LABEL: @auto_gen_81( ; CHECK-NEXT: ret i1 true @@ -1941,6 +2813,16 @@ ret i1 %retval } +define i1 @auto_gen_81_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_81_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1963,6 +2845,17 @@ ret i1 %retval } +define i1 @auto_gen_82_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_82_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -1985,6 +2878,17 @@ ret i1 %retval } +define i1 @auto_gen_83_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_83_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_84(double %a, double %b) { ; CHECK-LABEL: @auto_gen_84( ; CHECK-NEXT: ret i1 true @@ -2005,6 +2909,16 @@ ret i1 %retval } +define i1 @auto_gen_84_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_84_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_85(double %a, double %b) { ; CHECK-LABEL: @auto_gen_85( ; CHECK-NEXT: ret i1 true @@ -2025,6 +2939,16 @@ ret i1 %retval } +define i1 @auto_gen_85_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_85_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_86(double %a, double %b) { ; CHECK-LABEL: @auto_gen_86( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2047,6 +2971,17 @@ ret i1 %retval } +define i1 @auto_gen_86_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_86_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_87(double %a, double %b) { ; CHECK-LABEL: @auto_gen_87( ; CHECK-NEXT: ret i1 true @@ -2067,6 +3002,16 @@ ret i1 %retval } +define i1 @auto_gen_87_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_87_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_88(double %a, double %b) { ; CHECK-LABEL: @auto_gen_88( ; CHECK-NEXT: ret i1 true @@ -2087,6 +3032,16 @@ ret i1 %retval } +define i1 @auto_gen_88_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_88_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_89(double %a, double %b) { ; CHECK-LABEL: @auto_gen_89( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2109,6 +3064,17 @@ ret i1 %retval } +define i1 @auto_gen_89_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_89_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast ule double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_90(double %a, double %b) { ; CHECK-LABEL: @auto_gen_90( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2131,6 +3097,17 @@ ret i1 %retval } +define i1 @auto_gen_90_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_90_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp ule double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_91(double %a, double %b) { ; CHECK-LABEL: @auto_gen_91( ; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2153,6 +3130,17 @@ ret i1 %retval } +define i1 @auto_gen_91_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_91_logical_fmf( +; CHECK-NEXT: [[CMP:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_92(double %a, double %b) { ; CHECK-LABEL: @auto_gen_92( ; CHECK-NEXT: ret i1 true @@ -2173,6 +3161,16 @@ ret i1 %retval } +define i1 @auto_gen_92_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_92_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2195,6 +3193,17 @@ ret i1 %retval } +define i1 @auto_gen_93_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_93_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_94(double %a, double %b) { ; CHECK-LABEL: @auto_gen_94( ; CHECK-NEXT: ret i1 true @@ -2215,6 +3224,16 @@ ret i1 %retval } +define i1 @auto_gen_94_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_94_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2237,6 +3256,17 @@ ret i1 %retval } +define i1 @auto_gen_95_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_95_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_96(double %a, double %b) { ; CHECK-LABEL: @auto_gen_96( ; CHECK-NEXT: ret i1 true @@ -2257,6 +3287,16 @@ ret i1 %retval } +define i1 @auto_gen_96_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_96_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2273,8 +3313,19 @@ ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] ; CHECK-NEXT: ret i1 [[TMP1]] ; - %cmp = fcmp une double %a, %b - %cmp1 = fcmp one double %a, %b + %cmp = fcmp une double %a, %b + %cmp1 = fcmp one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + +define i1 @auto_gen_97_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_97_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast one double %a, %b %retval = select i1 %cmp, i1 true, i1 %cmp1 ret i1 %retval } @@ -2299,6 +3350,16 @@ ret i1 %retval } +define i1 @auto_gen_98_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_98_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_99(double %a, double %b) { ; CHECK-LABEL: @auto_gen_99( ; CHECK-NEXT: ret i1 true @@ -2319,6 +3380,16 @@ ret i1 %retval } +define i1 @auto_gen_99_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_99_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_100(double %a, double %b) { ; CHECK-LABEL: @auto_gen_100( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2341,6 +3412,17 @@ ret i1 %retval } +define i1 @auto_gen_100_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_100_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_101(double %a, double %b) { ; CHECK-LABEL: @auto_gen_101( ; CHECK-NEXT: ret i1 true @@ -2361,6 +3443,16 @@ ret i1 %retval } +define i1 @auto_gen_101_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_101_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_102(double %a, double %b) { ; CHECK-LABEL: @auto_gen_102( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2383,6 +3475,17 @@ ret i1 %retval } +define i1 @auto_gen_102_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_102_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_103(double %a, double %b) { ; CHECK-LABEL: @auto_gen_103( ; CHECK-NEXT: ret i1 true @@ -2403,6 +3506,16 @@ ret i1 %retval } +define i1 @auto_gen_103_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_103_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast une double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_104(double %a, double %b) { ; CHECK-LABEL: @auto_gen_104( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2425,6 +3538,17 @@ ret i1 %retval } +define i1 @auto_gen_104_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_104_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp une double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_105(double %a, double %b) { ; CHECK-LABEL: @auto_gen_105( ; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2447,6 +3571,16 @@ ret i1 %retval } +define i1 @auto_gen_105_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_105_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_106(double %a, double %b) { ; CHECK-LABEL: @auto_gen_106( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -2469,6 +3603,17 @@ ret i1 %retval } +define i1 @auto_gen_106_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_106_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_107(double %a, double %b) { ; CHECK-LABEL: @auto_gen_107( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -2491,6 +3636,17 @@ ret i1 %retval } +define i1 @auto_gen_107_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_107_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_108(double %a, double %b) { ; CHECK-LABEL: @auto_gen_108( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -2513,6 +3669,17 @@ ret i1 %retval } +define i1 @auto_gen_108_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_108_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_109(double %a, double %b) { ; CHECK-LABEL: @auto_gen_109( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -2535,6 +3702,17 @@ ret i1 %retval } +define i1 @auto_gen_109_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_109_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_110(double %a, double %b) { ; CHECK-LABEL: @auto_gen_110( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2557,6 +3735,17 @@ ret i1 %retval } +define i1 @auto_gen_110_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_110_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_111(double %a, double %b) { ; CHECK-LABEL: @auto_gen_111( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2579,6 +3768,17 @@ ret i1 %retval } +define i1 @auto_gen_111_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_111_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_112(double %a, double %b) { ; CHECK-LABEL: @auto_gen_112( ; CHECK-NEXT: ret i1 true @@ -2599,6 +3799,16 @@ ret i1 %retval } +define i1 @auto_gen_112_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_112_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_113(double %a, double %b) { ; CHECK-LABEL: @auto_gen_113( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]] @@ -2621,6 +3831,17 @@ ret i1 %retval } +define i1 @auto_gen_113_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_113_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_114(double %a, double %b) { ; CHECK-LABEL: @auto_gen_114( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] @@ -2643,6 +3864,17 @@ ret i1 %retval } +define i1 @auto_gen_114_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_114_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_115(double %a, double %b) { ; CHECK-LABEL: @auto_gen_115( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]] @@ -2665,6 +3897,17 @@ ret i1 %retval } +define i1 @auto_gen_115_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_115_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_116(double %a, double %b) { ; CHECK-LABEL: @auto_gen_116( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] @@ -2687,6 +3930,17 @@ ret i1 %retval } +define i1 @auto_gen_116_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_116_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_117(double %a, double %b) { ; CHECK-LABEL: @auto_gen_117( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]] @@ -2709,6 +3963,17 @@ ret i1 %retval } +define i1 @auto_gen_117_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_117_logical_fmf( +; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[CMP1]] +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_118(double %a, double %b) { ; CHECK-LABEL: @auto_gen_118( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] @@ -2731,6 +3996,17 @@ ret i1 %retval } +define i1 @auto_gen_118_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_118_logical_fmf( +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: ret i1 [[TMP1]] +; + %cmp = fcmp uno double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_119(double %a, double %b) { ; CHECK-LABEL: @auto_gen_119( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] @@ -2753,6 +4029,16 @@ ret i1 %retval } +define i1 @auto_gen_119_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_119_logical_fmf( +; CHECK-NEXT: ret i1 false +; + %cmp = fcmp fast uno double %a, %b + %cmp1 = fcmp fast uno double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_120(double %a, double %b) { ; CHECK-LABEL: @auto_gen_120( ; CHECK-NEXT: ret i1 true @@ -2773,6 +4059,16 @@ ret i1 %retval } +define i1 @auto_gen_120_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_120_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast false double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_121(double %a, double %b) { ; CHECK-LABEL: @auto_gen_121( ; CHECK-NEXT: ret i1 true @@ -2793,6 +4089,16 @@ ret i1 %retval } +define i1 @auto_gen_121_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_121_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast oeq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_122(double %a, double %b) { ; CHECK-LABEL: @auto_gen_122( ; CHECK-NEXT: ret i1 true @@ -2813,6 +4119,16 @@ ret i1 %retval } +define i1 @auto_gen_122_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_122_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ogt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_123(double %a, double %b) { ; CHECK-LABEL: @auto_gen_123( ; CHECK-NEXT: ret i1 true @@ -2833,6 +4149,16 @@ ret i1 %retval } +define i1 @auto_gen_123_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_123_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast oge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_124(double %a, double %b) { ; CHECK-LABEL: @auto_gen_124( ; CHECK-NEXT: ret i1 true @@ -2853,6 +4179,16 @@ ret i1 %retval } +define i1 @auto_gen_124_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_124_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast olt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_125(double %a, double %b) { ; CHECK-LABEL: @auto_gen_125( ; CHECK-NEXT: ret i1 true @@ -2873,6 +4209,16 @@ ret i1 %retval } +define i1 @auto_gen_125_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_125_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ole double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_126(double %a, double %b) { ; CHECK-LABEL: @auto_gen_126( ; CHECK-NEXT: ret i1 true @@ -2893,6 +4239,16 @@ ret i1 %retval } +define i1 @auto_gen_126_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_126_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast one double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_127(double %a, double %b) { ; CHECK-LABEL: @auto_gen_127( ; CHECK-NEXT: ret i1 true @@ -2913,6 +4269,16 @@ ret i1 %retval } +define i1 @auto_gen_127_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_127_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ord double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_128(double %a, double %b) { ; CHECK-LABEL: @auto_gen_128( ; CHECK-NEXT: ret i1 true @@ -2933,6 +4299,16 @@ ret i1 %retval } +define i1 @auto_gen_128_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_128_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ueq double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_129(double %a, double %b) { ; CHECK-LABEL: @auto_gen_129( ; CHECK-NEXT: ret i1 true @@ -2953,6 +4329,16 @@ ret i1 %retval } +define i1 @auto_gen_129_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_129_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ugt double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_130(double %a, double %b) { ; CHECK-LABEL: @auto_gen_130( ; CHECK-NEXT: ret i1 true @@ -2973,6 +4359,16 @@ ret i1 %retval } +define i1 @auto_gen_130_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_130_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast uge double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_131(double %a, double %b) { ; CHECK-LABEL: @auto_gen_131( ; CHECK-NEXT: ret i1 true @@ -2993,6 +4389,16 @@ ret i1 %retval } +define i1 @auto_gen_131_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_131_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast ult double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_132(double %a, double %b) { ; CHECK-LABEL: @auto_gen_132( ; CHECK-NEXT: ret i1 true @@ -3013,6 +4419,16 @@ ret i1 %retval } +define i1 @auto_gen_132_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_132_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast ule double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_133(double %a, double %b) { ; CHECK-LABEL: @auto_gen_133( ; CHECK-NEXT: ret i1 true @@ -3033,6 +4449,16 @@ ret i1 %retval } +define i1 @auto_gen_133_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_133_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast une double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_134(double %a, double %b) { ; CHECK-LABEL: @auto_gen_134( ; CHECK-NEXT: ret i1 true @@ -3053,6 +4479,16 @@ ret i1 %retval } +define i1 @auto_gen_134_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_134_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp true double %a, %b + %cmp1 = fcmp fast uno double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @auto_gen_135(double %a, double %b) { ; CHECK-LABEL: @auto_gen_135( ; CHECK-NEXT: ret i1 true @@ -3073,6 +4509,16 @@ ret i1 %retval } +define i1 @auto_gen_135_logical_fmf(double %a, double %b) { +; CHECK-LABEL: @auto_gen_135_logical_fmf( +; CHECK-NEXT: ret i1 true +; + %cmp = fcmp fast true double %a, %b + %cmp1 = fcmp fast true double %a, %b + %retval = select i1 %cmp, i1 true, i1 %cmp1 + ret i1 %retval +} + define i1 @intersect_fmf_1(double %a, double %b) { ; CHECK-LABEL: @intersect_fmf_1( ; CHECK-NEXT: [[TMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]