diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/VE/VE.td')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Target/VE/VE.td | 64 | 
1 files changed, 64 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/VE/VE.td b/contrib/llvm-project/llvm/lib/Target/VE/VE.td new file mode 100644 index 000000000000..617a6ea458b6 --- /dev/null +++ b/contrib/llvm-project/llvm/lib/Target/VE/VE.td @@ -0,0 +1,64 @@ +//===-- VE.td - Describe the VE Target Machine -------------*- 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 +// +//===----------------------------------------------------------------------===// +// +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// Target-independent interfaces which we are implementing +//===----------------------------------------------------------------------===// + +include "llvm/Target/Target.td" + +//===----------------------------------------------------------------------===// +// VE Subtarget features. +// + +//===----------------------------------------------------------------------===// +// Register File, Calling Conv, Instruction Descriptions +//===----------------------------------------------------------------------===// + +include "VERegisterInfo.td" +include "VECallingConv.td" +include "VEInstrInfo.td" + +def VEInstrInfo : InstrInfo; + +def VEAsmParser : AsmParser { +  // Use both VE register name matcher to accept "S0~S63" register names +  // and default register matcher to accept other registeres. +  let AllowDuplicateRegisterNames = 1; +  let ShouldEmitMatchRegisterAltName = 1; +} + +//===----------------------------------------------------------------------===// +// VE processors supported. +//===----------------------------------------------------------------------===// + +class Proc<string Name, list<SubtargetFeature> Features> + : Processor<Name, NoItineraries, Features>; + +def : Proc<"ve",             []>; + +//===----------------------------------------------------------------------===// +// Declare the target which we are implementing +//===----------------------------------------------------------------------===// + +def VEAsmWriter : AsmWriter { +  string AsmWriterClassName  = "InstPrinter"; +  int PassSubtarget = 1; +  int Variant = 0; +} + +def VE : Target { +  // Pull in Instruction Info: +  let InstructionSet = VEInstrInfo; +  let AssemblyParsers = [VEAsmParser]; +  let AssemblyWriters = [VEAsmWriter]; +  let AllowRegisterRenaming = 1; +}  | 
