[llvm] [CodeGen][MRI] Introduce synthetic register classes (PR #86006)
Christudasan Devadasan via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 24 21:35:56 PDT 2024
================
@@ -650,6 +654,31 @@ void MachineRegisterInfo::setCalleeSavedRegs(ArrayRef<MCPhysReg> CSRs) {
IsUpdatedCSRsInitialized = true;
}
+void MachineRegisterInfo::initializeRegClassSyntheticInfo() {
+ const TargetRegisterInfo *TRI = getTargetRegisterInfo();
+
+ RegClassSyntheticInfo.resize(TRI->getNumRegClasses());
+ for (const TargetRegisterClass *RC : TRI->regclasses()) {
+ if (RC->isSynthetic())
+ RegClassSyntheticInfo.set(RC->getID());
+ }
+}
+
+void MachineRegisterInfo::changeSyntheticInfoForRC(
+ const TargetRegisterClass *RC, bool Value) {
+ assert(RC->isSynthetic() && "Regclasses can be enabled/disabled dynamically "
+ "only if marked synthetic.");
+
+ if (Value)
+ RegClassSyntheticInfo.set(RC->getID());
+ else
+ RegClassSyntheticInfo.reset(RC->getID());
+}
+
+bool MachineRegisterInfo::isEnabled(const TargetRegisterClass *RC) const {
+ return !RegClassSyntheticInfo.test(RC->getID());
+}
----------------
cdevadas wrote:
This patch sets up the whole machinery for the new field Synthetic that I'm introducing.
The test llvm/unittests/CodeGen/MachineInstrTest.cpp covers it. The helper function `isEnabled`, is used in the regclass queries in MRI and TRI interfaces in this patch itself.
https://github.com/llvm/llvm-project/pull/86006
More information about the llvm-commits
mailing list