From 798f57f9c9f3ab609f2ddabdc6f716035b0be8ba Mon Sep 17 00:00:00 2001 From: Jyotsna Verma Date: Thu, 8 May 2014 18:47:08 +0000 Subject: [Hexagon] Add new InstrItinClass to support timing classes. This patch doesn't introduce any functionality change. Test cases will be added later when v5 support is added. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208349 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Hexagon/HexagonInstrFormats.td | 105 +++++++++++++++--------------- 1 file changed, 53 insertions(+), 52 deletions(-) (limited to 'lib/Target/Hexagon/HexagonInstrFormats.td') diff --git a/lib/Target/Hexagon/HexagonInstrFormats.td b/lib/Target/Hexagon/HexagonInstrFormats.td index 491d1d9b0d..1057343493 100644 --- a/lib/Target/Hexagon/HexagonInstrFormats.td +++ b/lib/Target/Hexagon/HexagonInstrFormats.td @@ -197,8 +197,8 @@ class InstHexagon pattern, // LD Instruction Class in V2/V3/V4. // Definition of the instruction class NOT CHANGED. class LDInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = LD_tc_ld_SLOT01> + : InstHexagon; let mayLoad = 1 in class LDInst2 pattern = [], @@ -217,16 +217,16 @@ class LDInstPost pattern = [], let mayLoad = 1 in class LD0Inst pattern = [], - string cstr = ""> - : LDInst; + string cstr = "", InstrItinClass itin=LD_tc_ld_SLOT0> + : InstHexagon; // ST Instruction Class in V2/V3 can take SLOT0 only. // ST Instruction Class in V4 can take SLOT0 & SLOT1. // Definition of the instruction class CHANGED from V2/V3 to V4. let mayStore = 1 in class STInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = ST_tc_st_SLOT01> + : InstHexagon; class STInst2 pattern = [], string cstr = ""> @@ -234,39 +234,39 @@ class STInst2 pattern = [], let mayStore = 1 in class ST0Inst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = ST_tc_ld_SLOT0> + : InstHexagon; // ST Instruction Class in V2/V3 can take SLOT0 only. // ST Instruction Class in V4 can take SLOT0 & SLOT1. // Definition of the instruction class CHANGED from V2/V3 to V4. class STInstPost pattern = [], - string cstr = ""> - : STInst; + string cstr = "", InstrItinClass itin = ST_tc_st_SLOT01> + : STInst; // SYSTEM Instruction Class in V4 can take SLOT0 only // In V2/V3 we used ST for this but in v4 ST can take SLOT0 or SLOT1. class SYSInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = ST_tc_3stall_SLOT0> + : InstHexagon; // ALU32 Instruction Class in V2/V3/V4. // Definition of the instruction class NOT CHANGED. class ALU32Inst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = ALU32_2op_tc_1_SLOT0123> + : InstHexagon; // ALU64 Instruction Class in V2/V3. // XTYPE Instruction Class in V4. // Definition of the instruction class NOT CHANGED. // Name of the Instruction Class changed from ALU64 to XTYPE from V2/V3 to V4. class ALU64Inst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = ALU64_tc_2_SLOT23> + : InstHexagon; class ALU64_acc pattern = [], - string cstr = ""> - : ALU64Inst; + string cstr = "", InstrItinClass itin = ALU64_tc_2_SLOT23> + : ALU64Inst; // M Instruction Class in V2/V3. @@ -274,55 +274,55 @@ class ALU64_acc pattern = [], // Definition of the instruction class NOT CHANGED. // Name of the Instruction Class changed from M to XTYPE from V2/V3 to V4. class MInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = M_tc_3x_SLOT23> + : InstHexagon; // M Instruction Class in V2/V3. // XTYPE Instruction Class in V4. // Definition of the instruction class NOT CHANGED. // Name of the Instruction Class changed from M to XTYPE from V2/V3 to V4. class MInst_acc pattern = [], - string cstr = ""> - : MInst; + string cstr = "", InstrItinClass itin = M_tc_2_SLOT23> + : MInst; // S Instruction Class in V2/V3. // XTYPE Instruction Class in V4. // Definition of the instruction class NOT CHANGED. // Name of the Instruction Class changed from S to XTYPE from V2/V3 to V4. class SInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = S_2op_tc_1_SLOT23> + : InstHexagon; // S Instruction Class in V2/V3. // XTYPE Instruction Class in V4. // Definition of the instruction class NOT CHANGED. // Name of the Instruction Class changed from S to XTYPE from V2/V3 to V4. class SInst_acc pattern = [], - string cstr = ""> - : SInst; + string cstr = "", InstrItinClass itin = S_3op_tc_1_SLOT23> + : SInst; // J Instruction Class in V2/V3/V4. // Definition of the instruction class NOT CHANGED. class JInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = J_tc_2early_SLOT23> + : InstHexagon; // JR Instruction Class in V2/V3/V4. // Definition of the instruction class NOT CHANGED. class JRInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = J_tc_2early_SLOT2> + : InstHexagon; // CR Instruction Class in V2/V3/V4. // Definition of the instruction class NOT CHANGED. class CRInst pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = CR_tc_2early_SLOT3> + : InstHexagon; let isCodeGenOnly = 1, isPseudo = 1 in class Endloop pattern = [], - string cstr = ""> - : InstHexagon; + string cstr = "", InstrItinClass itin = J_tc_2early_SLOT0123> + : InstHexagon; let isCodeGenOnly = 1, isPseudo = 1 in class Pseudo pattern = [], @@ -342,32 +342,33 @@ class PseudoM pattern = [], // // ALU32 patterns //. -class ALU32_rr pattern, - string cstr = ""> - : ALU32Inst; +class ALU32_rr pattern = [], + string cstr = "", InstrItinClass itin = ALU32_2op_tc_1_SLOT0123> + : ALU32Inst; -class ALU32_ir pattern, - string cstr = ""> - : ALU32Inst; +class ALU32_ir pattern = [], + string cstr = "", InstrItinClass itin = ALU32_2op_tc_1_SLOT0123> + : ALU32Inst; -class ALU32_ri pattern, - string cstr = ""> - : ALU32Inst; +class ALU32_ri pattern = [], + string cstr = "", InstrItinClass itin = ALU32_2op_tc_1_SLOT0123> + : ALU32Inst; + +class ALU32_ii pattern = [], + string cstr = "", InstrItinClass itin = ALU32_2op_tc_1_SLOT0123> + : ALU32Inst; -class ALU32_ii pattern, - string cstr = ""> - : ALU32Inst; // // ALU64 patterns. // -class ALU64_rr pattern, - string cstr = ""> - : ALU64Inst; +class ALU64_rr pattern = [], + string cstr = "", InstrItinClass itin = ALU64_tc_1_SLOT23> + : ALU64Inst; -class ALU64_ri pattern, - string cstr = ""> - : ALU64Inst; +class ALU64_ri pattern = [], + string cstr = "", InstrItinClass itin = ALU64_tc_1_SLOT23> + : ALU64Inst; // Post increment ST Instruction. class STInstPI pattern = [], -- cgit v1.2.3