1 //===-- BPFRegisterInfo.td - BPF Register defs -------------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Declarations that describe the BPF register file
12 //===----------------------------------------------------------------------===//
14 let Namespace = "BPF" in {
15 def sub_32 : SubRegIndex<32>;
18 class Wi<bits<16> Enc, string n> : Register<n> {
20 let Namespace = "BPF";
23 // Registers are identified with 4-bit ID numbers.
24 // Ri - 64-bit integer registers
25 class Ri<bits<16> Enc, string n, list<Register> subregs>
26 : RegisterWithSubRegs<n, subregs> {
28 let Namespace = "BPF";
29 let SubRegIndices = [sub_32];
33 // 32-bit Integer (alias to low part of 64-bit register).
34 def W#I : Wi<I, "w"#I>, DwarfRegNum<[I]>;
35 // 64-bit Integer registers
36 def R#I : Ri<I, "r"#I, [!cast<Wi>("W"#I)]>, DwarfRegNum<[I]>;
40 def GPR32 : RegisterClass<"BPF", [i32], 32, (add
41 (sequence "W%u", 1, 9),
47 def GPR : RegisterClass<"BPF", [i64], 64, (add
48 (sequence "R%u", 1, 9),