]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/Nios2/Nios2RegisterInfo.td
MFC r345703:
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / Nios2 / Nios2RegisterInfo.td
1 //===-- Nios2RegisterInfo.td - Nios2 Register defs ---------*- tablegen -*-===//
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 // We have bank of 32 registers.
11 class Nios2Reg<string n> : Register<n> {
12   field bits<5> Num;
13   let Namespace = "Nios2";
14 }
15
16 // Nios2 CPU Registers
17 class Nios2GPRReg<bits<5> num, string n> : Nios2Reg<n> {
18   let Num = num;
19 }
20
21 //===----------------------------------------------------------------------===//
22 //  Registers
23 //===----------------------------------------------------------------------===//
24
25 let Namespace = "Nios2" in {
26   // General Purpose Registers
27   def ZERO : Nios2GPRReg<0, "zero">, DwarfRegNum<[ 0 ]>;
28   def AT : Nios2GPRReg<1, "at">, DwarfRegNum<[ 1 ]>;
29   foreach RegNum = 2 - 23 in {
30     def R #RegNum : Nios2GPRReg<RegNum, "r" #RegNum>, DwarfRegNum<[ RegNum ]>;
31   }
32   def ET : Nios2GPRReg<24, "et">, DwarfRegNum<[ 24 ]>;
33   def BT : Nios2GPRReg<25, "bt">, DwarfRegNum<[ 25 ]>;
34   def GP : Nios2GPRReg<26, "gp">, DwarfRegNum<[ 26 ]>;
35   def SP : Nios2GPRReg<27, "sp">, DwarfRegNum<[ 27 ]>;
36   def FP : Nios2GPRReg<28, "fp">, DwarfRegNum<[ 28 ]>;
37   def EA : Nios2GPRReg<29, "ea">, DwarfRegNum<[ 29 ]>;
38   def BA : Nios2GPRReg<30, "ba">, DwarfRegNum<[ 30 ]>;
39   def RA : Nios2GPRReg<31, "ra">, DwarfRegNum<[ 31 ]>;
40   def PC : Nios2Reg<"pc">, DwarfRegNum<[ 32 ]>;
41 }
42
43 //===----------------------------------------------------------------------===//
44 // Register Classes
45 //===----------------------------------------------------------------------===//
46
47 def CPURegs : RegisterClass<"Nios2", [ i32 ], 32,
48                             (add
49                             // Reserved
50                             ZERO,
51                             AT,
52                             // Return Values and Arguments
53                             (sequence "R%u", 2, 7),
54                             // Not preserved across procedure calls
55                             // Caller saved
56                             (sequence "R%u", 8, 15),
57                             // Callee saved
58                             (sequence "R%u", 16, 23),
59                             // Reserved
60                             ET, BT, GP, SP, FP, EA, BA, RA, PC)>;