//===-- BPFRegisterInfo.td - BPF Register defs -------------*- tablegen -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// // Declarations that describe the BPF register file //===----------------------------------------------------------------------===// let Namespace = "BPF" in { def sub_32 : SubRegIndex<32>; } class Wi Enc, string n> : Register { let HWEncoding = Enc; let Namespace = "BPF"; } // Registers are identified with 4-bit ID numbers. // Ri - 64-bit integer registers class Ri Enc, string n, list subregs> : RegisterWithSubRegs { let HWEncoding = Enc; let Namespace = "BPF"; let SubRegIndices = [sub_32]; } foreach I = 0-11 in { // 32-bit Integer (alias to low part of 64-bit register). def W#I : Wi, DwarfRegNum<[I]>; // 64-bit Integer registers def R#I : Ri("W"#I)]>, DwarfRegNum<[I]>; } // Register classes. def GPR32 : RegisterClass<"BPF", [i32], 32, (add (sequence "W%u", 1, 9), W0, // Return value W11, // Stack Ptr W10 // Frame Ptr )>; def GPR : RegisterClass<"BPF", [i64], 64, (add (sequence "R%u", 1, 9), R0, // Return value R11, // Stack Ptr R10 // Frame Ptr )>;