Use multiclass for the store instructions with MEMri operand.
[oota-llvm.git] / lib / Target / Hexagon / Hexagon.h
index bbefcaf46fe25401c5b61c872a31b95448c852ac..45f857bab8c6274fe91975bd3a26e9398e0472cf 100644 (file)
 #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;
 
@@ -31,13 +34,27 @@ namespace llvm {
   FunctionPass *createHexagonRemoveExtendOps(HexagonTargetMachine &TM);
   FunctionPass *createHexagonCFGOptimizer(HexagonTargetMachine &TM);
 
-  FunctionPasscreateHexagonSplitTFRCondSets(HexagonTargetMachine &TM);
-  FunctionPasscreateHexagonExpandPredSpillCode(HexagonTargetMachine &TM);
+  FunctionPass *createHexagonSplitTFRCondSets(HexagonTargetMachine &TM);
+  FunctionPass *createHexagonExpandPredSpillCode(HexagonTargetMachine &TM);
 
   FunctionPass *createHexagonHardwareLoops();
   FunctionPass *createHexagonPeephole();
   FunctionPass *createHexagonFixupHwLoops();
+  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;
 
 #define Hexagon_POINTER_SIZE 4
@@ -51,4 +68,10 @@ namespace llvm {
 // 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