@@ -139,19 +139,26 @@ BitVector HexagonRegisterInfo::getReservedRegs(const MachineFunction &MF)
139
139
Reserved.set (Hexagon::R29);
140
140
Reserved.set (Hexagon::R30);
141
141
Reserved.set (Hexagon::R31);
142
- Reserved.set (Hexagon::PC);
143
- Reserved.set (Hexagon::D14);
144
- Reserved.set (Hexagon::D15);
145
- Reserved.set (Hexagon::LC0);
146
- Reserved.set (Hexagon::LC1);
147
- Reserved.set (Hexagon::SA0);
148
- Reserved.set (Hexagon::SA1);
149
- Reserved.set (Hexagon::UGP);
150
- Reserved.set (Hexagon::GP);
151
- Reserved.set (Hexagon::CS0);
152
- Reserved.set (Hexagon::CS1);
153
- Reserved.set (Hexagon::CS);
154
- Reserved.set (Hexagon::USR);
142
+ Reserved.set (Hexagon::SA0); // C0
143
+ Reserved.set (Hexagon::LC0); // C1
144
+ Reserved.set (Hexagon::SA1); // C2
145
+ Reserved.set (Hexagon::LC1); // C3
146
+ Reserved.set (Hexagon::USR); // C8
147
+ Reserved.set (Hexagon::PC); // C9
148
+ Reserved.set (Hexagon::UGP); // C10
149
+ Reserved.set (Hexagon::GP); // C11
150
+ Reserved.set (Hexagon::CS0); // C12
151
+ Reserved.set (Hexagon::CS1); // C13
152
+
153
+ // Out of the control registers, only C8 is explicitly defined in
154
+ // HexagonRegisterInfo.td. If others are defined, make sure to add
155
+ // them here as well.
156
+ Reserved.set (Hexagon::C8);
157
+ Reserved.set (Hexagon::USR_OVF);
158
+
159
+ for (int x = Reserved.find_first (); x >= 0 ; x = Reserved.find_next (x))
160
+ markSuperRegs (Reserved, x);
161
+
155
162
return Reserved;
156
163
}
157
164
0 commit comments