mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
da73d5f3fb
- This patch introduces a different assembler dialect ("hlasm") for z/OS. The default dialect has now been given the "att" dialect name. For this appropriate changes have been added to SystemZ.td. - This patch also makes a few changes to SystemZInstrFormats.td which restrict a few condition code mnemonics to just the "att" dialect variant (he, le, lh, nhe, nle, nlh). These extended condition code mnemonics are not available in HLASM. - A new private function has been introduced in SystemZAsmParser.cpp to return the assembler dialect set in SystemZMCAsmInfo.cpp. The reason we couldn't/haven't explicitly queried the overriden getAssemblerDialect function from AsmParser is outlined in this thread here. This returned dialect is directly passed onto the relevant matcher functions which taken in a variantID, so that the matcher functions can appropriately choose an instruction based on the variant. Reviewed By: uweigand Differential Revision: https://reviews.llvm.org/D94250
94 lines
3.2 KiB
TableGen
94 lines
3.2 KiB
TableGen
//===-- SystemZ.td - Describe the SystemZ target machine -----*- tblgen -*-===//
|
|
//
|
|
// 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"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SystemZ subtarget features
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZFeatures.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SystemZ subtarget scheduling models
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZSchedule.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SystemZ supported processors
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZProcessors.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Register file description
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZRegisterInfo.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Calling convention description
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZCallingConv.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Instruction descriptions
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "SystemZOperators.td"
|
|
include "SystemZOperands.td"
|
|
include "SystemZPatterns.td"
|
|
include "SystemZInstrFormats.td"
|
|
include "SystemZInstrInfo.td"
|
|
include "SystemZInstrVector.td"
|
|
include "SystemZInstrFP.td"
|
|
include "SystemZInstrHFP.td"
|
|
include "SystemZInstrDFP.td"
|
|
include "SystemZInstrSystem.td"
|
|
|
|
def SystemZInstrInfo : InstrInfo { let guessInstructionProperties = 0; }
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Assembly parser
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
def SystemZAsmParser : AsmParser {
|
|
let ShouldEmitMatchRegisterName = 0;
|
|
}
|
|
|
|
def ATTAsmParserVariant : AsmParserVariant {
|
|
int Variant = 0;
|
|
|
|
// Variant name.
|
|
string Name = "att";
|
|
}
|
|
|
|
def HLASMAsmParserVariant : AsmParserVariant {
|
|
int Variant = 1;
|
|
|
|
// Variant name.
|
|
string Name = "hlasm";
|
|
}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Top-level target declaration
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
def SystemZ : Target {
|
|
let InstructionSet = SystemZInstrInfo;
|
|
let AssemblyParsers = [SystemZAsmParser];
|
|
let AssemblyParserVariants = [ATTAsmParserVariant, HLASMAsmParserVariant];
|
|
let AllowRegisterRenaming = 1;
|
|
}
|