diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2014-12-16 15:59:16 -0500 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2014-12-30 10:57:55 -0500 |
commit | 7063222796127f7742e47f67c92f8fc8382ece1a (patch) | |
tree | 8de21bbe773ccb238b756fdb700d22776c7d2866 | |
parent | ba3a2784294fc69230865d7dffb8fff9aaf49220 (diff) |
R600/SI: Refactor SOP2 definitions
-rw-r--r-- | lib/Target/R600/SIInstrInfo.td | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td index b13e4666b4d..24d005e7753 100644 --- a/lib/Target/R600/SIInstrInfo.td +++ b/lib/Target/R600/SIInstrInfo.td @@ -464,39 +464,31 @@ multiclass SOP2_SELECT_32 <sop2 op, string opName, list<dag> pattern> { opName#" $dst, $src0, $src1 [$scc]", pattern>; } -multiclass SOP2_32 <sop2 op, string opName, list<dag> pattern> { - def "" : SOP2_Pseudo <opName, (outs SReg_32:$dst), - (ins SSrc_32:$src0, SSrc_32:$src1), pattern>; - - def _si : SOP2_Real_si <op, opName, (outs SReg_32:$dst), - (ins SSrc_32:$src0, SSrc_32:$src1), opName#" $dst, $src0, $src1", pattern>; +multiclass SOP2_m <sop2 op, string opName, dag outs, dag ins, string asm, + list<dag> pattern> { - def _vi : SOP2_Real_vi <op, opName, (outs SReg_32:$dst), - (ins SSrc_32:$src0, SSrc_32:$src1), opName#" $dst, $src0, $src1", pattern>; -} + def "" : SOP2_Pseudo <opName, outs, ins, pattern>; -multiclass SOP2_64 <sop2 op, string opName, list<dag> pattern> { - def "" : SOP2_Pseudo <opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_64:$src1), pattern>; + def _si : SOP2_Real_si <op, opName, outs, ins, asm, []>; - def _si : SOP2_Real_si <op, opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_64:$src1), opName#" $dst, $src0, $src1", pattern>; + def _vi : SOP2_Real_vi <op, opName, outs, ins, asm, []>; - def _vi : SOP2_Real_vi <op, opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_64:$src1), opName#" $dst, $src0, $src1", pattern>; } -multiclass SOP2_64_32 <sop2 op, string opName, list<dag> pattern> { - def "" : SOP2_Pseudo <opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_32:$src1), pattern>; - - def _si : SOP2_Real_si <op, opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_32:$src1), opName#" $dst, $src0, $src1", pattern>; +multiclass SOP2_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m < + op, opName, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1), + opName#" $dst, $src0, $src1", pattern +>; - def _vi : SOP2_Real_vi <op, opName, (outs SReg_64:$dst), - (ins SSrc_64:$src0, SSrc_32:$src1), opName#" $dst, $src0, $src1", pattern>; -} +multiclass SOP2_64 <sop2 op, string opName, list<dag> pattern> : SOP2_m < + op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_64:$src1), + opName#" $dst, $src0, $src1", pattern +>; +multiclass SOP2_64_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m < + op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_32:$src1), + opName#" $dst, $src0, $src1", pattern +>; class SOPC_Helper <bits<7> op, RegisterOperand rc, ValueType vt, string opName, PatLeaf cond> : SOPC < |