From a1bbb47859cf25d4592915722a24740b93fe6192 Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Mon, 23 Nov 2015 14:09:26 +0000 Subject: [PATCH] [Hexagon] Update instruction formats git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253867 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Hexagon/HexagonInstrFormatsV4.td | 2 - lib/Target/Hexagon/HexagonInstrFormatsV60.td | 64 ++++++++++---------- lib/Target/Hexagon/HexagonInstrInfoV4.td | 6 ++ lib/Target/Hexagon/HexagonSchedule.td | 4 +- 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/lib/Target/Hexagon/HexagonInstrFormatsV4.td b/lib/Target/Hexagon/HexagonInstrFormatsV4.td index db83ef6bc47..2d1dea526ee 100644 --- a/lib/Target/Hexagon/HexagonInstrFormatsV4.td +++ b/lib/Target/Hexagon/HexagonInstrFormatsV4.td @@ -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 diff --git a/lib/Target/Hexagon/HexagonInstrFormatsV60.td b/lib/Target/Hexagon/HexagonInstrFormatsV60.td index 6d40a28c861..f3d43dec733 100644 --- a/lib/Target/Hexagon/HexagonInstrFormatsV60.td +++ b/lib/Target/Hexagon/HexagonInstrFormatsV60.td @@ -41,175 +41,175 @@ let validSubTargets = HasV60SubT in { class CVI_VA_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VA> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VA_DV_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VA_DV> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_LONG> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_Resource_late pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_LATE> : InstHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_DV_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_DV> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_DV_Slot2_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_DV_SLOT2> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_DV_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_DV_LONG> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VP_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VP_LONG> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VP_VS_Resource_early pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VP_VS_EARLY> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VP_VS_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VP_VS_LONG> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VP_VS_Resource_long_early pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VP_VS_LONG_EARLY> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VS_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VS> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VINLANESAT_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VINLANESAT> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VS_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VS> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_LD_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_LD> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_LD_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_LD> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_TMP_LD_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_TMP_LD> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_TMP_LD_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_TMP_LD> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_CUR_LD_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_CUR_LD> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_VP_LDU_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_VP_LDU> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_VP_LDU_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_VP_LDU> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_ST_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_ST> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_ST_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_ST> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_NEW_ST_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_NEW_ST> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_NEW_ST_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_NEW_ST> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_STU_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_STU> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VM_STU_Resource_long pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VM_STU> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; class CVI_HIST_Resource pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_HIST> : InstHexagon, OpcodeHexagon, Requires<[HasV60T, UseHVX]>; } @@ -218,19 +218,19 @@ let validSubTargets = HasV60SubT in { class CVI_VA_Resource1 pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VA> : InstHexagon, Requires<[HasV60T, UseHVX]>; class CVI_VX_DV_Resource1 pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_VX_DV> : InstHexagon, Requires<[HasV60T, UseHVX]>; class CVI_HIST_Resource1 pattern = [], string cstr = "", - InstrItinClass itin = PSEUDO> + InstrItinClass itin = CVI_HIST> : InstHexagon, Requires<[HasV60T, UseHVX]>; } diff --git a/lib/Target/Hexagon/HexagonInstrInfoV4.td b/lib/Target/Hexagon/HexagonInstrInfoV4.td index 7857cfafac8..65612c590bf 100644 --- a/lib/Target/Hexagon/HexagonInstrInfoV4.td +++ b/lib/Target/Hexagon/HexagonInstrInfoV4.td @@ -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; } //===----------------------------------------------------------------------===// diff --git a/lib/Target/Hexagon/HexagonSchedule.td b/lib/Target/Hexagon/HexagonSchedule.td index 567b0e6c974..6e4987b7e4e 100644 --- a/lib/Target/Hexagon/HexagonSchedule.td +++ b/lib/Target/Hexagon/HexagonSchedule.td @@ -17,6 +17,8 @@ include "HexagonScheduleV4.td" include "HexagonScheduleV55.td" //===----------------------------------------------------------------------===// -// V4 Machine Info - +// V60 Machine Info - //===----------------------------------------------------------------------===// +include "HexagonScheduleV60.td" + -- 2.34.1