109467b48Spatrick //===-- ARMAsmBackendDarwin.h ARM Asm Backend Darwin ----------*- C++ -*-===// 209467b48Spatrick // 309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information. 509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 609467b48Spatrick // 709467b48Spatrick //===----------------------------------------------------------------------===// 809467b48Spatrick 909467b48Spatrick #ifndef LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H 1009467b48Spatrick #define LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H 1109467b48Spatrick 1209467b48Spatrick #include "ARMAsmBackend.h" 1309467b48Spatrick #include "llvm/BinaryFormat/MachO.h" 1409467b48Spatrick #include "llvm/MC/MCObjectWriter.h" 1509467b48Spatrick 1609467b48Spatrick namespace llvm { 1709467b48Spatrick class ARMAsmBackendDarwin : public ARMAsmBackend { 1809467b48Spatrick const MCRegisterInfo &MRI; 19097a140dSpatrick Triple TT; 2009467b48Spatrick public: 2109467b48Spatrick const MachO::CPUSubTypeARM Subtype; ARMAsmBackendDarwin(const Target & T,const MCSubtargetInfo & STI,const MCRegisterInfo & MRI)2209467b48Spatrick ARMAsmBackendDarwin(const Target &T, const MCSubtargetInfo &STI, 23097a140dSpatrick const MCRegisterInfo &MRI) 24*d415bd75Srobert : ARMAsmBackend(T, STI.getTargetTriple().isThumb(), support::little), 25*d415bd75Srobert MRI(MRI), TT(STI.getTargetTriple()), 26097a140dSpatrick Subtype((MachO::CPUSubTypeARM)cantFail( 27097a140dSpatrick MachO::getCPUSubType(STI.getTargetTriple()))) {} 2809467b48Spatrick 2909467b48Spatrick std::unique_ptr<MCObjectTargetWriter> createObjectTargetWriter()3009467b48Spatrick createObjectTargetWriter() const override { 31097a140dSpatrick return createARMMachObjectWriter( 32097a140dSpatrick /*Is64Bit=*/false, cantFail(MachO::getCPUType(TT)), Subtype); 3309467b48Spatrick } 3409467b48Spatrick 3509467b48Spatrick uint32_t generateCompactUnwindEncoding( 3609467b48Spatrick ArrayRef<MCCFIInstruction> Instrs) const override; 3709467b48Spatrick }; 3809467b48Spatrick } // end namespace llvm 3909467b48Spatrick 4009467b48Spatrick #endif 41