Index: llvm/trunk/include/llvm/IR/InstrTypes.h =================================================================== --- llvm/trunk/include/llvm/IR/InstrTypes.h +++ llvm/trunk/include/llvm/IR/InstrTypes.h @@ -859,6 +859,10 @@ /// Values in the range 0-31 are reserved for FCmpInst, while values in the /// range 32-64 are reserved for ICmpInst. This is necessary to ensure the /// predicate values are not overlapping between the classes. + /// + /// Some passes (e.g. InstCombine) depend on the bit-wise characteristics of + /// FCMP_* values. Changing the bit patterns requires a potential change to + /// those passes. enum Predicate { // Opcode U L G E Intuitive operation FCMP_FALSE = 0, ///< 0 0 0 0 Always false (always folded) Index: llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp =================================================================== --- llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -39,30 +39,29 @@ } /// 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 advantage of the bit pattern of FCmpInst::Predicate here. + // U L G E + static_assert(FCmpInst::FCMP_FALSE == 0, ""); // 0 0 0 0 + static_assert(FCmpInst::FCMP_OEQ == 1, ""); // 0 0 0 1 + static_assert(FCmpInst::FCMP_OGT == 2, ""); // 0 0 1 0 + static_assert(FCmpInst::FCMP_OGE == 3, ""); // 0 0 1 1 + static_assert(FCmpInst::FCMP_OLT == 4, ""); // 0 1 0 0 + static_assert(FCmpInst::FCMP_OLE == 5, ""); // 0 1 0 1 + static_assert(FCmpInst::FCMP_ONE == 6, ""); // 0 1 1 0 + static_assert(FCmpInst::FCMP_ORD == 7, ""); // 0 1 1 1 + static_assert(FCmpInst::FCMP_UNO == 8, ""); // 1 0 0 0 + static_assert(FCmpInst::FCMP_UEQ == 9, ""); // 1 0 0 1 + static_assert(FCmpInst::FCMP_UGT == 10, ""); // 1 0 1 0 + static_assert(FCmpInst::FCMP_UGE == 11, ""); // 1 0 1 1 + static_assert(FCmpInst::FCMP_ULT == 12, ""); // 1 1 0 0 + static_assert(FCmpInst::FCMP_ULE == 13, ""); // 1 1 0 1 + static_assert(FCmpInst::FCMP_UNE == 14, ""); // 1 1 1 0 + static_assert(FCmpInst::FCMP_TRUE == 15, ""); // 1 1 1 1 + return CC; } /// This is the complement of getICmpCode, which turns an opcode and two @@ -78,26 +77,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, or a true/false constant. +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 +1096,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 +1142,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 Builder->CreateFCmp(Op1CC, Op0LHS, Op0RHS); - if (Op1CC == FCmpInst::FCMP_TRUE) - return Builder->CreateFCmp(Op0CC, Op0LHS, Op0RHS); - - 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 Builder->CreateFCmp(Op0CC, Op0LHS, Op0RHS); - if (Op0Ordered && (Op0Ordered == Op1Ordered)) - return Builder->CreateFCmp(Op1CC, Op0LHS, Op0RHS); - - // 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 +1958,27 @@ /// 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). + // This is a similar transformation to the one in FoldAndOfFCmps. + // + // 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 +2003,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 Builder->CreateFCmp(Op1CC, Op0LHS, Op0RHS); - if (Op1CC == FCmpInst::FCMP_FALSE) - return Builder->CreateFCmp(Op0CC, Op0LHS, Op0RHS); - 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: llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll =================================================================== --- llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll +++ llvm/trunk/test/Transforms/InstCombine/and-fcmp.ll @@ -71,10 +71,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 @@ -105,10 +102,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 @@ -118,10 +113,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 @@ -152,10 +145,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 @@ -165,10 +155,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 @@ -178,10 +165,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 @@ -212,10 +196,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 @@ -225,10 +207,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 @@ -238,10 +217,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 @@ -251,10 +228,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 @@ -285,10 +260,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 @@ -298,10 +270,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 @@ -311,10 +281,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 @@ -324,10 +292,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 @@ -337,10 +303,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 @@ -437,10 +401,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 @@ -460,10 +422,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 @@ -473,10 +433,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 @@ -486,10 +443,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 @@ -499,10 +454,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 @@ -512,10 +464,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 @@ -525,10 +475,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 @@ -570,10 +517,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 @@ -583,10 +527,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 @@ -596,10 +538,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 @@ -609,10 +549,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 @@ -622,10 +559,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 @@ -635,10 +569,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 @@ -659,10 +591,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 @@ -693,10 +623,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 @@ -706,10 +634,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 @@ -719,10 +645,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 @@ -732,10 +656,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 @@ -745,10 +666,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 @@ -758,10 +677,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 @@ -782,10 +699,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 @@ -795,10 +710,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 @@ -829,10 +742,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 @@ -842,10 +752,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 @@ -855,10 +762,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 @@ -868,10 +772,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 @@ -881,10 +783,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 @@ -894,10 +794,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 @@ -918,10 +816,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 @@ -931,10 +827,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 @@ -944,10 +838,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 @@ -978,10 +870,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 @@ -991,10 +881,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 @@ -1004,10 +891,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 @@ -1017,10 +902,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 @@ -1030,10 +913,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 @@ -1043,10 +924,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 @@ -1067,10 +946,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 @@ -1080,10 +957,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 @@ -1093,10 +968,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 @@ -1106,10 +979,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 @@ -1140,10 +1011,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 @@ -1153,10 +1021,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 @@ -1166,10 +1032,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 @@ -1179,10 +1043,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 @@ -1192,10 +1054,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 @@ -1205,10 +1065,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 @@ -1229,10 +1087,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 @@ -1242,10 +1098,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 @@ -1255,10 +1109,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 @@ -1268,10 +1120,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 @@ -1281,10 +1131,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 Index: llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll =================================================================== --- llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll +++ llvm/trunk/test/Transforms/InstCombine/or-fcmp.ll @@ -319,11 +319,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 @@ -334,7 +332,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 @@ -345,7 +343,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 @@ -356,7 +354,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 @@ -367,7 +365,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 @@ -378,7 +376,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 @@ -411,10 +409,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 @@ -424,10 +420,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 @@ -437,10 +431,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 @@ -450,10 +442,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 @@ -463,10 +453,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 @@ -476,10 +464,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 @@ -489,10 +474,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 @@ -524,10 +506,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 @@ -537,10 +517,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 @@ -550,10 +528,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 @@ -563,10 +539,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 @@ -576,10 +550,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 @@ -589,10 +560,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 @@ -602,10 +571,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 @@ -648,10 +614,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 @@ -661,10 +625,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 @@ -674,10 +636,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 @@ -687,10 +647,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 @@ -700,10 +657,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 @@ -713,10 +667,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 @@ -726,10 +677,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 @@ -783,10 +731,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 @@ -796,10 +742,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 @@ -809,10 +753,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 @@ -822,10 +763,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 @@ -835,10 +774,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 @@ -848,10 +785,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 @@ -861,10 +796,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 @@ -928,10 +860,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 @@ -941,10 +871,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 @@ -954,10 +881,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 @@ -967,10 +891,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 @@ -980,10 +902,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 @@ -993,10 +913,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 @@ -1006,10 +923,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 @@ -1083,10 +997,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 @@ -1096,10 +1007,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 @@ -1109,10 +1018,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 @@ -1122,10 +1028,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 @@ -1135,10 +1039,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 @@ -1148,10 +1049,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 @@ -1161,10 +1060,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 @@ -1248,10 +1144,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 @@ -1261,10 +1155,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 @@ -1274,10 +1166,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 @@ -1287,10 +1177,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 @@ -1300,10 +1188,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 @@ -1313,10 +1199,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 @@ -1326,10 +1210,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 @@ -1405,10 +1286,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