1 //===-- VE.td - Describe the VE Target Machine -------------*- tablegen -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
12 //===----------------------------------------------------------------------===//
13 // Target-independent interfaces which we are implementing
14 //===----------------------------------------------------------------------===//
16 include "llvm/Target/Target.td"
18 //===----------------------------------------------------------------------===//
19 // VE Subtarget features.
22 : SubtargetFeature<"vpu", "EnableVPU", "true",
25 //===----------------------------------------------------------------------===//
26 // Register File, Calling Conv, Instruction Descriptions
27 //===----------------------------------------------------------------------===//
29 include "VERegisterInfo.td"
30 include "VECallingConv.td"
31 include "VEInstrInfo.td"
33 def VEInstrInfo : InstrInfo {}
35 def VEAsmParser : AsmParser {
36 // Use both VE register name matcher to accept "S0~S63" register names
37 // and default register matcher to accept other registeres.
38 let AllowDuplicateRegisterNames = 1;
39 let ShouldEmitMatchRegisterAltName = 1;
42 //===----------------------------------------------------------------------===//
43 // VE processors supported.
44 //===----------------------------------------------------------------------===//
46 class Proc<string Name, list<SubtargetFeature> Features>
47 : Processor<Name, NoItineraries, Features>;
49 def : Proc<"generic", [FeatureEnableVPU]>;
51 //===----------------------------------------------------------------------===//
52 // Declare the target which we are implementing
53 //===----------------------------------------------------------------------===//
55 def VEAsmWriter : AsmWriter {
56 string AsmWriterClassName = "InstPrinter";
57 int PassSubtarget = 1;
62 // Pull in Instruction Info:
63 let InstructionSet = VEInstrInfo;
64 let AssemblyParsers = [VEAsmParser];
65 let AssemblyWriters = [VEAsmWriter];
66 let AllowRegisterRenaming = 1;