mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-26 20:57:15 +00:00
Add helper methods for forming shift operations with a constant
shift amount. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90694 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f616ee2895
commit
90ec9680a9
@ -407,18 +407,39 @@ public:
|
||||
return Folder.CreateShl(LC, RC);
|
||||
return Insert(BinaryOperator::CreateShl(LHS, RHS), Name);
|
||||
}
|
||||
Value *CreateShl(Value *LHS, uint64_t RHS, const Twine &Name = "") {
|
||||
Constant *RHSC = ConstantInt::get(LHS->getType(), RHS);
|
||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||
return Folder.CreateShl(LC, RHSC);
|
||||
return Insert(BinaryOperator::CreateShl(LHS, RHSC), Name);
|
||||
}
|
||||
|
||||
Value *CreateLShr(Value *LHS, Value *RHS, const Twine &Name = "") {
|
||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||
if (Constant *RC = dyn_cast<Constant>(RHS))
|
||||
return Folder.CreateLShr(LC, RC);
|
||||
return Insert(BinaryOperator::CreateLShr(LHS, RHS), Name);
|
||||
}
|
||||
Value *CreateLShr(Value *LHS, uint64_t RHS, const Twine &Name = "") {
|
||||
Constant *RHSC = ConstantInt::get(LHS->getType(), RHS);
|
||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||
return Folder.CreateLShr(LC, RHSC);
|
||||
return Insert(BinaryOperator::CreateLShr(LHS, RHSC), Name);
|
||||
}
|
||||
|
||||
Value *CreateAShr(Value *LHS, Value *RHS, const Twine &Name = "") {
|
||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||
if (Constant *RC = dyn_cast<Constant>(RHS))
|
||||
return Folder.CreateAShr(LC, RC);
|
||||
return Insert(BinaryOperator::CreateAShr(LHS, RHS), Name);
|
||||
}
|
||||
Value *CreateAShr(Value *LHS, uint64_t RHS, const Twine &Name = "") {
|
||||
Constant *RHSC = ConstantInt::get(LHS->getType(), RHS);
|
||||
if (Constant *LC = dyn_cast<Constant>(LHS))
|
||||
return Folder.CreateSShr(LC, RHSC);
|
||||
return Insert(BinaryOperator::CreateAShr(LHS, RHSC), Name);
|
||||
}
|
||||
|
||||
Value *CreateAnd(Value *LHS, Value *RHS, const Twine &Name = "") {
|
||||
if (Constant *RC = dyn_cast<Constant>(RHS)) {
|
||||
if (isa<ConstantInt>(RC) && cast<ConstantInt>(RC)->isAllOnesValue())
|
||||
|
Loading…
x
Reference in New Issue
Block a user