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