Files
TheRock/compiler/amd-llvm/llvm/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

148 lines
4.4 KiB
C++

//===-- ARMMCAsmInfo.h - ARM asm properties --------------------*- C++ -*--===//
//
// 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
//
//===----------------------------------------------------------------------===//
//
// This file contains the declaration of the ARMMCAsmInfo class.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMMCASMINFO_H
#define LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMMCASMINFO_H
#include "llvm/MC/MCAsmInfoCOFF.h"
#include "llvm/MC/MCAsmInfoDarwin.h"
#include "llvm/MC/MCAsmInfoELF.h"
#include "llvm/MC/MCExpr.h"
namespace llvm {
class Triple;
namespace ARM {
void printSpecifierExpr(const MCAsmInfo &MAI, raw_ostream &OS,
const MCSpecifierExpr &Expr);
}
class ARMMCAsmInfoDarwin : public MCAsmInfoDarwin {
virtual void anchor();
public:
explicit ARMMCAsmInfoDarwin(const Triple &TheTriple,
const MCTargetOptions &Options);
void printSpecifierExpr(raw_ostream &OS,
const MCSpecifierExpr &Expr) const override {
ARM::printSpecifierExpr(*this, OS, Expr);
}
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &, MCValue &,
const MCAssembler *) const override {
return false;
}
};
class ARMELFMCAsmInfo : public MCAsmInfoELF {
void anchor() override;
public:
explicit ARMELFMCAsmInfo(const Triple &TT, const MCTargetOptions &Options);
void setUseIntegratedAssembler(bool Value) override;
void printSpecifierExpr(raw_ostream &OS,
const MCSpecifierExpr &Expr) const override {
ARM::printSpecifierExpr(*this, OS, Expr);
}
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &, MCValue &,
const MCAssembler *) const override {
return false;
}
};
class ARMCOFFMCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
void anchor() override;
public:
explicit ARMCOFFMCAsmInfoMicrosoft(const MCTargetOptions &Options);
void printSpecifierExpr(raw_ostream &OS,
const MCSpecifierExpr &Expr) const override {
ARM::printSpecifierExpr(*this, OS, Expr);
}
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &, MCValue &,
const MCAssembler *) const override {
return false;
}
};
class ARMCOFFMCAsmInfoGNU : public MCAsmInfoGNUCOFF {
void anchor() override;
public:
explicit ARMCOFFMCAsmInfoGNU(const MCTargetOptions &Options);
void printSpecifierExpr(raw_ostream &OS,
const MCSpecifierExpr &Expr) const override {
ARM::printSpecifierExpr(*this, OS, Expr);
}
bool evaluateAsRelocatableImpl(const MCSpecifierExpr &, MCValue &,
const MCAssembler *) const override {
return false;
}
};
namespace ARM {
using Specifier = uint16_t;
enum {
S_None,
S_COFF_SECREL,
S_HI16 =
MCSymbolRefExpr::FirstTargetSpecifier, // The R_ARM_MOVT_ABS relocation
// (:upper16: in the .s file)
S_LO16, // The R_ARM_MOVW_ABS_NC relocation (:lower16: in the .s file)
S_HI_8_15, // The R_ARM_THM_ALU_ABS_G3 relocation (:upper8_15: in
// the .s file)
S_HI_0_7, // The R_ARM_THM_ALU_ABS_G2_NC relocation (:upper0_8: in the
// .s file)
S_LO_8_15, // The R_ARM_THM_ALU_ABS_G1_NC relocation (:lower8_15: in
// the .s file)
S_LO_0_7, // The R_ARM_THM_ALU_ABS_G0_NC relocation (:lower0_7: in the
// .s file)
S_ARM_NONE,
S_FUNCDESC,
S_GOT,
S_GOTFUNCDESC,
S_GOTOFF,
S_GOTOFFFUNCDESC,
S_GOTTPOFF,
S_GOTTPOFF_FDPIC,
S_GOT_PREL,
S_PLT,
S_PREL31,
S_SBREL,
S_TARGET1,
S_TARGET2,
S_TLSCALL,
S_TLSDESC,
S_TLSDESCSEQ,
S_TLSGD,
S_TLSGD_FDPIC,
S_TLSLDM,
S_TLSLDM_FDPIC,
S_TLSLDO,
S_TPOFF,
};
const MCSpecifierExpr *createUpper16(const MCExpr *Expr, MCContext &Ctx);
const MCSpecifierExpr *createLower16(const MCExpr *Expr, MCContext &Ctx);
const MCSpecifierExpr *createUpper8_15(const MCExpr *Expr, MCContext &Ctx);
const MCSpecifierExpr *createUpper0_7(const MCExpr *Expr, MCContext &Ctx);
const MCSpecifierExpr *createLower8_15(const MCExpr *Expr, MCContext &Ctx);
const MCSpecifierExpr *createLower0_7(const MCExpr *Expr, MCContext &Ctx);
}
} // namespace llvm
#endif