[LoongArch] Reuse LoongArchRegWithSubRegs class to shorten some code in LoongArchRegi...
authorwanglei <wanglei@loongson.cn>
Tue, 11 Apr 2023 03:48:42 +0000 (11:48 +0800)
committerwanglei <wanglei@loongson.cn>
Fri, 30 Jun 2023 03:07:28 +0000 (11:07 +0800)
llvm/lib/Target/LoongArch/LoongArchRegisterInfo.td

index ff914f8..b34e033 100644 (file)
@@ -17,6 +17,13 @@ class LoongArchReg<bits<16> Enc, string n, list<string> alt = []>
   let AltNames = alt;
 }
 
+class LoongArchRegWithSubRegs<bits<16> Enc, string n, list<Register> subregs,
+                              list<string> alt = []>
+    : RegisterWithSubRegs<n, subregs> {
+  let HWEncoding = Enc;
+  let AltNames = alt;
+}
+
 class LoongArchReg32<bits<16> Enc, string n, list<string> alt = []>
     : Register<n> {
   let HWEncoding = Enc;
@@ -25,12 +32,9 @@ class LoongArchReg32<bits<16> Enc, string n, list<string> alt = []>
 
 def sub_32 : SubRegIndex<32>;
 class LoongArchReg64<LoongArchReg32 subreg>
-    : Register<""> {
-  let HWEncoding = subreg.HWEncoding;
-  let SubRegs = [subreg];
+    : LoongArchRegWithSubRegs<subreg.HWEncoding, subreg.AsmName, [subreg],
+                              subreg.AltNames> {
   let SubRegIndices = [sub_32];
-  let AsmName = subreg.AsmName;
-  let AltNames = subreg.AltNames;
 }
 
 let FallbackRegAltNameIndex = NoRegAltName in