60 lines · c
1//====-- SystemZMCAsmInfo.h - SystemZ asm properties -----------*- C++ -*--===//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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_SYSTEMZ_MCTARGETDESC_SYSTEMZMCASMINFO_H10#define LLVM_LIB_TARGET_SYSTEMZ_MCTARGETDESC_SYSTEMZMCASMINFO_H11 12#include "llvm/MC/MCAsmInfoELF.h"13#include "llvm/MC/MCAsmInfoGOFF.h"14#include "llvm/Support/Compiler.h"15 16namespace llvm {17class Triple;18enum SystemZAsmDialect { AD_GNU = 0, AD_HLASM = 1 };19 20class SystemZMCAsmInfoELF : public MCAsmInfoELF {21public:22 explicit SystemZMCAsmInfoELF(const Triple &TT);23};24 25class SystemZMCAsmInfoGOFF : public MCAsmInfoGOFF {26public:27 explicit SystemZMCAsmInfoGOFF(const Triple &TT);28 bool isAcceptableChar(char C) const override;29 void printSpecifierExpr(raw_ostream &OS,30 const MCSpecifierExpr &Expr) const override;31 bool evaluateAsRelocatableImpl(const MCSpecifierExpr &Expr, MCValue &Res,32 const MCAssembler *Asm) const override;33};34 35namespace SystemZ {36using Specifier = uint16_t;37enum {38 S_None,39 40 S_DTPOFF,41 S_GOT,42 S_GOTENT,43 S_INDNTPOFF,44 S_NTPOFF,45 S_PLT,46 S_TLSGD,47 S_TLSLD,48 S_TLSLDM,49 50 // HLASM docs for address constants:51 // https://www.ibm.com/docs/en/hla-and-tf/1.6?topic=value-address-constants52 S_RCon, // Address of ADA of symbol.53 S_VCon, // Address of external function symbol.54};55} // namespace SystemZ56 57} // end namespace llvm58 59#endif60