xref: /openbsd-src/gnu/llvm/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
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