Deleted Added
full compact
MipsRegisterInfo.td (193323) MipsRegisterInfo.td (199511)
1//===- MipsRegisterInfo.td - Mips Register defs -----------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10//===----------------------------------------------------------------------===//
11// Declarations that describe the MIPS register file
12//===----------------------------------------------------------------------===//
13
14// We have banks of 32 registers each.
15class MipsReg<string n> : Register<n> {
16 field bits<5> Num;
17 let Namespace = "Mips";
18}
19
1//===- MipsRegisterInfo.td - Mips Register defs -----------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10//===----------------------------------------------------------------------===//
11// Declarations that describe the MIPS register file
12//===----------------------------------------------------------------------===//
13
14// We have banks of 32 registers each.
15class MipsReg<string n> : Register<n> {
16 field bits<5> Num;
17 let Namespace = "Mips";
18}
19
20class MipsRegWithSubRegs<string n, list<Register> subregs>
21 : RegisterWithSubRegs<n, subregs> {
22 field bits<5> Num;
23 let Namespace = "Mips";
24}
25
20// Mips CPU Registers
21class MipsGPRReg<bits<5> num, string n> : MipsReg<n> {
22 let Num = num;
23}
24
25// Mips 32-bit FPU Registers
26class FPR<bits<5> num, string n> : MipsReg<n> {
27 let Num = num;
28}
29
30// Mips 64-bit (aliased) FPU Registers
26// Mips CPU Registers
27class MipsGPRReg<bits<5> num, string n> : MipsReg<n> {
28 let Num = num;
29}
30
31// Mips 32-bit FPU Registers
32class FPR<bits<5> num, string n> : MipsReg<n> {
33 let Num = num;
34}
35
36// Mips 64-bit (aliased) FPU Registers
31class AFPR<bits<5> num, string n, list<Register> aliases> : MipsReg<n> {
37class AFPR<bits<5> num, string n, list<Register> subregs>
38 : MipsRegWithSubRegs<n, subregs> {
32 let Num = num;
39 let Num = num;
33 let Aliases = aliases;
34}
35
36//===----------------------------------------------------------------------===//
37// Registers
38//===----------------------------------------------------------------------===//
39
40let Namespace = "Mips" in {
41

--- 88 unchanged lines hidden (view full) ---

130 def HI : Register<"hi">, DwarfRegNum<[64]>;
131 def LO : Register<"lo">, DwarfRegNum<[65]>;
132
133 // Status flags register
134 def FCR31 : Register<"31">;
135}
136
137//===----------------------------------------------------------------------===//
40}
41
42//===----------------------------------------------------------------------===//
43// Registers
44//===----------------------------------------------------------------------===//
45
46let Namespace = "Mips" in {
47

--- 88 unchanged lines hidden (view full) ---

136 def HI : Register<"hi">, DwarfRegNum<[64]>;
137 def LO : Register<"lo">, DwarfRegNum<[65]>;
138
139 // Status flags register
140 def FCR31 : Register<"31">;
141}
142
143//===----------------------------------------------------------------------===//
144// Subregister Set Definitions
145//===----------------------------------------------------------------------===//
146
147def mips_subreg_fpeven : PatLeaf<(i32 1)>;
148def mips_subreg_fpodd : PatLeaf<(i32 2)>;
149
150def : SubRegSet<1, [D0, D1, D2, D3, D4, D5, D6, D7,
151 D8, D9, D10, D11, D12, D13, D14, D15],
152 [F0, F2, F4, F6, F8, F10, F12, F14,
153 F16, F18, F20, F22, F24, F26, F28, F30]>;
154
155def : SubRegSet<2, [D0, D1, D2, D3, D4, D5, D6, D7,
156 D8, D9, D10, D11, D12, D13, D14, D15],
157 [F1, F3, F5, F7, F9, F11, F13, F15,
158 F17, F19, F21, F23, F25, F27, F29, F31]>;
159
160//===----------------------------------------------------------------------===//
138// Register Classes
139//===----------------------------------------------------------------------===//
140
141def CPURegs : RegisterClass<"Mips", [i32], 32,
142 // Return Values and Arguments
143 [V0, V1, A0, A1, A2, A3,
144 // Not preserved across procedure calls
145 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,

--- 81 unchanged lines hidden (view full) ---

227 [D0, D1, D6, D7,
228 // Not preserved across procedure calls
229 D2, D3, D4, D5, D8, D9,
230 // Callee save
231 D10, D11, D12, D13, D14,
232 // Reserved
233 D15]>
234{
161// Register Classes
162//===----------------------------------------------------------------------===//
163
164def CPURegs : RegisterClass<"Mips", [i32], 32,
165 // Return Values and Arguments
166 [V0, V1, A0, A1, A2, A3,
167 // Not preserved across procedure calls
168 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,

--- 81 unchanged lines hidden (view full) ---

250 [D0, D1, D6, D7,
251 // Not preserved across procedure calls
252 D2, D3, D4, D5, D8, D9,
253 // Callee save
254 D10, D11, D12, D13, D14,
255 // Reserved
256 D15]>
257{
258 let SubRegClassList = [FGR32, FGR32];
235 let MethodProtos = [{
236 iterator allocation_order_end(const MachineFunction &MF) const;
237 }];
238 let MethodBodies = [{
239 AFGR64Class::iterator
240 AFGR64Class::allocation_order_end(const MachineFunction &MF) const {
241 // The last register on the list above is reserved
242 return end()-1;
243 }
244 }];
245}
246
247// Condition Register for floating point operations
248def CCR : RegisterClass<"Mips", [i32], 32, [FCR31]>;
249
250// Hi/Lo Registers
251def HILO : RegisterClass<"Mips", [i32], 32, [HI, LO]>;
252
259 let MethodProtos = [{
260 iterator allocation_order_end(const MachineFunction &MF) const;
261 }];
262 let MethodBodies = [{
263 AFGR64Class::iterator
264 AFGR64Class::allocation_order_end(const MachineFunction &MF) const {
265 // The last register on the list above is reserved
266 return end()-1;
267 }
268 }];
269}
270
271// Condition Register for floating point operations
272def CCR : RegisterClass<"Mips", [i32], 32, [FCR31]>;
273
274// Hi/Lo Registers
275def HILO : RegisterClass<"Mips", [i32], 32, [HI, LO]>;
276