xref: /aosp_15_r20/external/llvm/lib/Target/BPF/BPFRegisterInfo.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//===-- BPFRegisterInfo.td - BPF Register defs -------------*- tablegen -*-===//
2*9880d681SAndroid Build Coastguard Worker//
3*9880d681SAndroid Build Coastguard Worker//                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker//
5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker//
8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
11*9880d681SAndroid Build Coastguard Worker//  Declarations that describe the BPF register file
12*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker// Registers are identified with 4-bit ID numbers.
15*9880d681SAndroid Build Coastguard Worker// Ri - 64-bit integer registers
16*9880d681SAndroid Build Coastguard Workerclass Ri<bits<16> Enc, string n> : Register<n> {
17*9880d681SAndroid Build Coastguard Worker  let Namespace = "BPF";
18*9880d681SAndroid Build Coastguard Worker  let HWEncoding = Enc;
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker// Integer registers
22*9880d681SAndroid Build Coastguard Workerdef R0 : Ri< 0, "r0">, DwarfRegNum<[0]>;
23*9880d681SAndroid Build Coastguard Workerdef R1 : Ri< 1, "r1">, DwarfRegNum<[1]>;
24*9880d681SAndroid Build Coastguard Workerdef R2 : Ri< 2, "r2">, DwarfRegNum<[2]>;
25*9880d681SAndroid Build Coastguard Workerdef R3 : Ri< 3, "r3">, DwarfRegNum<[3]>;
26*9880d681SAndroid Build Coastguard Workerdef R4 : Ri< 4, "r4">, DwarfRegNum<[4]>;
27*9880d681SAndroid Build Coastguard Workerdef R5 : Ri< 5, "r5">, DwarfRegNum<[5]>;
28*9880d681SAndroid Build Coastguard Workerdef R6 : Ri< 6, "r6">, DwarfRegNum<[6]>;
29*9880d681SAndroid Build Coastguard Workerdef R7 : Ri< 7, "r7">, DwarfRegNum<[7]>;
30*9880d681SAndroid Build Coastguard Workerdef R8 : Ri< 8, "r8">, DwarfRegNum<[8]>;
31*9880d681SAndroid Build Coastguard Workerdef R9 : Ri< 9, "r9">, DwarfRegNum<[9]>;
32*9880d681SAndroid Build Coastguard Workerdef R10 : Ri<10, "r10">, DwarfRegNum<[10]>;
33*9880d681SAndroid Build Coastguard Workerdef R11 : Ri<11, "r11">, DwarfRegNum<[11]>;
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker// Register classes.
36*9880d681SAndroid Build Coastguard Workerdef GPR : RegisterClass<"BPF", [i64], 64, (add R1, R2, R3, R4, R5,
37*9880d681SAndroid Build Coastguard Worker                                           R6, R7, R8, R9, // callee saved
38*9880d681SAndroid Build Coastguard Worker                                           R0,  // return value
39*9880d681SAndroid Build Coastguard Worker                                           R11, // stack ptr
40*9880d681SAndroid Build Coastguard Worker                                           R10  // frame ptr
41*9880d681SAndroid Build Coastguard Worker                                          )>;
42