mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
Add IRBuilder methods for creating an exact udiv, like for exact sdiv.
llvm-svn: 125002
This commit is contained in:
parent
f0ad431c3e
commit
edd8383ed9
@ -321,6 +321,27 @@ public:
|
|||||||
return BO;
|
return BO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// CreateExactUDiv - Create a UDiv operator with the exact flag set.
|
||||||
|
///
|
||||||
|
static BinaryOperator *CreateExactUDiv(Value *V1, Value *V2,
|
||||||
|
const Twine &Name = "") {
|
||||||
|
BinaryOperator *BO = CreateUDiv(V1, V2, Name);
|
||||||
|
BO->setIsExact(true);
|
||||||
|
return BO;
|
||||||
|
}
|
||||||
|
static BinaryOperator *CreateExactUDiv(Value *V1, Value *V2,
|
||||||
|
const Twine &Name, BasicBlock *BB) {
|
||||||
|
BinaryOperator *BO = CreateUDiv(V1, V2, Name, BB);
|
||||||
|
BO->setIsExact(true);
|
||||||
|
return BO;
|
||||||
|
}
|
||||||
|
static BinaryOperator *CreateExactUDiv(Value *V1, Value *V2,
|
||||||
|
const Twine &Name, Instruction *I) {
|
||||||
|
BinaryOperator *BO = CreateUDiv(V1, V2, Name, I);
|
||||||
|
BO->setIsExact(true);
|
||||||
|
return BO;
|
||||||
|
}
|
||||||
|
|
||||||
/// CreateExactSDiv - Create an SDiv operator with the exact flag set.
|
/// CreateExactSDiv - Create an SDiv operator with the exact flag set.
|
||||||
///
|
///
|
||||||
static BinaryOperator *CreateExactSDiv(Value *V1, Value *V2,
|
static BinaryOperator *CreateExactSDiv(Value *V1, Value *V2,
|
||||||
|
@ -228,7 +228,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// UDivOperator - An Operator with opcode Instruction::SDiv.
|
/// UDivOperator - An Operator with opcode Instruction::UDiv.
|
||||||
///
|
///
|
||||||
class UDivOperator : public PossiblyExactOperator {
|
class UDivOperator : public PossiblyExactOperator {
|
||||||
public:
|
public:
|
||||||
|
@ -72,6 +72,9 @@ public:
|
|||||||
Constant *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
Constant *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return ConstantExpr::getUDiv(LHS, RHS);
|
return ConstantExpr::getUDiv(LHS, RHS);
|
||||||
}
|
}
|
||||||
|
Constant *CreateExactUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
|
return ConstantExpr::getExactUDiv(LHS, RHS);
|
||||||
|
}
|
||||||
Constant *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
Constant *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return ConstantExpr::getSDiv(LHS, RHS);
|
return ConstantExpr::getSDiv(LHS, RHS);
|
||||||
}
|
}
|
||||||
|
@ -527,6 +527,12 @@ public:
|
|||||||
return Insert(Folder.CreateUDiv(LC, RC), Name);
|
return Insert(Folder.CreateUDiv(LC, RC), Name);
|
||||||
return Insert(BinaryOperator::CreateUDiv(LHS, RHS), Name);
|
return Insert(BinaryOperator::CreateUDiv(LHS, RHS), Name);
|
||||||
}
|
}
|
||||||
|
Value *CreateExactUDiv(Value *LHS, Value *RHS, const Twine &Name = "") {
|
||||||
|
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||||
|
if (Constant *RC = dyn_cast<Constant>(RHS))
|
||||||
|
return Insert(Folder.CreateExactUDiv(LC, RC), Name);
|
||||||
|
return Insert(BinaryOperator::CreateExactUDiv(LHS, RHS), Name);
|
||||||
|
}
|
||||||
Value *CreateSDiv(Value *LHS, Value *RHS, const Twine &Name = "") {
|
Value *CreateSDiv(Value *LHS, Value *RHS, const Twine &Name = "") {
|
||||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||||
if (Constant *RC = dyn_cast<Constant>(RHS))
|
if (Constant *RC = dyn_cast<Constant>(RHS))
|
||||||
|
@ -77,6 +77,9 @@ public:
|
|||||||
Instruction *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
Instruction *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return BinaryOperator::CreateUDiv(LHS, RHS);
|
return BinaryOperator::CreateUDiv(LHS, RHS);
|
||||||
}
|
}
|
||||||
|
Instruction *CreateExactUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
|
return BinaryOperator::CreateExactUDiv(LHS, RHS);
|
||||||
|
}
|
||||||
Instruction *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
Instruction *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return BinaryOperator::CreateSDiv(LHS, RHS);
|
return BinaryOperator::CreateSDiv(LHS, RHS);
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,9 @@ public:
|
|||||||
Constant *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
Constant *CreateUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return Fold(ConstantExpr::getUDiv(LHS, RHS));
|
return Fold(ConstantExpr::getUDiv(LHS, RHS));
|
||||||
}
|
}
|
||||||
|
Constant *CreateExactUDiv(Constant *LHS, Constant *RHS) const {
|
||||||
|
return Fold(ConstantExpr::getExactUDiv(LHS, RHS));
|
||||||
|
}
|
||||||
Constant *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
Constant *CreateSDiv(Constant *LHS, Constant *RHS) const {
|
||||||
return Fold(ConstantExpr::getSDiv(LHS, RHS));
|
return Fold(ConstantExpr::getSDiv(LHS, RHS));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user