mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
add ShouldChangeType() variant that takes bitwidths
This is more efficient for cases like D12965 where we already have widths. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248170 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3f80d148b1
commit
94b76f172a
@ -341,6 +341,7 @@ public:
|
||||
const unsigned SIOpd);
|
||||
|
||||
private:
|
||||
bool ShouldChangeType(unsigned FromBitWidth, unsigned ToBitWidth) const;
|
||||
bool ShouldChangeType(Type *From, Type *To) const;
|
||||
Value *dyn_castNegVal(Value *V) const;
|
||||
Value *dyn_castFNegVal(Value *V, bool NoSignedZero = false) const;
|
||||
|
@ -80,14 +80,12 @@ Value *InstCombiner::EmitGEPOffset(User *GEP) {
|
||||
return llvm::EmitGEPOffset(Builder, DL, GEP);
|
||||
}
|
||||
|
||||
/// Return true if it is desirable to convert a computation from 'From' to 'To'.
|
||||
/// Return true if it is desirable to convert an integer computation from a
|
||||
/// given bit width to a new bit width.
|
||||
/// We don't want to convert from a legal to an illegal type for example or from
|
||||
/// a smaller to a larger illegal type.
|
||||
bool InstCombiner::ShouldChangeType(Type *From, Type *To) const {
|
||||
assert(From->isIntegerTy() && To->isIntegerTy());
|
||||
|
||||
unsigned FromWidth = From->getPrimitiveSizeInBits();
|
||||
unsigned ToWidth = To->getPrimitiveSizeInBits();
|
||||
bool InstCombiner::ShouldChangeType(unsigned FromWidth,
|
||||
unsigned ToWidth) const {
|
||||
bool FromLegal = DL.isLegalInteger(FromWidth);
|
||||
bool ToLegal = DL.isLegalInteger(ToWidth);
|
||||
|
||||
@ -104,6 +102,17 @@ bool InstCombiner::ShouldChangeType(Type *From, Type *To) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Return true if it is desirable to convert a computation from 'From' to 'To'.
|
||||
/// We don't want to convert from a legal to an illegal type for example or from
|
||||
/// a smaller to a larger illegal type.
|
||||
bool InstCombiner::ShouldChangeType(Type *From, Type *To) const {
|
||||
assert(From->isIntegerTy() && To->isIntegerTy());
|
||||
|
||||
unsigned FromWidth = From->getPrimitiveSizeInBits();
|
||||
unsigned ToWidth = To->getPrimitiveSizeInBits();
|
||||
return ShouldChangeType(FromWidth, ToWidth);
|
||||
}
|
||||
|
||||
// Return true, if No Signed Wrap should be maintained for I.
|
||||
// The No Signed Wrap flag can be kept if the operation "B (I.getOpcode) C",
|
||||
// where both B and C should be ConstantInts, results in a constant that does
|
||||
|
Loading…
Reference in New Issue
Block a user