1//===-- ARMAsmBackendDarwin.h   ARM Asm Backend Darwin ----------*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H
10#define LLVM_LIB_TARGET_ARM_ARMASMBACKENDDARWIN_H
11
12#include "ARMAsmBackend.h"
13#include "llvm/BinaryFormat/MachO.h"
14#include "llvm/MC/MCObjectWriter.h"
15
16namespace llvm {
17class ARMAsmBackendDarwin : public ARMAsmBackend {
18  const MCRegisterInfo &MRI;
19public:
20  const MachO::CPUSubTypeARM Subtype;
21  ARMAsmBackendDarwin(const Target &T, const MCSubtargetInfo &STI,
22                      const MCRegisterInfo &MRI, MachO::CPUSubTypeARM st)
23      : ARMAsmBackend(T, STI, support::little), MRI(MRI), Subtype(st) {}
24
25  std::unique_ptr<MCObjectTargetWriter>
26  createObjectTargetWriter() const override {
27    return createARMMachObjectWriter(/*Is64Bit=*/false, MachO::CPU_TYPE_ARM,
28                                     Subtype);
29  }
30
31  uint32_t generateCompactUnwindEncoding(
32      ArrayRef<MCCFIInstruction> Instrs) const override;
33};
34} // end namespace llvm
35
36#endif
37