mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[InstCombine] Simplify and correct folding fcmps with the same children
Summary: Take advantage of FCmpInst::Predicate's bit pattern and handle (fcmp *, x, y) | (fcmp *, x, y) and (fcmp *, x, y) & (fcmp *, x, y) more consistently. Also fold more FCmpInst::FCMP_FALSE and FCmpInst::FCMP_TRUE to constants. Currently InstCombine wrongly folds (fcmp ogt, x, y) | (fcmp ord, x, y) to (fcmp ogt, x, y); this patch also fixes that. Reviewers: spatel Subscribers: llvm-commits, iteratee, echristo Differential Revision: http://reviews.llvm.org/D21775 llvm-svn: 274156
This commit is contained in:
parent
60609376b6
commit
fc048e0add
@ -859,6 +859,10 @@ public:
|
||||
/// 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)
|
||||
|
@ -39,30 +39,29 @@ static inline Value *dyn_castNotVal(Value *V) {
|
||||
}
|
||||
|
||||
/// 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 @@ static Value *getNewICmpValue(bool Sign, unsigned Code, Value *LHS, Value *RHS,
|
||||
}
|
||||
|
||||
/// 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<FCmpInst::Predicate>(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 @@ Value *InstCombiner::FoldAndOfICmps(ICmpInst *LHS, ICmpInst *RHS) {
|
||||
/// 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 @@ Value *InstCombiner::FoldAndOfFCmps(FCmpInst *LHS, FCmpInst *RHS) {
|
||||
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 @@ Value *InstCombiner::FoldOrOfICmps(ICmpInst *LHS, ICmpInst *RHS,
|
||||
/// 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 @@ Value *InstCombiner::FoldOrOfFCmps(FCmpInst *LHS, FCmpInst *RHS) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -71,10 +71,7 @@ define i1 @auto_gen_3(double %a, double %b) {
|
||||
|
||||
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_6(double %a, double %b) {
|
||||
|
||||
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_7(double %a, double %b) {
|
||||
|
||||
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_10(double %a, double %b) {
|
||||
|
||||
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_11(double %a, double %b) {
|
||||
|
||||
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_12(double %a, double %b) {
|
||||
|
||||
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_15(double %a, double %b) {
|
||||
|
||||
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_16(double %a, double %b) {
|
||||
|
||||
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_17(double %a, double %b) {
|
||||
|
||||
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_18(double %a, double %b) {
|
||||
|
||||
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_21(double %a, double %b) {
|
||||
|
||||
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_22(double %a, double %b) {
|
||||
|
||||
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_23(double %a, double %b) {
|
||||
|
||||
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_24(double %a, double %b) {
|
||||
|
||||
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_25(double %a, double %b) {
|
||||
|
||||
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_34(double %a, double %b) {
|
||||
|
||||
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_36(double %a, double %b) {
|
||||
|
||||
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_37(double %a, double %b) {
|
||||
|
||||
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_38(double %a, double %b) {
|
||||
|
||||
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_39(double %a, double %b) {
|
||||
|
||||
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_40(double %a, double %b) {
|
||||
|
||||
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_41(double %a, double %b) {
|
||||
|
||||
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_45(double %a, double %b) {
|
||||
|
||||
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_46(double %a, double %b) {
|
||||
|
||||
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_47(double %a, double %b) {
|
||||
|
||||
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_48(double %a, double %b) {
|
||||
|
||||
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_49(double %a, double %b) {
|
||||
|
||||
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_50(double %a, double %b) {
|
||||
|
||||
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_52(double %a, double %b) {
|
||||
|
||||
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_55(double %a, double %b) {
|
||||
|
||||
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_56(double %a, double %b) {
|
||||
|
||||
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_57(double %a, double %b) {
|
||||
|
||||
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_58(double %a, double %b) {
|
||||
|
||||
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_59(double %a, double %b) {
|
||||
|
||||
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_60(double %a, double %b) {
|
||||
|
||||
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_62(double %a, double %b) {
|
||||
|
||||
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_63(double %a, double %b) {
|
||||
|
||||
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_66(double %a, double %b) {
|
||||
|
||||
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_67(double %a, double %b) {
|
||||
|
||||
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_68(double %a, double %b) {
|
||||
|
||||
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_69(double %a, double %b) {
|
||||
|
||||
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_70(double %a, double %b) {
|
||||
|
||||
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_71(double %a, double %b) {
|
||||
|
||||
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_73(double %a, double %b) {
|
||||
|
||||
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_74(double %a, double %b) {
|
||||
|
||||
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_75(double %a, double %b) {
|
||||
|
||||
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_78(double %a, double %b) {
|
||||
|
||||
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_79(double %a, double %b) {
|
||||
|
||||
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_80(double %a, double %b) {
|
||||
|
||||
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_81(double %a, double %b) {
|
||||
|
||||
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_82(double %a, double %b) {
|
||||
|
||||
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_83(double %a, double %b) {
|
||||
|
||||
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_85(double %a, double %b) {
|
||||
|
||||
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_86(double %a, double %b) {
|
||||
|
||||
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_87(double %a, double %b) {
|
||||
|
||||
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_88(double %a, double %b) {
|
||||
|
||||
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_91(double %a, double %b) {
|
||||
|
||||
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_92(double %a, double %b) {
|
||||
|
||||
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_93(double %a, double %b) {
|
||||
|
||||
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_94(double %a, double %b) {
|
||||
|
||||
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_95(double %a, double %b) {
|
||||
|
||||
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_96(double %a, double %b) {
|
||||
|
||||
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_98(double %a, double %b) {
|
||||
|
||||
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_99(double %a, double %b) {
|
||||
|
||||
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_100(double %a, double %b) {
|
||||
|
||||
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_101(double %a, double %b) {
|
||||
|
||||
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_102(double %a, double %b) {
|
||||
|
||||
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
|
||||
|
@ -319,11 +319,9 @@ define i1 @auto_gen_28(double %a, double %b) {
|
||||
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_29(double %a, double %b) {
|
||||
|
||||
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_30(double %a, double %b) {
|
||||
|
||||
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_31(double %a, double %b) {
|
||||
|
||||
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_32(double %a, double %b) {
|
||||
|
||||
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_33(double %a, double %b) {
|
||||
|
||||
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_36(double %a, double %b) {
|
||||
|
||||
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_37(double %a, double %b) {
|
||||
|
||||
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_38(double %a, double %b) {
|
||||
|
||||
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_39(double %a, double %b) {
|
||||
|
||||
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_40(double %a, double %b) {
|
||||
|
||||
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_41(double %a, double %b) {
|
||||
|
||||
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_42(double %a, double %b) {
|
||||
|
||||
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_45(double %a, double %b) {
|
||||
|
||||
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_46(double %a, double %b) {
|
||||
|
||||
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_47(double %a, double %b) {
|
||||
|
||||
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_48(double %a, double %b) {
|
||||
|
||||
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_49(double %a, double %b) {
|
||||
|
||||
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_50(double %a, double %b) {
|
||||
|
||||
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_51(double %a, double %b) {
|
||||
|
||||
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_55(double %a, double %b) {
|
||||
|
||||
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_56(double %a, double %b) {
|
||||
|
||||
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_57(double %a, double %b) {
|
||||
|
||||
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_58(double %a, double %b) {
|
||||
|
||||
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_59(double %a, double %b) {
|
||||
|
||||
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_60(double %a, double %b) {
|
||||
|
||||
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_61(double %a, double %b) {
|
||||
|
||||
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_66(double %a, double %b) {
|
||||
|
||||
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_67(double %a, double %b) {
|
||||
|
||||
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_68(double %a, double %b) {
|
||||
|
||||
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_69(double %a, double %b) {
|
||||
|
||||
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_70(double %a, double %b) {
|
||||
|
||||
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_71(double %a, double %b) {
|
||||
|
||||
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_72(double %a, double %b) {
|
||||
|
||||
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_78(double %a, double %b) {
|
||||
|
||||
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_79(double %a, double %b) {
|
||||
|
||||
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_80(double %a, double %b) {
|
||||
|
||||
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_81(double %a, double %b) {
|
||||
|
||||
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_82(double %a, double %b) {
|
||||
|
||||
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_83(double %a, double %b) {
|
||||
|
||||
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_84(double %a, double %b) {
|
||||
|
||||
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_91(double %a, double %b) {
|
||||
|
||||
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_92(double %a, double %b) {
|
||||
|
||||
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_93(double %a, double %b) {
|
||||
|
||||
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_94(double %a, double %b) {
|
||||
|
||||
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_95(double %a, double %b) {
|
||||
|
||||
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_96(double %a, double %b) {
|
||||
|
||||
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_97(double %a, double %b) {
|
||||
|
||||
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_105(double %a, double %b) {
|
||||
|
||||
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_106(double %a, double %b) {
|
||||
|
||||
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_107(double %a, double %b) {
|
||||
|
||||
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_108(double %a, double %b) {
|
||||
|
||||
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_109(double %a, double %b) {
|
||||
|
||||
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_110(double %a, double %b) {
|
||||
|
||||
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_111(double %a, double %b) {
|
||||
|
||||
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_118(double %a, double %b) {
|
||||
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user