[Hexagon] Remove USR_OVF from CtrRegs register class
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Thu, 22 Sep 2016 20:59:41 +0000 (20:59 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Thu, 22 Sep 2016 20:59:41 +0000 (20:59 +0000)
USR_OVF is a subregister of USR, which is a member of CtrRegs. Having both
a register and its proper subregister in the same register class has bad
consequences for lane mask calculation: based solely on the lane mask info,
USR_OVF would not appear to be a subregister of USR.

llvm-svn: 282192

llvm/lib/Target/Hexagon/HexagonRegisterInfo.td

index 7f20aac..c88c033 100644 (file)
@@ -260,7 +260,10 @@ def CtrRegs : RegisterClass<"Hexagon", [i32], 32,
                             (add LC0, SA0, LC1, SA1,
                                  P3_0, C5,
                                  M0, M1, C6, C7, C8, CS0, CS1, UPCL, UPCH,
-                                 USR, USR_OVF, UGP, GP, PC)>;
+                                 USR, UGP, GP, PC)>;
+
+let isAllocatable = 0 in
+def UsrBits : RegisterClass<"Hexagon", [i1], 0, (add USR_OVF)>;
 
 let Size = 64, isAllocatable = 0 in
 def CtrRegs64 : RegisterClass<"Hexagon", [i64], 64,