diff --git a/lib/Target/Hexagon/HexagonInstrInfo.td b/lib/Target/Hexagon/HexagonInstrInfo.td index e70747df811..1692a75e69e 100644 --- a/lib/Target/Hexagon/HexagonInstrInfo.td +++ b/lib/Target/Hexagon/HexagonInstrInfo.td @@ -14,59 +14,6 @@ include "HexagonInstrFormats.td" include "HexagonOperands.td" -// Addressing modes. -def ADDRrr : ComplexPattern; -def ADDRri : ComplexPattern; -def ADDRriS11_0 : ComplexPattern; -def ADDRriS11_1 : ComplexPattern; -def ADDRriS11_2 : ComplexPattern; -def ADDRriS11_3 : ComplexPattern; -def ADDRriU6_0 : ComplexPattern; -def ADDRriU6_1 : ComplexPattern; -def ADDRriU6_2 : ComplexPattern; - -// Address operands. -def MEMrr : Operand { - let PrintMethod = "printMEMrrOperand"; - let MIOperandInfo = (ops IntRegs, IntRegs); -} - -// Address operands -def MEMri : Operand { - let PrintMethod = "printMEMriOperand"; - let MIOperandInfo = (ops IntRegs, IntRegs); -} - -def MEMri_s11_2 : Operand, - ComplexPattern { - let PrintMethod = "printMEMriOperand"; - let MIOperandInfo = (ops IntRegs, s11Imm); -} - -def FrameIndex : Operand { - let PrintMethod = "printFrameIndexOperand"; - let MIOperandInfo = (ops IntRegs, s11Imm); -} - -let PrintMethod = "printGlobalOperand" in - def globaladdress : Operand; - -let PrintMethod = "printJumpTable" in - def jumptablebase : Operand; - -def brtarget : Operand; -def calltarget : Operand; - -def bblabel : Operand; -def bbl : SDNode<"ISD::BasicBlock", SDTPtrLeaf , [], "BasicBlockSDNode">; - -def symbolHi32 : Operand { - let PrintMethod = "printSymbolHi"; -} -def symbolLo32 : Operand { - let PrintMethod = "printSymbolLo"; -} - // Multi-class for logical operators. multiclass ALU32_rr_ri { def rr : ALU32_rr<(outs IntRegs:$dst), (ins IntRegs:$b, IntRegs:$c), diff --git a/lib/Target/Hexagon/HexagonOperands.td b/lib/Target/Hexagon/HexagonOperands.td index 4c51b0ec439..c79d78f2108 100644 --- a/lib/Target/Hexagon/HexagonOperands.td +++ b/lib/Target/Hexagon/HexagonOperands.td @@ -799,3 +799,60 @@ def u6_3ExtPred : PatLeaf<(i32 imm), [{ return isConstExtProfitable(Node) && isUInt<32>(v) && ((v % 8) == 0); } }]>; + +// Addressing modes. + +def ADDRrr : ComplexPattern; +def ADDRri : ComplexPattern; +def ADDRriS11_0 : ComplexPattern; +def ADDRriS11_1 : ComplexPattern; +def ADDRriS11_2 : ComplexPattern; +def ADDRriS11_3 : ComplexPattern; +def ADDRriU6_0 : ComplexPattern; +def ADDRriU6_1 : ComplexPattern; +def ADDRriU6_2 : ComplexPattern; + +// Address operands. + +def MEMrr : Operand { + let PrintMethod = "printMEMrrOperand"; + let MIOperandInfo = (ops IntRegs, IntRegs); +} + +def MEMri : Operand { + let PrintMethod = "printMEMriOperand"; + let MIOperandInfo = (ops IntRegs, IntRegs); +} + +def MEMri_s11_2 : Operand, + ComplexPattern { + let PrintMethod = "printMEMriOperand"; + let MIOperandInfo = (ops IntRegs, s11Imm); +} + +def FrameIndex : Operand { + let PrintMethod = "printFrameIndexOperand"; + let MIOperandInfo = (ops IntRegs, s11Imm); +} + +let PrintMethod = "printGlobalOperand" in { + def globaladdress : Operand; + def globaladdressExt : Operand; +} + +let PrintMethod = "printJumpTable" in +def jumptablebase : Operand; + +def brtarget : Operand; +def brtargetExt : Operand; +def calltarget : Operand; + +def bblabel : Operand; +def bbl : SDNode<"ISD::BasicBlock", SDTPtrLeaf , [], "BasicBlockSDNode">; + +def symbolHi32 : Operand { + let PrintMethod = "printSymbolHi"; +} +def symbolLo32 : Operand { + let PrintMethod = "printSymbolLo"; +}