1//===-- SystemZ.td - Describe the SystemZ target machine -----*- tblgen -*-===// 2// 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 6// 7//===----------------------------------------------------------------------===// 8 9//===----------------------------------------------------------------------===// 10// Target-independent interfaces which we are implementing 11//===----------------------------------------------------------------------===// 12 13include "llvm/Target/Target.td" 14 15//===----------------------------------------------------------------------===// 16// SystemZ subtarget features 17//===----------------------------------------------------------------------===// 18 19include "SystemZFeatures.td" 20 21//===----------------------------------------------------------------------===// 22// SystemZ subtarget scheduling models 23//===----------------------------------------------------------------------===// 24 25include "SystemZSchedule.td" 26 27//===----------------------------------------------------------------------===// 28// SystemZ supported processors 29//===----------------------------------------------------------------------===// 30 31include "SystemZProcessors.td" 32 33//===----------------------------------------------------------------------===// 34// Register file description 35//===----------------------------------------------------------------------===// 36 37include "SystemZRegisterInfo.td" 38 39//===----------------------------------------------------------------------===// 40// Calling convention description 41//===----------------------------------------------------------------------===// 42 43include "SystemZCallingConv.td" 44 45//===----------------------------------------------------------------------===// 46// Instruction descriptions 47//===----------------------------------------------------------------------===// 48 49include "SystemZOperators.td" 50include "SystemZOperands.td" 51include "SystemZPatterns.td" 52include "SystemZInstrFormats.td" 53include "SystemZInstrInfo.td" 54include "SystemZInstrVector.td" 55include "SystemZInstrFP.td" 56include "SystemZInstrHFP.td" 57include "SystemZInstrDFP.td" 58include "SystemZInstrSystem.td" 59 60def SystemZInstrInfo : InstrInfo { let guessInstructionProperties = 0; } 61 62//===----------------------------------------------------------------------===// 63// Assembly parser 64//===----------------------------------------------------------------------===// 65 66def SystemZAsmParser : AsmParser { 67 let ShouldEmitMatchRegisterName = 0; 68} 69 70def ATTAsmParserVariant : AsmParserVariant { 71 int Variant = 0; 72 73 // Variant name. 74 string Name = "att"; 75} 76 77def HLASMAsmParserVariant : AsmParserVariant { 78 int Variant = 1; 79 80 // Variant name. 81 string Name = "hlasm"; 82} 83 84//===----------------------------------------------------------------------===// 85// Top-level target declaration 86//===----------------------------------------------------------------------===// 87 88def SystemZ : Target { 89 let InstructionSet = SystemZInstrInfo; 90 let AssemblyParsers = [SystemZAsmParser]; 91 let AssemblyParserVariants = [ATTAsmParserVariant, HLASMAsmParserVariant]; 92 let AllowRegisterRenaming = 1; 93} 94