[llvm] r292836 - [Hexagon] Explicitly reserve aliases of reserved registers
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 23 14:13:06 PST 2017
Author: kparzysz
Date: Mon Jan 23 16:13:05 2017
New Revision: 292836
URL: http://llvm.org/viewvc/llvm-project?rev=292836&view=rev
Log:
[Hexagon] Explicitly reserve aliases of reserved registers
Modified:
llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.cpp
llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.td
Modified: llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.cpp?rev=292836&r1=292835&r2=292836&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.cpp Mon Jan 23 16:13:05 2017
@@ -139,19 +139,26 @@ BitVector HexagonRegisterInfo::getReserv
Reserved.set(Hexagon::R29);
Reserved.set(Hexagon::R30);
Reserved.set(Hexagon::R31);
- Reserved.set(Hexagon::PC);
- Reserved.set(Hexagon::D14);
- Reserved.set(Hexagon::D15);
- Reserved.set(Hexagon::LC0);
- Reserved.set(Hexagon::LC1);
- Reserved.set(Hexagon::SA0);
- Reserved.set(Hexagon::SA1);
- Reserved.set(Hexagon::UGP);
- Reserved.set(Hexagon::GP);
- Reserved.set(Hexagon::CS0);
- Reserved.set(Hexagon::CS1);
- Reserved.set(Hexagon::CS);
- Reserved.set(Hexagon::USR);
+ Reserved.set(Hexagon::SA0); // C0
+ Reserved.set(Hexagon::LC0); // C1
+ Reserved.set(Hexagon::SA1); // C2
+ Reserved.set(Hexagon::LC1); // C3
+ Reserved.set(Hexagon::USR); // C8
+ Reserved.set(Hexagon::PC); // C9
+ Reserved.set(Hexagon::UGP); // C10
+ Reserved.set(Hexagon::GP); // C11
+ Reserved.set(Hexagon::CS0); // C12
+ Reserved.set(Hexagon::CS1); // C13
+
+ // Out of the control registers, only C8 is explicitly defined in
+ // HexagonRegisterInfo.td. If others are defined, make sure to add
+ // them here as well.
+ Reserved.set(Hexagon::C8);
+ Reserved.set(Hexagon::USR_OVF);
+
+ for (int x = Reserved.find_first(); x >= 0; x = Reserved.find_next(x))
+ markSuperRegs(Reserved, x);
+
return Reserved;
}
Modified: llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.td?rev=292836&r1=292835&r2=292836&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.td (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonRegisterInfo.td Mon Jan 23 16:13:05 2017
@@ -146,6 +146,8 @@ let Namespace = "Hexagon" in {
def LC1 : Rc<3, "lc1", ["c3"]>, DwarfRegNum<[70]>;
def P3_0 : Rc<4, "p3:0", ["c4"], [P0, P1, P2, P3]>,
DwarfRegNum<[71]>;
+ // When defining more Cn registers, make sure to explicitly mark them
+ // as reserved in HexagonRegisterInfo.cpp.
def C5 : Rc<5, "c5", ["c5"]>, DwarfRegNum<[72]>; // future use
def C6 : Rc<6, "c6", [], [M0]>, DwarfRegNum<[73]>;
def C7 : Rc<7, "c7", [], [M1]>, DwarfRegNum<[74]>;
More information about the llvm-commits
mailing list