1283625Sdim//===-- BPFRegisterInfo.td - BPF Register defs -------------*- tablegen -*-===// 2283625Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6283625Sdim// 7283625Sdim//===----------------------------------------------------------------------===// 8283625Sdim 9283625Sdim//===----------------------------------------------------------------------===// 10283625Sdim// Declarations that describe the BPF register file 11283625Sdim//===----------------------------------------------------------------------===// 12283625Sdim 13327952Sdimlet Namespace = "BPF" in { 14327952Sdim def sub_32 : SubRegIndex<32>; 15327952Sdim} 16327952Sdim 17327952Sdimclass Wi<bits<16> Enc, string n> : Register<n> { 18327952Sdim let HWEncoding = Enc; 19327952Sdim let Namespace = "BPF"; 20327952Sdim} 21327952Sdim 22283625Sdim// Registers are identified with 4-bit ID numbers. 23283625Sdim// Ri - 64-bit integer registers 24327952Sdimclass Ri<bits<16> Enc, string n, list<Register> subregs> 25327952Sdim : RegisterWithSubRegs<n, subregs> { 26327952Sdim let HWEncoding = Enc; 27283625Sdim let Namespace = "BPF"; 28327952Sdim let SubRegIndices = [sub_32]; 29283625Sdim} 30283625Sdim 31327952Sdimforeach I = 0-11 in { 32327952Sdim // 32-bit Integer (alias to low part of 64-bit register). 33327952Sdim def W#I : Wi<I, "w"#I>, DwarfRegNum<[I]>; 34327952Sdim // 64-bit Integer registers 35327952Sdim def R#I : Ri<I, "r"#I, [!cast<Wi>("W"#I)]>, DwarfRegNum<[I]>; 36327952Sdim} 37283625Sdim 38283625Sdim// Register classes. 39327952Sdimdef GPR32 : RegisterClass<"BPF", [i32], 32, (add 40327952Sdim (sequence "W%u", 1, 9), 41327952Sdim W0, // Return value 42327952Sdim W11, // Stack Ptr 43327952Sdim W10 // Frame Ptr 44327952Sdim)>; 45327952Sdim 46327952Sdimdef GPR : RegisterClass<"BPF", [i64], 64, (add 47327952Sdim (sequence "R%u", 1, 9), 48327952Sdim R0, // Return value 49327952Sdim R11, // Stack Ptr 50327952Sdim R10 // Frame Ptr 51327952Sdim)>; 52