Index: lib/Transforms/InstCombine/InstCombineAndOrXor.cpp =================================================================== --- lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -39,30 +39,45 @@ } /// Similar to getICmpCode but for FCmpInst. This encodes a fcmp predicate into -/// a three bit mask. It also returns whether it is an ordered predicate by -/// reference. -static unsigned getFCmpCode(FCmpInst::Predicate CC, bool &isOrdered) { - isOrdered = false; - switch (CC) { - case FCmpInst::FCMP_ORD: isOrdered = true; return 0; // 000 - case FCmpInst::FCMP_UNO: return 0; // 000 - case FCmpInst::FCMP_OGT: isOrdered = true; return 1; // 001 - case FCmpInst::FCMP_UGT: return 1; // 001 - case FCmpInst::FCMP_OEQ: isOrdered = true; return 2; // 010 - case FCmpInst::FCMP_UEQ: return 2; // 010 - case FCmpInst::FCMP_OGE: isOrdered = true; return 3; // 011 - case FCmpInst::FCMP_UGE: return 3; // 011 - case FCmpInst::FCMP_OLT: isOrdered = true; return 4; // 100 - case FCmpInst::FCMP_ULT: return 4; // 100 - case FCmpInst::FCMP_ONE: isOrdered = true; return 5; // 101 - case FCmpInst::FCMP_UNE: return 5; // 101 - case FCmpInst::FCMP_OLE: isOrdered = true; return 6; // 110 - case FCmpInst::FCMP_ULE: return 6; // 110 - // True -> 7 - default: - // Not expecting FCMP_FALSE and FCMP_TRUE; - llvm_unreachable("Unexpected FCmp predicate!"); - } +/// a four bit mask. +static unsigned getFCmpCode(FCmpInst::Predicate CC) { + assert(FCmpInst::FCMP_FALSE <= CC && CC <= FCmpInst::FCMP_TRUE && + "Unexpected FCmp predicate!"); + // Take the advantage of the bit pattern of FCmpInst::Predicate here. + // U L G E + static_assert(FCmpInst::FCMP_FALSE == 0, // 0 0 0 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_OEQ == 1, // 0 0 0 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_OGT == 2, // 0 0 1 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_OGE == 3, // 0 0 1 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_OLT == 4, // 0 1 0 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_OLE == 5, // 0 1 0 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_ONE == 6, // 0 1 1 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_ORD == 7, // 0 1 1 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_UNO == 8, // 1 0 0 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_UEQ == 9, // 1 0 0 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_UGT == 10, // 1 0 1 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_UGE == 11, // 1 0 1 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_ULT == 12, // 1 1 0 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_ULE == 13, // 1 1 0 1 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_UNE == 14, // 1 1 1 0 + "FCMP_* predicates have unexpected bit patterns"); + static_assert(FCmpInst::FCMP_TRUE == 15, // 1 1 1 1 + "FCMP_* predicates have unexpected bit patterns"); + return CC; } /// This is the complement of getICmpCode, which turns an opcode and two @@ -78,26 +93,16 @@ } /// This is the complement of getFCmpCode, which turns an opcode and two -/// operands into either a FCmp instruction. isordered is passed in to determine -/// which kind of predicate to use in the new fcmp instruction. -static Value *getFCmpValue(bool isordered, unsigned code, - Value *LHS, Value *RHS, +/// operands into either a FCmp instruction. +static Value *getFCmpValue(unsigned Code, Value *LHS, Value *RHS, InstCombiner::BuilderTy *Builder) { - CmpInst::Predicate Pred; - switch (code) { - default: llvm_unreachable("Illegal FCmp code!"); - case 0: Pred = isordered ? FCmpInst::FCMP_ORD : FCmpInst::FCMP_UNO; break; - case 1: Pred = isordered ? FCmpInst::FCMP_OGT : FCmpInst::FCMP_UGT; break; - case 2: Pred = isordered ? FCmpInst::FCMP_OEQ : FCmpInst::FCMP_UEQ; break; - case 3: Pred = isordered ? FCmpInst::FCMP_OGE : FCmpInst::FCMP_UGE; break; - case 4: Pred = isordered ? FCmpInst::FCMP_OLT : FCmpInst::FCMP_ULT; break; - case 5: Pred = isordered ? FCmpInst::FCMP_ONE : FCmpInst::FCMP_UNE; break; - case 6: Pred = isordered ? FCmpInst::FCMP_OLE : FCmpInst::FCMP_ULE; break; - case 7: - if (!isordered) - return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 1); - Pred = FCmpInst::FCMP_ORD; break; - } + const auto Pred = static_cast(Code); + assert(FCmpInst::FCMP_FALSE <= Pred && Pred <= FCmpInst::FCMP_TRUE && + "Unexpected FCmp predicate!"); + if (Pred == FCmpInst::FCMP_FALSE) + return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 0); + if (Pred == FCmpInst::FCMP_TRUE) + return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 1); return Builder->CreateFCmp(Pred, LHS, RHS); } @@ -1107,6 +1112,29 @@ /// Optimize (fcmp)&(fcmp). NOTE: Unlike the rest of instcombine, this returns /// a Value which should already be inserted into the function. Value *InstCombiner::FoldAndOfFCmps(FCmpInst *LHS, FCmpInst *RHS) { + Value *Op0LHS = LHS->getOperand(0), *Op0RHS = LHS->getOperand(1); + Value *Op1LHS = RHS->getOperand(0), *Op1RHS = RHS->getOperand(1); + FCmpInst::Predicate Op0CC = LHS->getPredicate(), Op1CC = RHS->getPredicate(); + + if (Op0LHS == Op1RHS && Op0RHS == Op1LHS) { + // Swap RHS operands to match LHS. + Op1CC = FCmpInst::getSwappedPredicate(Op1CC); + std::swap(Op1LHS, Op1RHS); + } + + // Simplify (fcmp cc0 x, y) & (fcmp cc1 x, y). + // Suppose the relation between x and y is R, where R is one of + // U(1000), L(0100), G(0010) or E(0001), and CC0 and CC1 are the bitmasks for + // testing the desired relations. + // + // Since (R & CC0) and (R & CC1) are either R or 0, we actually have this: + // bool(R & CC0) && bool(R & CC1) + // = bool((R & CC0) & (R & CC1)) + // = bool(R & (CC0 & CC1)) <= by re-association, commutation, and idempotency + if (Op0LHS == Op1LHS && Op0RHS == Op1RHS) + return getFCmpValue(getFCmpCode(Op0CC) & getFCmpCode(Op1CC), Op0LHS, Op0RHS, + Builder); + if (LHS->getPredicate() == FCmpInst::FCMP_ORD && RHS->getPredicate() == FCmpInst::FCMP_ORD) { if (LHS->getOperand(0)->getType() != RHS->getOperand(0)->getType()) @@ -1130,56 +1158,6 @@ return nullptr; } - Value *Op0LHS = LHS->getOperand(0), *Op0RHS = LHS->getOperand(1); - Value *Op1LHS = RHS->getOperand(0), *Op1RHS = RHS->getOperand(1); - FCmpInst::Predicate Op0CC = LHS->getPredicate(), Op1CC = RHS->getPredicate(); - - - if (Op0LHS == Op1RHS && Op0RHS == Op1LHS) { - // Swap RHS operands to match LHS. - Op1CC = FCmpInst::getSwappedPredicate(Op1CC); - std::swap(Op1LHS, Op1RHS); - } - - if (Op0LHS == Op1LHS && Op0RHS == Op1RHS) { - // Simplify (fcmp cc0 x, y) & (fcmp cc1 x, y). - if (Op0CC == Op1CC) - return Builder->CreateFCmp((FCmpInst::Predicate)Op0CC, Op0LHS, Op0RHS); - if (Op0CC == FCmpInst::FCMP_FALSE || Op1CC == FCmpInst::FCMP_FALSE) - return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 0); - if (Op0CC == FCmpInst::FCMP_TRUE) - return RHS; - if (Op1CC == FCmpInst::FCMP_TRUE) - return LHS; - - bool Op0Ordered; - bool Op1Ordered; - unsigned Op0Pred = getFCmpCode(Op0CC, Op0Ordered); - unsigned Op1Pred = getFCmpCode(Op1CC, Op1Ordered); - // uno && ord -> false - if (Op0Pred == 0 && Op1Pred == 0 && Op0Ordered != Op1Ordered) - return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 0); - if (Op1Pred == 0) { - std::swap(LHS, RHS); - std::swap(Op0Pred, Op1Pred); - std::swap(Op0Ordered, Op1Ordered); - } - if (Op0Pred == 0) { - // uno && ueq -> uno && (uno || eq) -> uno - // ord && olt -> ord && (ord && lt) -> olt - if (!Op0Ordered && (Op0Ordered == Op1Ordered)) - return LHS; - if (Op0Ordered && (Op0Ordered == Op1Ordered)) - return RHS; - - // uno && oeq -> uno && (ord && eq) -> false - if (!Op0Ordered) - return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 0); - // ord && ueq -> ord && (uno || eq) -> oeq - return getFCmpValue(true, Op1Pred, Op0LHS, Op0RHS, Builder); - } - } - return nullptr; } @@ -1996,6 +1974,29 @@ /// Optimize (fcmp)|(fcmp). NOTE: Unlike the rest of instcombine, this returns /// a Value which should already be inserted into the function. Value *InstCombiner::FoldOrOfFCmps(FCmpInst *LHS, FCmpInst *RHS) { + Value *Op0LHS = LHS->getOperand(0), *Op0RHS = LHS->getOperand(1); + Value *Op1LHS = RHS->getOperand(0), *Op1RHS = RHS->getOperand(1); + FCmpInst::Predicate Op0CC = LHS->getPredicate(), Op1CC = RHS->getPredicate(); + + if (Op0LHS == Op1RHS && Op0RHS == Op1LHS) { + // Swap RHS operands to match LHS. + Op1CC = FCmpInst::getSwappedPredicate(Op1CC); + std::swap(Op1LHS, Op1RHS); + } + + // Simplify (fcmp cc0 x, y) | (fcmp cc1 x, y). + // Suppose the relation between x and y is R, where R is one of + // U(1000), L(0100), G(0010) or E(0001), and CC0 and CC1 are the bitmasks for + // testing the desired relations. + // + // Since (R & CC0) and (R & CC1) are either R or 0, we actually have this: + // bool(R & CC0) || bool(R & CC1) + // = bool((R & CC0) | (R & CC1)) + // = bool(R & (CC0 | CC1)) <= by reversed distribution (contribution? ;) + if (Op0LHS == Op1LHS && Op0RHS == Op1RHS) + return getFCmpValue(getFCmpCode(Op0CC) | getFCmpCode(Op1CC), Op0LHS, Op0RHS, + Builder); + if (LHS->getPredicate() == FCmpInst::FCMP_UNO && RHS->getPredicate() == FCmpInst::FCMP_UNO && LHS->getOperand(0)->getType() == RHS->getOperand(0)->getType()) { @@ -2020,35 +2021,6 @@ return nullptr; } - Value *Op0LHS = LHS->getOperand(0), *Op0RHS = LHS->getOperand(1); - Value *Op1LHS = RHS->getOperand(0), *Op1RHS = RHS->getOperand(1); - FCmpInst::Predicate Op0CC = LHS->getPredicate(), Op1CC = RHS->getPredicate(); - - if (Op0LHS == Op1RHS && Op0RHS == Op1LHS) { - // Swap RHS operands to match LHS. - Op1CC = FCmpInst::getSwappedPredicate(Op1CC); - std::swap(Op1LHS, Op1RHS); - } - if (Op0LHS == Op1LHS && Op0RHS == Op1RHS) { - // Simplify (fcmp cc0 x, y) | (fcmp cc1 x, y). - if (Op0CC == Op1CC) - return Builder->CreateFCmp((FCmpInst::Predicate)Op0CC, Op0LHS, Op0RHS); - if (Op0CC == FCmpInst::FCMP_TRUE || Op1CC == FCmpInst::FCMP_TRUE) - return ConstantInt::get(CmpInst::makeCmpResultType(LHS->getType()), 1); - if (Op0CC == FCmpInst::FCMP_FALSE) - return RHS; - if (Op1CC == FCmpInst::FCMP_FALSE) - return LHS; - bool Op0Ordered; - bool Op1Ordered; - unsigned Op0Pred = getFCmpCode(Op0CC, Op0Ordered); - unsigned Op1Pred = getFCmpCode(Op1CC, Op1Ordered); - if (Op0Ordered == Op1Ordered) { - // If both are ordered or unordered, return a new fcmp with - // or'ed predicates. - return getFCmpValue(Op0Ordered, Op0Pred|Op1Pred, Op0LHS, Op0RHS, Builder); - } - } return nullptr; } Index: test/Transforms/InstCombine/and-fcmp.ll =================================================================== --- test/Transforms/InstCombine/and-fcmp.ll +++ test/Transforms/InstCombine/and-fcmp.ll @@ -14,8 +14,8 @@ define i1 @t2(float %x, float %y) { ; CHECK-LABEL: @t2( -; CHECK-NEXT: [[A:%.*]] = fcmp olt float %x, %y -; CHECK-NEXT: ret i1 [[A]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt float %x, %y +; CHECK-NEXT: ret i1 [[TMP1]] ; %a = fcmp olt float %x, %y %b = fcmp ord float %x, %y @@ -35,8 +35,8 @@ define i1 @t4(float %x, float %y) { ; CHECK-LABEL: @t4( -; CHECK-NEXT: [[A:%.*]] = fcmp one float %y, %x -; CHECK-NEXT: ret i1 [[A]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one float %y, %x +; CHECK-NEXT: ret i1 [[TMP1]] ; %a = fcmp one float %y, %x %b = fcmp ord float %x, %y @@ -66,8 +66,8 @@ define i1 @t7(float %x, float %y) { ; CHECK-LABEL: @t7( -; CHECK-NEXT: [[A:%.*]] = fcmp uno float %x, %y -; CHECK-NEXT: ret i1 [[A]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno float %x, %y +; CHECK-NEXT: ret i1 [[TMP1]] ; %a = fcmp uno float %x, %y %b = fcmp ult float %x, %y @@ -145,10 +145,7 @@ define i1 @auto_gen_4(double %a, double %b) { ; CHECK-LABEL: @auto_gen_4( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ogt double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -179,10 +176,8 @@ define i1 @auto_gen_7(double %a, double %b) { ; CHECK-LABEL: @auto_gen_7( -; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -192,10 +187,8 @@ define i1 @auto_gen_8(double %a, double %b) { ; CHECK-LABEL: @auto_gen_8( -; CHECK-NEXT: [[CMP:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp oge double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -226,10 +219,7 @@ define i1 @auto_gen_11(double %a, double %b) { ; CHECK-LABEL: @auto_gen_11( -; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp olt double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -239,10 +229,7 @@ define i1 @auto_gen_12(double %a, double %b) { ; CHECK-LABEL: @auto_gen_12( -; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp olt double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -252,10 +239,7 @@ define i1 @auto_gen_13(double %a, double %b) { ; CHECK-LABEL: @auto_gen_13( -; CHECK-NEXT: [[CMP:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp olt double %a, %b %cmp1 = fcmp oge double %a, %b @@ -286,10 +270,8 @@ define i1 @auto_gen_16(double %a, double %b) { ; CHECK-LABEL: @auto_gen_16( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -299,10 +281,7 @@ define i1 @auto_gen_17(double %a, double %b) { ; CHECK-LABEL: @auto_gen_17( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ole double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -312,10 +291,8 @@ define i1 @auto_gen_18(double %a, double %b) { ; CHECK-LABEL: @auto_gen_18( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b %cmp1 = fcmp oge double %a, %b @@ -325,10 +302,8 @@ define i1 @auto_gen_19(double %a, double %b) { ; CHECK-LABEL: @auto_gen_19( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ole double %a, %b %cmp1 = fcmp olt double %a, %b @@ -359,10 +334,7 @@ define i1 @auto_gen_22(double %a, double %b) { ; CHECK-LABEL: @auto_gen_22( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp one double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -372,10 +344,8 @@ define i1 @auto_gen_23(double %a, double %b) { ; CHECK-LABEL: @auto_gen_23( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -385,10 +355,8 @@ define i1 @auto_gen_24(double %a, double %b) { ; CHECK-LABEL: @auto_gen_24( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b %cmp1 = fcmp oge double %a, %b @@ -398,10 +366,8 @@ define i1 @auto_gen_25(double %a, double %b) { ; CHECK-LABEL: @auto_gen_25( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b %cmp1 = fcmp olt double %a, %b @@ -411,10 +377,8 @@ define i1 @auto_gen_26(double %a, double %b) { ; CHECK-LABEL: @auto_gen_26( -; CHECK-NEXT: [[CMP:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp one double %a, %b %cmp1 = fcmp ole double %a, %b @@ -445,8 +409,8 @@ define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -456,8 +420,8 @@ define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -467,8 +431,8 @@ define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp oge double %a, %b @@ -478,8 +442,8 @@ define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp olt double %a, %b @@ -489,8 +453,8 @@ define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp ole double %a, %b @@ -500,8 +464,8 @@ define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: ret i1 [[CMP1]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp one double %a, %b @@ -511,10 +475,8 @@ define i1 @auto_gen_35(double %a, double %b) { ; CHECK-LABEL: @auto_gen_35( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b %cmp1 = fcmp ord double %a, %b @@ -534,10 +496,8 @@ define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -547,10 +507,7 @@ define i1 @auto_gen_38(double %a, double %b) { ; CHECK-LABEL: @auto_gen_38( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -560,10 +517,8 @@ define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp oge double %a, %b @@ -573,10 +528,7 @@ define i1 @auto_gen_40(double %a, double %b) { ; CHECK-LABEL: @auto_gen_40( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp olt double %a, %b @@ -586,10 +538,8 @@ define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp ole double %a, %b @@ -599,10 +549,7 @@ define i1 @auto_gen_42(double %a, double %b) { ; CHECK-LABEL: @auto_gen_42( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp one double %a, %b @@ -644,10 +591,7 @@ define i1 @auto_gen_46(double %a, double %b) { ; CHECK-LABEL: @auto_gen_46( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -657,10 +601,8 @@ define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -670,10 +612,8 @@ define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp oge double %a, %b @@ -683,10 +623,7 @@ define i1 @auto_gen_49(double %a, double %b) { ; CHECK-LABEL: @auto_gen_49( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp olt double %a, %b @@ -696,10 +633,7 @@ define i1 @auto_gen_50(double %a, double %b) { ; CHECK-LABEL: @auto_gen_50( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ole double %a, %b @@ -709,10 +643,8 @@ define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp one double %a, %b @@ -733,10 +665,8 @@ define i1 @auto_gen_53(double %a, double %b) { ; CHECK-LABEL: @auto_gen_53( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -767,10 +697,8 @@ define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -780,10 +708,8 @@ define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -793,10 +719,8 @@ define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp oge double %a, %b @@ -806,10 +730,7 @@ define i1 @auto_gen_59(double %a, double %b) { ; CHECK-LABEL: @auto_gen_59( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp olt double %a, %b @@ -819,10 +740,8 @@ define i1 @auto_gen_60(double %a, double %b) { ; CHECK-LABEL: @auto_gen_60( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ole double %a, %b @@ -832,10 +751,8 @@ define i1 @auto_gen_61(double %a, double %b) { ; CHECK-LABEL: @auto_gen_61( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp one double %a, %b @@ -856,10 +773,8 @@ define i1 @auto_gen_63(double %a, double %b) { ; CHECK-LABEL: @auto_gen_63( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -869,10 +784,8 @@ define i1 @auto_gen_64(double %a, double %b) { ; CHECK-LABEL: @auto_gen_64( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ugt double %a, %b @@ -903,10 +816,7 @@ define i1 @auto_gen_67(double %a, double %b) { ; CHECK-LABEL: @auto_gen_67( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -916,10 +826,7 @@ define i1 @auto_gen_68(double %a, double %b) { ; CHECK-LABEL: @auto_gen_68( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -929,10 +836,7 @@ define i1 @auto_gen_69(double %a, double %b) { ; CHECK-LABEL: @auto_gen_69( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp oge double %a, %b @@ -942,10 +846,8 @@ define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp olt double %a, %b @@ -955,10 +857,8 @@ define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ole double %a, %b @@ -968,10 +868,8 @@ define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp one double %a, %b @@ -992,10 +890,8 @@ define i1 @auto_gen_74(double %a, double %b) { ; CHECK-LABEL: @auto_gen_74( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -1005,10 +901,8 @@ define i1 @auto_gen_75(double %a, double %b) { ; CHECK-LABEL: @auto_gen_75( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ugt double %a, %b @@ -1018,10 +912,8 @@ define i1 @auto_gen_76(double %a, double %b) { ; CHECK-LABEL: @auto_gen_76( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp uge double %a, %b @@ -1052,10 +944,8 @@ define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -1065,10 +955,7 @@ define i1 @auto_gen_80(double %a, double %b) { ; CHECK-LABEL: @auto_gen_80( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -1078,10 +965,8 @@ define i1 @auto_gen_81(double %a, double %b) { ; CHECK-LABEL: @auto_gen_81( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp oge double %a, %b @@ -1091,10 +976,8 @@ define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp olt double %a, %b @@ -1104,10 +987,8 @@ define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ole double %a, %b @@ -1117,10 +998,8 @@ define i1 @auto_gen_84(double %a, double %b) { ; CHECK-LABEL: @auto_gen_84( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp one double %a, %b @@ -1141,10 +1020,8 @@ define i1 @auto_gen_86(double %a, double %b) { ; CHECK-LABEL: @auto_gen_86( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -1154,10 +1031,8 @@ define i1 @auto_gen_87(double %a, double %b) { ; CHECK-LABEL: @auto_gen_87( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ugt double %a, %b @@ -1167,10 +1042,8 @@ define i1 @auto_gen_88(double %a, double %b) { ; CHECK-LABEL: @auto_gen_88( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp uge double %a, %b @@ -1180,10 +1053,8 @@ define i1 @auto_gen_89(double %a, double %b) { ; CHECK-LABEL: @auto_gen_89( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ult double %a, %b @@ -1214,10 +1085,7 @@ define i1 @auto_gen_92(double %a, double %b) { ; CHECK-LABEL: @auto_gen_92( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 false ; %cmp = fcmp une double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -1227,10 +1095,8 @@ define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -1240,10 +1106,8 @@ define i1 @auto_gen_94(double %a, double %b) { ; CHECK-LABEL: @auto_gen_94( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp oge double %a, %b @@ -1253,10 +1117,8 @@ define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp olt double %a, %b @@ -1266,10 +1128,8 @@ define i1 @auto_gen_96(double %a, double %b) { ; CHECK-LABEL: @auto_gen_96( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ole double %a, %b @@ -1279,10 +1139,8 @@ define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; 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 @@ -1303,10 +1161,8 @@ define i1 @auto_gen_99(double %a, double %b) { ; CHECK-LABEL: @auto_gen_99( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -1316,10 +1172,8 @@ define i1 @auto_gen_100(double %a, double %b) { ; CHECK-LABEL: @auto_gen_100( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ugt double %a, %b @@ -1329,10 +1183,8 @@ define i1 @auto_gen_101(double %a, double %b) { ; CHECK-LABEL: @auto_gen_101( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp uge double %a, %b @@ -1342,10 +1194,8 @@ define i1 @auto_gen_102(double %a, double %b) { ; CHECK-LABEL: @auto_gen_102( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ult double %a, %b @@ -1355,10 +1205,8 @@ define i1 @auto_gen_103(double %a, double %b) { ; CHECK-LABEL: @auto_gen_103( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ule double %a, %b @@ -1459,8 +1307,8 @@ define i1 @auto_gen_113(double %a, double %b) { ; CHECK-LABEL: @auto_gen_113( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ueq double %a, %b @@ -1470,8 +1318,8 @@ define i1 @auto_gen_114(double %a, double %b) { ; CHECK-LABEL: @auto_gen_114( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ugt double %a, %b @@ -1481,8 +1329,8 @@ define i1 @auto_gen_115(double %a, double %b) { ; CHECK-LABEL: @auto_gen_115( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp uge double %a, %b @@ -1492,8 +1340,8 @@ define i1 @auto_gen_116(double %a, double %b) { ; CHECK-LABEL: @auto_gen_116( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ult double %a, %b @@ -1503,8 +1351,8 @@ define i1 @auto_gen_117(double %a, double %b) { ; CHECK-LABEL: @auto_gen_117( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ule double %a, %b @@ -1514,8 +1362,8 @@ define i1 @auto_gen_118(double %a, double %b) { ; CHECK-LABEL: @auto_gen_118( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: ret i1 [[CMP]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp une double %a, %b Index: test/Transforms/InstCombine/or-fcmp.ll =================================================================== --- test/Transforms/InstCombine/or-fcmp.ll +++ test/Transforms/InstCombine/or-fcmp.ll @@ -373,11 +373,9 @@ ret i1 %retval } -; FIXME: this test, along with the several following ones, -; is wrong and will be fixed shortly. define i1 @auto_gen_29(double %a, double %b) { ; CHECK-LABEL: @auto_gen_29( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oeq double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -388,7 +386,7 @@ define i1 @auto_gen_30(double %a, double %b) { ; CHECK-LABEL: @auto_gen_30( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ogt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -399,7 +397,7 @@ define i1 @auto_gen_31(double %a, double %b) { ; CHECK-LABEL: @auto_gen_31( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp oge double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -410,7 +408,7 @@ define i1 @auto_gen_32(double %a, double %b) { ; CHECK-LABEL: @auto_gen_32( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp olt double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -421,7 +419,7 @@ define i1 @auto_gen_33(double %a, double %b) { ; CHECK-LABEL: @auto_gen_33( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp ole double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -432,7 +430,7 @@ define i1 @auto_gen_34(double %a, double %b) { ; CHECK-LABEL: @auto_gen_34( -; CHECK-NEXT: [[TMP1:%.*]] = fcmp one double %a, %b +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord double %a, %b ; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ord double %a, %b @@ -465,10 +463,8 @@ define i1 @auto_gen_37(double %a, double %b) { ; CHECK-LABEL: @auto_gen_37( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -478,10 +474,8 @@ define i1 @auto_gen_38(double %a, double %b) { ; CHECK-LABEL: @auto_gen_38( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -491,10 +485,8 @@ define i1 @auto_gen_39(double %a, double %b) { ; CHECK-LABEL: @auto_gen_39( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp oge double %a, %b @@ -504,10 +496,8 @@ define i1 @auto_gen_40(double %a, double %b) { ; CHECK-LABEL: @auto_gen_40( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp olt double %a, %b @@ -517,10 +507,8 @@ define i1 @auto_gen_41(double %a, double %b) { ; CHECK-LABEL: @auto_gen_41( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp ole double %a, %b @@ -530,10 +518,7 @@ define i1 @auto_gen_42(double %a, double %b) { ; CHECK-LABEL: @auto_gen_42( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp one double %a, %b @@ -543,10 +528,7 @@ define i1 @auto_gen_43(double %a, double %b) { ; CHECK-LABEL: @auto_gen_43( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ueq double %a, %b %cmp1 = fcmp ord double %a, %b @@ -578,10 +560,8 @@ define i1 @auto_gen_46(double %a, double %b) { ; CHECK-LABEL: @auto_gen_46( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -591,10 +571,8 @@ define i1 @auto_gen_47(double %a, double %b) { ; CHECK-LABEL: @auto_gen_47( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -604,10 +582,8 @@ define i1 @auto_gen_48(double %a, double %b) { ; CHECK-LABEL: @auto_gen_48( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp oge double %a, %b @@ -617,10 +593,8 @@ define i1 @auto_gen_49(double %a, double %b) { ; CHECK-LABEL: @auto_gen_49( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp olt double %a, %b @@ -630,10 +604,7 @@ define i1 @auto_gen_50(double %a, double %b) { ; CHECK-LABEL: @auto_gen_50( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ole double %a, %b @@ -643,10 +614,8 @@ define i1 @auto_gen_51(double %a, double %b) { ; CHECK-LABEL: @auto_gen_51( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp one double %a, %b @@ -656,10 +625,7 @@ define i1 @auto_gen_52(double %a, double %b) { ; CHECK-LABEL: @auto_gen_52( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ugt double %a, %b %cmp1 = fcmp ord double %a, %b @@ -702,10 +668,8 @@ define i1 @auto_gen_56(double %a, double %b) { ; CHECK-LABEL: @auto_gen_56( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -715,10 +679,8 @@ define i1 @auto_gen_57(double %a, double %b) { ; CHECK-LABEL: @auto_gen_57( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -728,10 +690,8 @@ define i1 @auto_gen_58(double %a, double %b) { ; CHECK-LABEL: @auto_gen_58( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp oge double %a, %b @@ -741,10 +701,7 @@ define i1 @auto_gen_59(double %a, double %b) { ; CHECK-LABEL: @auto_gen_59( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp olt double %a, %b @@ -754,10 +711,7 @@ define i1 @auto_gen_60(double %a, double %b) { ; CHECK-LABEL: @auto_gen_60( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ole double %a, %b @@ -767,10 +721,7 @@ define i1 @auto_gen_61(double %a, double %b) { ; CHECK-LABEL: @auto_gen_61( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp one double %a, %b @@ -780,10 +731,7 @@ define i1 @auto_gen_62(double %a, double %b) { ; CHECK-LABEL: @auto_gen_62( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp uge double %a, %b %cmp1 = fcmp ord double %a, %b @@ -837,10 +785,8 @@ define i1 @auto_gen_67(double %a, double %b) { ; CHECK-LABEL: @auto_gen_67( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -850,10 +796,8 @@ define i1 @auto_gen_68(double %a, double %b) { ; CHECK-LABEL: @auto_gen_68( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -863,10 +807,7 @@ define i1 @auto_gen_69(double %a, double %b) { ; CHECK-LABEL: @auto_gen_69( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp oge double %a, %b @@ -876,10 +817,8 @@ define i1 @auto_gen_70(double %a, double %b) { ; CHECK-LABEL: @auto_gen_70( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp olt double %a, %b @@ -889,10 +828,8 @@ define i1 @auto_gen_71(double %a, double %b) { ; CHECK-LABEL: @auto_gen_71( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ole double %a, %b @@ -902,10 +839,8 @@ define i1 @auto_gen_72(double %a, double %b) { ; CHECK-LABEL: @auto_gen_72( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp one double %a, %b @@ -915,10 +850,7 @@ define i1 @auto_gen_73(double %a, double %b) { ; CHECK-LABEL: @auto_gen_73( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ult double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ult double %a, %b %cmp1 = fcmp ord double %a, %b @@ -982,10 +914,8 @@ define i1 @auto_gen_79(double %a, double %b) { ; CHECK-LABEL: @auto_gen_79( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -995,10 +925,7 @@ define i1 @auto_gen_80(double %a, double %b) { ; CHECK-LABEL: @auto_gen_80( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -1008,10 +935,7 @@ define i1 @auto_gen_81(double %a, double %b) { ; CHECK-LABEL: @auto_gen_81( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp oge double %a, %b @@ -1021,10 +945,8 @@ define i1 @auto_gen_82(double %a, double %b) { ; CHECK-LABEL: @auto_gen_82( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp olt double %a, %b @@ -1034,10 +956,8 @@ define i1 @auto_gen_83(double %a, double %b) { ; CHECK-LABEL: @auto_gen_83( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ole double %a, %b @@ -1047,10 +967,7 @@ define i1 @auto_gen_84(double %a, double %b) { ; CHECK-LABEL: @auto_gen_84( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp one double %a, %b @@ -1060,10 +977,7 @@ define i1 @auto_gen_85(double %a, double %b) { ; CHECK-LABEL: @auto_gen_85( -; CHECK-NEXT: [[CMP:%.*]] = fcmp ule double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp ule double %a, %b %cmp1 = fcmp ord double %a, %b @@ -1137,10 +1051,7 @@ define i1 @auto_gen_92(double %a, double %b) { ; CHECK-LABEL: @auto_gen_92( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp une double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -1150,10 +1061,8 @@ define i1 @auto_gen_93(double %a, double %b) { ; CHECK-LABEL: @auto_gen_93( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -1163,10 +1072,7 @@ define i1 @auto_gen_94(double %a, double %b) { ; CHECK-LABEL: @auto_gen_94( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp une double %a, %b %cmp1 = fcmp oge double %a, %b @@ -1176,10 +1082,8 @@ define i1 @auto_gen_95(double %a, double %b) { ; CHECK-LABEL: @auto_gen_95( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp une double %a, %b %cmp1 = fcmp olt double %a, %b @@ -1189,10 +1093,7 @@ define i1 @auto_gen_96(double %a, double %b) { ; CHECK-LABEL: @auto_gen_96( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ole double %a, %b @@ -1202,10 +1103,8 @@ define i1 @auto_gen_97(double %a, double %b) { ; CHECK-LABEL: @auto_gen_97( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; 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 @@ -1215,10 +1114,7 @@ define i1 @auto_gen_98(double %a, double %b) { ; CHECK-LABEL: @auto_gen_98( -; CHECK-NEXT: [[CMP:%.*]] = fcmp une double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp une double %a, %b %cmp1 = fcmp ord double %a, %b @@ -1302,10 +1198,8 @@ define i1 @auto_gen_106(double %a, double %b) { ; CHECK-LABEL: @auto_gen_106( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ueq double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp oeq double %a, %b @@ -1315,10 +1209,8 @@ define i1 @auto_gen_107(double %a, double %b) { ; CHECK-LABEL: @auto_gen_107( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ugt double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ogt double %a, %b @@ -1328,10 +1220,8 @@ define i1 @auto_gen_108(double %a, double %b) { ; CHECK-LABEL: @auto_gen_108( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uge double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp oge double %a, %b @@ -1341,10 +1231,8 @@ define i1 @auto_gen_109(double %a, double %b) { ; CHECK-LABEL: @auto_gen_109( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ult double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp olt double %a, %b @@ -1354,10 +1242,8 @@ define i1 @auto_gen_110(double %a, double %b) { ; CHECK-LABEL: @auto_gen_110( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp ule double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ole double %a, %b @@ -1367,10 +1253,8 @@ define i1 @auto_gen_111(double %a, double %b) { ; CHECK-LABEL: @auto_gen_111( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp une double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp one double %a, %b @@ -1380,10 +1264,7 @@ define i1 @auto_gen_112(double %a, double %b) { ; CHECK-LABEL: @auto_gen_112( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: ret i1 true ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp ord double %a, %b @@ -1459,10 +1340,8 @@ define i1 @auto_gen_119(double %a, double %b) { ; CHECK-LABEL: @auto_gen_119( -; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double %a, %b -; CHECK-NEXT: [[RETVAL:%.*]] = or i1 [[CMP]], [[CMP1]] -; CHECK-NEXT: ret i1 [[RETVAL]] +; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double %a, %b +; CHECK-NEXT: ret i1 [[TMP1]] ; %cmp = fcmp uno double %a, %b %cmp1 = fcmp uno double %a, %b