[Hexagon] Update instruction formats
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>
Mon, 23 Nov 2015 14:09:26 +0000 (14:09 +0000)
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>
Mon, 23 Nov 2015 14:09:26 +0000 (14:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253867 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Hexagon/HexagonInstrFormatsV4.td
lib/Target/Hexagon/HexagonInstrFormatsV60.td
lib/Target/Hexagon/HexagonInstrInfoV4.td
lib/Target/Hexagon/HexagonSchedule.td

index db83ef6bc474ca76dc94d68791c548f9d6e0bd6d..2d1dea526eede017ed585a6664a080a3e7d9f7e1 100644 (file)
@@ -21,8 +21,6 @@ def TypeMEMOP    : IType<9>;
 def TypeNV       : IType<10>;
 def TypeDUPLEX   : IType<11>;
 def TypeCOMPOUND : IType<12>;
-def TypeAG_VX    : IType<28>;
-def TypeAG_VM    : IType<29>;
 def TypePREFIX   : IType<30>;
 
 //                      Duplex Instruction Class Declaration
index 6d40a28c861b97a222d417a78c9c254501705af2..f3d43dec733e8aadb1a18167163de7145b580801 100644 (file)
@@ -41,175 +41,175 @@ let validSubTargets = HasV60SubT in
 {
 class CVI_VA_Resource<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VA>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VA>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VA_DV_Resource<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VA_DV>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VA_DV>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_Resource_long<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VX_LONG>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_Resource_late<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VX_LATE>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX>,
      Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_Resource<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VX>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_DV_Resource<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VX_DV>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX_DV>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_DV_Slot2_Resource<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VX_DV_SLOT2>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX_DV>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_DV_Resource_long<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VX_DV_LONG>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX_DV>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VP_Resource_long<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VP_LONG>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VP>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VP_VS_Resource_early<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VP_VS_EARLY>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VP_VS>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VP_VS_Resource_long<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VP_VS_LONG>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VP_VS>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VP_VS_Resource_long_early<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VP_VS_LONG_EARLY>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VP_VS>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VS_Resource<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VS>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VS>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VINLANESAT_Resource<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VINLANESAT>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VINLANESAT>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VS_Resource_long<dag outs, dag ins, string asmstr,
                            list<dag> pattern = [], string cstr = "",
-                           InstrItinClass itin = PSEUDO>
+                           InstrItinClass itin = CVI_VS>
   : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VS>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_LD_Resource<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VM_LD>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_LD>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_LD_Resource_long<dag outs, dag ins, string asmstr,
                               list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VM_LD>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_LD>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_TMP_LD_Resource<dag outs, dag ins, string asmstr,
                              list<dag> pattern = [], string cstr = "",
-                             InstrItinClass itin = PSEUDO>
+                             InstrItinClass itin = CVI_VM_TMP_LD>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_TMP_LD>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_TMP_LD_Resource_long<dag outs, dag ins, string asmstr,
                                   list<dag> pattern = [], string cstr = "",
-                                  InstrItinClass itin = PSEUDO>
+                                  InstrItinClass itin = CVI_VM_TMP_LD>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_TMP_LD>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_CUR_LD_Resource<dag outs, dag ins, string asmstr,
                              list<dag> pattern = [], string cstr = "",
-                             InstrItinClass itin = PSEUDO>
+                             InstrItinClass itin = CVI_VM_CUR_LD>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_CUR_LD>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_VP_LDU_Resource<dag outs, dag ins, string asmstr,
                              list<dag> pattern = [], string cstr = "",
-                             InstrItinClass itin = PSEUDO>
+                             InstrItinClass itin = CVI_VM_VP_LDU>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_VP_LDU>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_VP_LDU_Resource_long<dag outs, dag ins, string asmstr,
                                   list<dag> pattern = [], string cstr = "",
-                                  InstrItinClass itin = PSEUDO>
+                                  InstrItinClass itin = CVI_VM_VP_LDU>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_VP_LDU>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_ST_Resource<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VM_ST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_ST>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_ST_Resource_long<dag outs, dag ins, string asmstr,
                               list<dag> pattern = [], string cstr = "",
-                              InstrItinClass itin = PSEUDO>
+                              InstrItinClass itin = CVI_VM_ST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_ST>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_NEW_ST_Resource<dag outs, dag ins, string asmstr,
                              list<dag> pattern = [], string cstr = "",
-                             InstrItinClass itin = PSEUDO>
+                             InstrItinClass itin = CVI_VM_NEW_ST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_NEW_ST>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_NEW_ST_Resource_long<dag outs, dag ins, string asmstr,
                                   list<dag> pattern = [], string cstr = "",
-                                  InstrItinClass itin = PSEUDO>
+                                  InstrItinClass itin = CVI_VM_NEW_ST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_NEW_ST>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_STU_Resource<dag outs, dag ins, string asmstr,
                           list<dag> pattern = [], string cstr = "",
-                          InstrItinClass itin = PSEUDO>
+                          InstrItinClass itin = CVI_VM_STU>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_STU>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_VM_STU_Resource_long<dag outs, dag ins, string asmstr,
                                list<dag> pattern = [], string cstr = "",
-                               InstrItinClass itin = PSEUDO>
+                               InstrItinClass itin = CVI_VM_STU>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VM_STU>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 
 class CVI_HIST_Resource<dag outs, dag ins, string asmstr,
                         list<dag> pattern = [], string cstr = "",
-                        InstrItinClass itin = PSEUDO>
+                        InstrItinClass itin = CVI_HIST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_HIST>,
      OpcodeHexagon, Requires<[HasV60T, UseHVX]>;
 }
@@ -218,19 +218,19 @@ let validSubTargets = HasV60SubT in
 {
 class CVI_VA_Resource1<dag outs, dag ins, string asmstr,
                        list<dag> pattern = [], string cstr = "",
-                       InstrItinClass itin = PSEUDO>
+                       InstrItinClass itin = CVI_VA>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VA>,
      Requires<[HasV60T, UseHVX]>;
 
 class CVI_VX_DV_Resource1<dag outs, dag ins, string asmstr,
                          list<dag> pattern = [], string cstr = "",
-                         InstrItinClass itin = PSEUDO>
+                         InstrItinClass itin = CVI_VX_DV>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_VX_DV>,
      Requires<[HasV60T, UseHVX]>;
 
 class CVI_HIST_Resource1<dag outs, dag ins, string asmstr,
                         list<dag> pattern = [], string cstr = "",
-                        InstrItinClass itin = PSEUDO>
+                        InstrItinClass itin = CVI_HIST>
    : InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeCVI_HIST>,
      Requires<[HasV60T, UseHVX]>;
 }
index 7857cfafac8d08bd53cdee29128a5ebbee3def6d..65612c590bfe760081f2a49fb68a9d8945993ea9 100644 (file)
@@ -3302,16 +3302,22 @@ defm L4_return: LD_MISC_L4_RETURN <"dealloc_return">, PredNewRel;
 let isCall = 1, isBarrier = 1, isReturn = 1, isTerminator = 1,
     Defs = [R29, R30, R31, PC], isPredicable = 0, isAsmParserOnly = 1 in {
   def RESTORE_DEALLOC_RET_JMP_V4 : T_JMP<"">;
+  let isExtended = 1, opExtendable = 0 in
+    def RESTORE_DEALLOC_RET_JMP_V4_EXT : T_JMP<"">;
 }
 
 // Restore registers and dealloc frame before a tail call.
 let isCall = 1, Defs = [R29, R30, R31, PC], isAsmParserOnly = 1 in {
   def RESTORE_DEALLOC_BEFORE_TAILCALL_V4 : T_Call<"">, PredRel;
+  let isExtended = 1, opExtendable = 0 in
+    def RESTORE_DEALLOC_BEFORE_TAILCALL_V4_EXT : T_Call<"">, PredRel;
 }
 
 // Save registers function call.
 let isCall = 1, Uses = [R29, R31], isAsmParserOnly = 1 in {
   def SAVE_REGISTERS_CALL_V4 : T_Call<"">, PredRel;
+  let isExtended = 1, opExtendable = 0 in
+    def SAVE_REGISTERS_CALL_V4_EXT : T_Call<"">, PredRel;
 }
 
 //===----------------------------------------------------------------------===//
index 567b0e6c974aa6841be8cd88b67f89d90eb25ba2..6e4987b7e4e3f143fee5e4b7522e7ecebf5aa565 100644 (file)
@@ -17,6 +17,8 @@ include "HexagonScheduleV4.td"
 include "HexagonScheduleV55.td"
 
 //===----------------------------------------------------------------------===//
-// V4 Machine Info -
+// V60 Machine Info -
 //===----------------------------------------------------------------------===//
 
+include "HexagonScheduleV60.td"
+