[llvm] ff1ebcc - DecoderEmitter: Simplify addOneOperandFields. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 13 01:16:00 PST 2022
Author: Fangrui Song
Date: 2022-11-13T01:15:54-08:00
New Revision: ff1ebcc5fe19c7f9a3da9d505e66f07ac89700b4
URL: https://github.com/llvm/llvm-project/commit/ff1ebcc5fe19c7f9a3da9d505e66f07ac89700b4
DIFF: https://github.com/llvm/llvm-project/commit/ff1ebcc5fe19c7f9a3da9d505e66f07ac89700b4.diff
LOG: DecoderEmitter: Simplify addOneOperandFields. NFC
Follow-up to d1fbdf5bf79219549bc1fde255186d02f646a46f
Added:
Modified:
llvm/utils/TableGen/DecoderEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/utils/TableGen/DecoderEmitter.cpp b/llvm/utils/TableGen/DecoderEmitter.cpp
index fe53350be5c2..087875b7ef9e 100644
--- a/llvm/utils/TableGen/DecoderEmitter.cpp
+++ b/llvm/utils/TableGen/DecoderEmitter.cpp
@@ -1918,55 +1918,29 @@ static void addOneOperandFields(const Record &EncodingDef, const BitsInit &Bits,
if (OpBit->getValue())
OpInfo.InitValue |= 1ULL << I;
- unsigned Base = ~0U;
- unsigned Width = 0;
- unsigned Offset = 0;
-
- for (unsigned bi = 0; bi < Bits.getNumBits(); ++bi) {
- VarInit *Var = nullptr;
- VarBitInit *BI = dyn_cast<VarBitInit>(Bits.getBit(bi));
- if (BI)
- Var = dyn_cast<VarInit>(BI->getBitVar());
- else
- Var = dyn_cast<VarInit>(Bits.getBit(bi));
-
- if (!Var) {
- if (Base != ~0U) {
- OpInfo.addField(Base, Width, Offset);
- Base = ~0U;
- Width = 0;
- Offset = 0;
- }
- continue;
- }
-
- if ((Var->getName() != OpName &&
- Var->getName() != TiedNames[std::string(OpName)])) {
- if (Base != ~0U) {
- OpInfo.addField(Base, Width, Offset);
- Base = ~0U;
- Width = 0;
- Offset = 0;
+ for (unsigned I = 0, J = 0; I != Bits.getNumBits(); I = J) {
+ VarInit *Var;
+ unsigned Offset = 0;
+ for (; J != Bits.getNumBits(); ++J) {
+ VarBitInit *BJ = dyn_cast<VarBitInit>(Bits.getBit(J));
+ if (BJ) {
+ Var = dyn_cast<VarInit>(BJ->getBitVar());
+ if (I == J)
+ Offset = BJ->getBitNum();
+ else if (BJ->getBitNum() != Offset + J - I)
+ break;
+ } else {
+ Var = dyn_cast<VarInit>(Bits.getBit(J));
}
- continue;
- }
-
- if (Base == ~0U) {
- Base = bi;
- Width = 1;
- Offset = BI ? BI->getBitNum() : 0;
- } else if (BI && BI->getBitNum() != Offset + Width) {
- OpInfo.addField(Base, Width, Offset);
- Base = bi;
- Width = 1;
- Offset = BI->getBitNum();
- } else {
- ++Width;
+ if (!Var || (Var->getName() != OpName &&
+ Var->getName() != TiedNames[std::string(OpName)]))
+ break;
}
+ if (I == J)
+ ++J;
+ else
+ OpInfo.addField(I, J - I, Offset);
}
-
- if (Base != ~0U)
- OpInfo.addField(Base, Width, Offset);
}
static unsigned
More information about the llvm-commits
mailing list