forked from OSchip/llvm-project
[SVE][IR] Small TypeSize improvements left out of initial commit
The commit for D53137 left out the last round of improvements requested by reviewers. Adding those in now. llvm-svn: 375013
This commit is contained in:
parent
a9cfde1f6a
commit
f998fa2924
|
@ -453,7 +453,7 @@ public:
|
||||||
///
|
///
|
||||||
/// For example, returns 5 for i36 and 10 for x86_fp80.
|
/// For example, returns 5 for i36 and 10 for x86_fp80.
|
||||||
TypeSize getTypeStoreSize(Type *Ty) const {
|
TypeSize getTypeStoreSize(Type *Ty) const {
|
||||||
auto BaseSize = getTypeSizeInBits(Ty);
|
TypeSize BaseSize = getTypeSizeInBits(Ty);
|
||||||
return { (BaseSize.getKnownMinSize() + 7) / 8, BaseSize.isScalable() };
|
return { (BaseSize.getKnownMinSize() + 7) / 8, BaseSize.isScalable() };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ public:
|
||||||
|
|
||||||
// Return the minimum size with the assumption that the size is exact.
|
// Return the minimum size with the assumption that the size is exact.
|
||||||
// Use in places where a scalable size doesn't make sense (e.g. non-vector
|
// Use in places where a scalable size doesn't make sense (e.g. non-vector
|
||||||
// types, or vectors in backends which don't support scalable vectors)
|
// types, or vectors in backends which don't support scalable vectors).
|
||||||
uint64_t getFixedSize() const {
|
uint64_t getFixedSize() const {
|
||||||
assert(!IsScalable && "Request for a fixed size on a scalable object");
|
assert(!IsScalable && "Request for a fixed size on a scalable object");
|
||||||
return MinSize;
|
return MinSize;
|
||||||
|
@ -141,12 +141,12 @@ public:
|
||||||
// Casts to a uint64_t if this is a fixed-width size.
|
// Casts to a uint64_t if this is a fixed-width size.
|
||||||
//
|
//
|
||||||
// NOTE: This interface is obsolete and will be removed in a future version
|
// NOTE: This interface is obsolete and will be removed in a future version
|
||||||
// of LLVM in favour of calling getFixedSize() directly
|
// of LLVM in favour of calling getFixedSize() directly.
|
||||||
operator uint64_t() const {
|
operator uint64_t() const {
|
||||||
return getFixedSize();
|
return getFixedSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Additional convenience operators needed to avoid ambiguous parses
|
// Additional convenience operators needed to avoid ambiguous parses.
|
||||||
// TODO: Make uint64_t the default operator?
|
// TODO: Make uint64_t the default operator?
|
||||||
TypeSize operator*(uint64_t RHS) const {
|
TypeSize operator*(uint64_t RHS) const {
|
||||||
return { MinSize * RHS, IsScalable };
|
return { MinSize * RHS, IsScalable };
|
||||||
|
|
|
@ -2983,8 +2983,8 @@ bool CastInst::isCastable(Type *SrcTy, Type *DestTy) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the bit sizes, we'll need these
|
// Get the bit sizes, we'll need these
|
||||||
auto SrcBits = SrcTy->getPrimitiveSizeInBits(); // 0 for ptr
|
TypeSize SrcBits = SrcTy->getPrimitiveSizeInBits(); // 0 for ptr
|
||||||
auto DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr
|
TypeSize DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr
|
||||||
|
|
||||||
// Run through the possibilities ...
|
// Run through the possibilities ...
|
||||||
if (DestTy->isIntegerTy()) { // Casting to integral
|
if (DestTy->isIntegerTy()) { // Casting to integral
|
||||||
|
@ -3045,8 +3045,8 @@ bool CastInst::isBitCastable(Type *SrcTy, Type *DestTy) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto SrcBits = SrcTy->getPrimitiveSizeInBits(); // 0 for ptr
|
TypeSize SrcBits = SrcTy->getPrimitiveSizeInBits(); // 0 for ptr
|
||||||
auto DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr
|
TypeSize DestBits = DestTy->getPrimitiveSizeInBits(); // 0 for ptr
|
||||||
|
|
||||||
// Could still have vectors of pointers if the number of elements doesn't
|
// Could still have vectors of pointers if the number of elements doesn't
|
||||||
// match
|
// match
|
||||||
|
|
Loading…
Reference in New Issue