#ifndef TARGET_Hexagon_H
#define TARGET_Hexagon_H
-#include <cassert>
+#include "MCTargetDesc/HexagonMCTargetDesc.h"
#include "llvm/Target/TargetLowering.h"
+#include "llvm/Target/TargetMachine.h"
namespace llvm {
class FunctionPass;
class TargetMachine;
+ class MachineInstr;
+ class MCInst;
+ class HexagonAsmPrinter;
class HexagonTargetMachine;
class raw_ostream;
FunctionPass *createHexagonRemoveExtendOps(HexagonTargetMachine &TM);
FunctionPass *createHexagonCFGOptimizer(HexagonTargetMachine &TM);
- FunctionPass* createHexagonSplitTFRCondSets(HexagonTargetMachine &TM);
- FunctionPass* createHexagonExpandPredSpillCode(HexagonTargetMachine &TM);
+ FunctionPass *createHexagonSplitTFRCondSets(HexagonTargetMachine &TM);
+ FunctionPass *createHexagonExpandPredSpillCode(HexagonTargetMachine &TM);
FunctionPass *createHexagonHardwareLoops();
- FunctionPass *createHexagonOptimizeSZExtends();
+ FunctionPass *createHexagonPeephole();
FunctionPass *createHexagonFixupHwLoops();
-
- extern Target TheHexagonTarget;
-
+ FunctionPass *createHexagonPacketizer();
+ FunctionPass *createHexagonNewValueJump();
+
+
+/* TODO: object output.
+ MCCodeEmitter *createHexagonMCCodeEmitter(const Target &,
+ TargetMachine &TM,
+ MCContext &Ctx);
+*/
+/* TODO: assembler input.
+ TargetAsmBackend *createHexagonAsmBackend(const Target &,
+ const std::string &);
+*/
+ void HexagonLowerToMC(const MachineInstr *MI, MCInst &MCI,
+ HexagonAsmPrinter &AP);
} // end namespace llvm;
-// Defines symbolic names for Hexagon instructions and registers.
-// This defines a mapping from register name to register number.
-//
-
-#define GET_REGINFO_ENUM
-#include "HexagonGenRegisterInfo.inc"
-
-#define GET_INSTRINFO_ENUM
-#include "HexagonGenInstrInfo.inc"
-
-#define GET_SUBTARGETINFO_ENUM
-#include "HexagonGenSubtargetInfo.inc"
-
#define Hexagon_POINTER_SIZE 4
#define Hexagon_PointerSize (Hexagon_POINTER_SIZE)
// a new stack frame. This takes 8 bytes.
#define HEXAGON_LRFP_SIZE 8
+// Normal instruction size (in bytes).
+#define HEXAGON_INSTR_SIZE 4
+
+// Maximum number of words and instructions in a packet.
+#define HEXAGON_PACKET_SIZE 4
+
#endif