blob: ef5b9c09705a1f12e1eb143041ed91415eb29b6c [file] [log] [blame]
//===-- VERegisterInfo.td - VE Register defs ---------------*- tablegen -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// Declarations that describe the VE register file
//===----------------------------------------------------------------------===//
class VEReg<bits<7> Enc, string n> : Register<n> {
let HWEncoding{15-7} = 0;
let HWEncoding{6-0} = Enc;
let Namespace = "VE";
}
// Registers are identified with 7-bit ID numbers.
// R - 64-bit integer or floating-point registers
class R<bits<7> Enc, string n, list<Register> subregs = [],
list<Register> aliases = []>: VEReg<Enc, n> {
let SubRegs = subregs;
let Aliases = aliases;
}
// Generic integer registers - 64 bits wide
foreach I = 0-63 in
def SX#I : R<I, "S"#I, []>,
DwarfRegNum<[I]>;
// Register classes.
//
// The register order is defined in terms of the preferred
// allocation order.
def I64 : RegisterClass<"VE", [i64], 64,
(sequence "SX%u", 0, 63)>;