forked from OSchip/llvm-project
Revert "[GlobalISel] NFC: Have LLT::getSizeInBits/Bytes return a TypeSize."
This patch seems to be causing build errors, reverting it for now.
This reverts commit aeab9d9570
.
This commit is contained in:
parent
1e6303e60c
commit
b732e6c9a8
|
@ -595,7 +595,7 @@ bool InstructionSelector::executeMatchTable(
|
|||
case GIM_CheckPointerToAny: {
|
||||
int64_t InsnID = MatchTable[CurrentIdx++];
|
||||
int64_t OpIdx = MatchTable[CurrentIdx++];
|
||||
uint64_t SizeInBits = MatchTable[CurrentIdx++];
|
||||
int64_t SizeInBits = MatchTable[CurrentIdx++];
|
||||
|
||||
DEBUG_WITH_TYPE(TgtInstructionSelector::getName(),
|
||||
dbgs() << CurrentIdx << ": GIM_CheckPointerToAny(MIs["
|
||||
|
|
|
@ -67,7 +67,7 @@ public:
|
|||
assert(!EC.isScalar() && "invalid number of vector elements");
|
||||
assert(!ScalarTy.isVector() && "invalid vector element type");
|
||||
return LLT{ScalarTy.isPointer(), /*isVector=*/true, EC,
|
||||
ScalarTy.getSizeInBits().getFixedSize(),
|
||||
ScalarTy.getSizeInBits(),
|
||||
ScalarTy.isPointer() ? ScalarTy.getAddressSpace() : 0};
|
||||
}
|
||||
|
||||
|
@ -100,14 +100,12 @@ public:
|
|||
return EC.isScalar() ? ScalarTy : LLT::vector(EC, ScalarTy);
|
||||
}
|
||||
|
||||
static LLT scalarOrVector(ElementCount EC, uint64_t ScalarSize) {
|
||||
assert(ScalarSize <= std::numeric_limits<unsigned>::max() &&
|
||||
"Not enough bits in LLT to represent size");
|
||||
return scalarOrVector(EC, LLT::scalar(static_cast<unsigned>(ScalarSize)));
|
||||
static LLT scalarOrVector(ElementCount EC, unsigned ScalarSize) {
|
||||
return scalarOrVector(EC, LLT::scalar(ScalarSize));
|
||||
}
|
||||
|
||||
explicit LLT(bool isPointer, bool isVector, ElementCount EC,
|
||||
uint64_t SizeInBits, unsigned AddressSpace) {
|
||||
unsigned SizeInBits, unsigned AddressSpace) {
|
||||
init(isPointer, isVector, EC, SizeInBits, AddressSpace);
|
||||
}
|
||||
explicit LLT() : IsPointer(false), IsVector(false), RawData(0) {}
|
||||
|
@ -150,19 +148,18 @@ public:
|
|||
}
|
||||
|
||||
/// Returns the total size of the type. Must only be called on sized types.
|
||||
TypeSize getSizeInBits() const {
|
||||
unsigned getSizeInBits() const {
|
||||
if (isPointer() || isScalar())
|
||||
return TypeSize::Fixed(getScalarSizeInBits());
|
||||
auto EC = getElementCount();
|
||||
return TypeSize(getScalarSizeInBits() * EC.getKnownMinValue(),
|
||||
EC.isScalable());
|
||||
return getScalarSizeInBits();
|
||||
// FIXME: This should return a TypeSize in order to work for scalable
|
||||
// vectors.
|
||||
return getScalarSizeInBits() * getElementCount().getKnownMinValue();
|
||||
}
|
||||
|
||||
/// Returns the total size of the type in bytes, i.e. number of whole bytes
|
||||
/// needed to represent the size in bits. Must only be called on sized types.
|
||||
TypeSize getSizeInBytes() const {
|
||||
TypeSize BaseSize = getSizeInBits();
|
||||
return {(BaseSize.getKnownMinSize() + 7) / 8, BaseSize.isScalable()};
|
||||
unsigned getSizeInBytes() const {
|
||||
return (getSizeInBits() + 7) / 8;
|
||||
}
|
||||
|
||||
LLT getScalarType() const {
|
||||
|
@ -202,11 +199,11 @@ public:
|
|||
getElementType());
|
||||
}
|
||||
|
||||
assert(getScalarSizeInBits() % Factor == 0);
|
||||
return scalar(getScalarSizeInBits() / Factor);
|
||||
assert(getSizeInBits() % Factor == 0);
|
||||
return scalar(getSizeInBits() / Factor);
|
||||
}
|
||||
|
||||
bool isByteSized() const { return getSizeInBits().isKnownMultipleOf(8); }
|
||||
bool isByteSized() const { return (getSizeInBits() & 7) == 0; }
|
||||
|
||||
unsigned getScalarSizeInBits() const {
|
||||
assert(RawData != 0 && "Invalid Type");
|
||||
|
@ -336,10 +333,8 @@ private:
|
|||
return getMask(FieldInfo) & (RawData >> FieldInfo[1]);
|
||||
}
|
||||
|
||||
void init(bool IsPointer, bool IsVector, ElementCount EC, uint64_t SizeInBits,
|
||||
void init(bool IsPointer, bool IsVector, ElementCount EC, unsigned SizeInBits,
|
||||
unsigned AddressSpace) {
|
||||
assert(SizeInBits <= std::numeric_limits<unsigned>::max() &&
|
||||
"Not enough bits in LLT to represent size");
|
||||
this->IsPointer = IsPointer;
|
||||
this->IsVector = IsVector;
|
||||
if (!IsVector) {
|
||||
|
|
|
@ -1565,7 +1565,7 @@ bool IRTranslator::translateMemFunc(const CallInst &CI,
|
|||
Register SrcReg = getOrCreateVReg(**AI);
|
||||
LLT SrcTy = MRI->getType(SrcReg);
|
||||
if (SrcTy.isPointer())
|
||||
MinPtrSize = std::min<unsigned>(SrcTy.getSizeInBits(), MinPtrSize);
|
||||
MinPtrSize = std::min(SrcTy.getSizeInBits(), MinPtrSize);
|
||||
SrcRegs.push_back(SrcReg);
|
||||
}
|
||||
|
||||
|
|
|
@ -258,8 +258,7 @@ static bool matchBitfieldExtractFromSExtInReg(
|
|||
m_OneNonDBGUse(m_any_of(m_GAShr(m_Reg(ShiftSrc), m_ICst(ShiftImm)),
|
||||
m_GLShr(m_Reg(ShiftSrc), m_ICst(ShiftImm))))))
|
||||
return false;
|
||||
if (ShiftImm < 0 ||
|
||||
static_cast<uint64_t>(ShiftImm + Width) > Ty.getSizeInBits())
|
||||
if (ShiftImm < 0 || ShiftImm + Width > Ty.getSizeInBits())
|
||||
return false;
|
||||
MatchInfo = [=](MachineIRBuilder &B) {
|
||||
auto Cst1 = B.buildConstant(Ty, ShiftImm);
|
||||
|
|
|
@ -81,9 +81,6 @@ TEST(LowLevelTypeTest, Vector) {
|
|||
EXPECT_EQ(EC, VTy.getElementCount());
|
||||
if (!EC.isScalable())
|
||||
EXPECT_EQ(S * EC.getFixedValue(), VTy.getSizeInBits());
|
||||
else
|
||||
EXPECT_EQ(TypeSize::Scalable(S * EC.getKnownMinValue()),
|
||||
VTy.getSizeInBits());
|
||||
|
||||
// Test equality operators.
|
||||
EXPECT_TRUE(VTy == VTy);
|
||||
|
|
|
@ -182,13 +182,7 @@ public:
|
|||
|
||||
assert((!Ty.isVector() || Ty.isScalable() == Other.Ty.isScalable()) &&
|
||||
"Unexpected mismatch of scalable property");
|
||||
return Ty.isVector()
|
||||
? std::make_tuple(Ty.isScalable(),
|
||||
Ty.getSizeInBits().getKnownMinSize()) <
|
||||
std::make_tuple(Other.Ty.isScalable(),
|
||||
Other.Ty.getSizeInBits().getKnownMinSize())
|
||||
: Ty.getSizeInBits().getFixedSize() <
|
||||
Other.Ty.getSizeInBits().getFixedSize();
|
||||
return Ty.getSizeInBits() < Other.Ty.getSizeInBits();
|
||||
}
|
||||
|
||||
bool operator==(const LLTCodeGen &B) const { return Ty == B.Ty; }
|
||||
|
@ -3794,8 +3788,7 @@ Optional<unsigned> GlobalISelEmitter::getMemSizeBitsFromPredicate(const TreePred
|
|||
return None;
|
||||
|
||||
// Align so unusual types like i1 don't get rounded down.
|
||||
return llvm::alignTo(
|
||||
static_cast<unsigned>(MemTyOrNone->get().getSizeInBits()), 8);
|
||||
return llvm::alignTo(MemTyOrNone->get().getSizeInBits(), 8);
|
||||
}
|
||||
|
||||
Expected<InstructionMatcher &> GlobalISelEmitter::addBuiltinPredicates(
|
||||
|
|
Loading…
Reference in New Issue