mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
e3adf0fc70
This moves all the logic of converting LLVM Triples to MachO::CPU_(SUB_)TYPE from the specific target (Target)AsmBackend to more convenient functions in lib/BinaryFormat. This also gets rid of the separate two X86AsmBackend classes. The previous attempt was to add it to libObject, but that adds an unnecessary dependency to libObject from all the targets. Differential Revision: https://reviews.llvm.org/D74808
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
//===-- ARMAsmBackendDarwin.h ARM Asm Backend Darwin ----------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H
|
|
#define LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H
|
|
|
|
#include "ARMAsmBackend.h"
|
|
#include "llvm/BinaryFormat/MachO.h"
|
|
#include "llvm/MC/MCObjectWriter.h"
|
|
|
|
namespace llvm {
|
|
class ARMAsmBackendDarwin : public ARMAsmBackend {
|
|
const MCRegisterInfo &MRI;
|
|
Triple TT;
|
|
public:
|
|
const MachO::CPUSubTypeARM Subtype;
|
|
ARMAsmBackendDarwin(const Target &T, const MCSubtargetInfo &STI,
|
|
const MCRegisterInfo &MRI)
|
|
: ARMAsmBackend(T, STI, support::little), MRI(MRI),
|
|
TT(STI.getTargetTriple()),
|
|
Subtype((MachO::CPUSubTypeARM)cantFail(
|
|
MachO::getCPUSubType(STI.getTargetTriple()))) {}
|
|
|
|
std::unique_ptr<MCObjectTargetWriter>
|
|
createObjectTargetWriter() const override {
|
|
return createARMMachObjectWriter(
|
|
/*Is64Bit=*/false, cantFail(MachO::getCPUType(TT)), Subtype);
|
|
}
|
|
|
|
uint32_t generateCompactUnwindEncoding(
|
|
ArrayRef<MCCFIInstruction> Instrs) const override;
|
|
};
|
|
} // end namespace llvm
|
|
|
|
#endif
|