|
@@ -15,50 +15,6 @@
|
|
|
#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGON_H
|
|
|
#define LLVM_LIB_TARGET_HEXAGON_HEXAGON_H
|
|
|
|
|
|
-#include "MCTargetDesc/HexagonMCTargetDesc.h"
|
|
|
-#include "llvm/Target/TargetLowering.h"
|
|
|
-#include "llvm/Target/TargetMachine.h"
|
|
|
-
|
|
|
-namespace llvm {
|
|
|
- class FunctionPass;
|
|
|
- class HexagonAsmPrinter;
|
|
|
- class HexagonTargetMachine;
|
|
|
- class MachineInstr;
|
|
|
- class MCInst;
|
|
|
- class ModulePass;
|
|
|
- class raw_ostream;
|
|
|
- class TargetMachine;
|
|
|
-
|
|
|
- FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,
|
|
|
- CodeGenOpt::Level OptLevel);
|
|
|
- FunctionPass *createHexagonDelaySlotFillerPass(const TargetMachine &TM);
|
|
|
- FunctionPass *createHexagonFPMoverPass(const TargetMachine &TM);
|
|
|
- FunctionPass *createHexagonRemoveExtendArgs(const HexagonTargetMachine &TM);
|
|
|
- FunctionPass *createHexagonCFGOptimizer();
|
|
|
-
|
|
|
- FunctionPass *createHexagonSplitConst32AndConst64();
|
|
|
- FunctionPass *createHexagonExpandPredSpillCode();
|
|
|
- FunctionPass *createHexagonHardwareLoops();
|
|
|
- FunctionPass *createHexagonPeephole();
|
|
|
- FunctionPass *createHexagonFixupHwLoops();
|
|
|
- FunctionPass *createHexagonNewValueJump();
|
|
|
- FunctionPass *createHexagonCopyToCombine();
|
|
|
- FunctionPass *createHexagonPacketizer();
|
|
|
- FunctionPass *createHexagonNewValueJump();
|
|
|
-
|
|
|
-/* TODO: object output.
|
|
|
- MCCodeEmitter *createHexagonMCCodeEmitter(const Target &,
|
|
|
- const TargetMachine &TM,
|
|
|
- MCContext &Ctx);
|
|
|
-*/
|
|
|
-/* TODO: assembler input.
|
|
|
- TargetAsmBackend *createHexagonAsmBackend(const Target &,
|
|
|
- const std::string &);
|
|
|
-*/
|
|
|
- void HexagonLowerToMC(MachineInstr const *MI, MCInst &MCI,
|
|
|
- HexagonAsmPrinter &AP);
|
|
|
-} // end namespace llvm;
|
|
|
-
|
|
|
#define Hexagon_POINTER_SIZE 4
|
|
|
|
|
|
#define Hexagon_PointerSize (Hexagon_POINTER_SIZE)
|
|
@@ -75,7 +31,7 @@ namespace llvm {
|
|
|
|
|
|
// Maximum number of words and instructions in a packet.
|
|
|
#define HEXAGON_PACKET_SIZE 4
|
|
|
-
|
|
|
+#define HEXAGON_MAX_PACKET_SIZE (HEXAGON_PACKET_SIZE * HEXAGON_INSTR_SIZE)
|
|
|
// Minimum number of instructions in an end-loop packet.
|
|
|
#define HEXAGON_PACKET_INNER_SIZE 2
|
|
|
#define HEXAGON_PACKET_OUTER_SIZE 3
|
|
@@ -83,4 +39,25 @@ namespace llvm {
|
|
|
// including a compound one or a duplex or an extender.
|
|
|
#define HEXAGON_PRESHUFFLE_PACKET_SIZE (HEXAGON_PACKET_SIZE + 3)
|
|
|
|
|
|
+// Name of the global offset table as defined by the Hexagon ABI
|
|
|
+#define HEXAGON_GOT_SYM_NAME "_GLOBAL_OFFSET_TABLE_"
|
|
|
+
|
|
|
+#include "MCTargetDesc/HexagonMCTargetDesc.h"
|
|
|
+#include "llvm/Target/TargetLowering.h"
|
|
|
+#include "llvm/Target/TargetMachine.h"
|
|
|
+
|
|
|
+namespace llvm {
|
|
|
+ class MachineInstr;
|
|
|
+ class MCInst;
|
|
|
+ class MCInstrInfo;
|
|
|
+ class HexagonAsmPrinter;
|
|
|
+ class HexagonTargetMachine;
|
|
|
+
|
|
|
+ void HexagonLowerToMC(const MachineInstr *MI, MCInst &MCI,
|
|
|
+ HexagonAsmPrinter &AP);
|
|
|
+
|
|
|
+ /// \brief Creates a Hexagon-specific Target Transformation Info pass.
|
|
|
+ ImmutablePass *createHexagonTargetTransformInfoPass(const HexagonTargetMachine *TM);
|
|
|
+} // end namespace llvm;
|
|
|
+
|
|
|
#endif
|