[llvm] 5988c79 - [X86][tablgen] Add assertions when emitting NF transform table
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Tue May 28 06:10:42 PDT 2024
Author: Shengchen Kan
Date: 2024-05-28T21:09:36+08:00
New Revision: 5988c798de617cb35491c42de388b98b4c175421
URL: https://github.com/llvm/llvm-project/commit/5988c798de617cb35491c42de388b98b4c175421
DIFF: https://github.com/llvm/llvm-project/commit/5988c798de617cb35491c42de388b98b4c175421.diff
LOG: [X86][tablgen] Add assertions when emitting NF transform table
Added:
Modified:
llvm/utils/TableGen/X86InstrMappingEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/utils/TableGen/X86InstrMappingEmitter.cpp b/llvm/utils/TableGen/X86InstrMappingEmitter.cpp
index a8970d8bcbacd..d89a1f078328b 100644
--- a/llvm/utils/TableGen/X86InstrMappingEmitter.cpp
+++ b/llvm/utils/TableGen/X86InstrMappingEmitter.cpp
@@ -277,8 +277,22 @@ void X86InstrMappingEmitter::emitNFTransformTable(
if (Pos == std::string::npos)
continue;
- if (auto *NewRec = Records.getDef(Name.erase(Pos, 3)))
+ if (auto *NewRec = Records.getDef(Name.erase(Pos, 3))) {
+#ifndef NDEBUG
+ auto ClobberEFLAGS = [](const Record *R) {
+ return llvm::any_of(
+ R->getValueAsListOfDefs("Defs"),
+ [](const Record *Def) { return Def->getName() == "EFLAGS"; });
+ };
+ if (ClobberEFLAGS(Rec))
+ report_fatal_error("EFLAGS should not be clobbered by " +
+ Rec->getName());
+ if (!ClobberEFLAGS(NewRec))
+ report_fatal_error("EFLAGS should be clobbered by " +
+ NewRec->getName());
+#endif
Table.push_back(std::pair(&Target.getInstruction(NewRec), Inst));
+ }
}
printTable(Table, "X86NFTransformTable", "GET_X86_NF_TRANSFORM_TABLE", OS);
}
More information about the llvm-commits
mailing list