#ifndef LLVM_LIB_TARGET_HEXAGON_MCTARGETDESC_HEXAGONMCTARGETDESC_H
#define LLVM_LIB_TARGET_HEXAGON_MCTARGETDESC_HEXAGONMCTARGETDESC_H
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
#include <cstdint>
#define Hexagon_POINTER_SIZE …
#define Hexagon_PointerSize …
#define Hexagon_PointerSize_Bits …
#define Hexagon_WordSize …
#define Hexagon_WordSize_Bits …
#define HEXAGON_LRFP_SIZE …
#define HEXAGON_INSTR_SIZE …
#define HEXAGON_PACKET_SIZE …
#define HEXAGON_MAX_PACKET_SIZE …
#define HEXAGON_PACKET_INNER_SIZE …
#define HEXAGON_PACKET_OUTER_SIZE …
#define HEXAGON_PRESHUFFLE_PACKET_SIZE …
#define HEXAGON_GOT_SYM_NAME …
namespace llvm {
struct InstrStage;
class FeatureBitset;
class MCAsmBackend;
class MCCodeEmitter;
class MCContext;
class MCInstrInfo;
class MCObjectTargetWriter;
class MCRegisterInfo;
class MCSubtargetInfo;
class MCTargetOptions;
class Target;
class Triple;
class StringRef;
extern cl::opt<bool> HexagonDisableCompound;
extern cl::opt<bool> HexagonDisableDuplex;
extern const InstrStage HexagonStages[];
MCInstrInfo *createHexagonMCInstrInfo();
MCRegisterInfo *createHexagonMCRegisterInfo(StringRef TT);
namespace Hexagon_MC {
StringRef selectHexagonCPU(StringRef CPU);
FeatureBitset completeHVXFeatures(const FeatureBitset &FB);
MCSubtargetInfo *createHexagonMCSubtargetInfo(const Triple &TT, StringRef CPU,
StringRef FS);
MCSubtargetInfo const *getArchSubtarget(MCSubtargetInfo const *STI);
void addArchSubtarget(MCSubtargetInfo const *STI,
StringRef FS);
unsigned GetELFFlags(const MCSubtargetInfo &STI);
llvm::ArrayRef<MCPhysReg> GetVectRegRev();
std::optional<unsigned> getHVXVersion(const FeatureBitset &Features);
unsigned getArchVersion(const FeatureBitset &Features);
}
MCCodeEmitter *createHexagonMCCodeEmitter(const MCInstrInfo &MCII,
MCContext &MCT);
MCAsmBackend *createHexagonAsmBackend(const Target &T,
const MCSubtargetInfo &STI,
const MCRegisterInfo &MRI,
const MCTargetOptions &Options);
std::unique_ptr<MCObjectTargetWriter>
createHexagonELFObjectWriter(uint8_t OSABI, StringRef CPU);
unsigned HexagonGetLastSlot();
unsigned HexagonConvertUnits(unsigned ItinUnits, unsigned *Lanes);
}
#define GET_REGINFO_ENUM
#include "HexagonGenRegisterInfo.inc"
#define GET_INSTRINFO_ENUM
#define GET_INSTRINFO_SCHED_ENUM
#define GET_INSTRINFO_MC_HELPER_DECLS
#include "HexagonGenInstrInfo.inc"
#define GET_SUBTARGETINFO_ENUM
#include "HexagonGenSubtargetInfo.inc"
#endif