diff --git a/llvm/lib/Target/R600/SIInstrInfo.td b/llvm/lib/Target/R600/SIInstrInfo.td index 1ca1f9f09098..f5df1acb3279 100644 --- a/llvm/lib/Target/R600/SIInstrInfo.td +++ b/llvm/lib/Target/R600/SIInstrInfo.td @@ -464,39 +464,31 @@ multiclass SOP2_SELECT_32 pattern> { opName#" $dst, $src0, $src1 [$scc]">; } -multiclass SOP2_32 pattern> { - def "" : SOP2_Pseudo ; +multiclass SOP2_m pattern> { - def _si : SOP2_Real_si ; + def "" : SOP2_Pseudo ; + + def _si : SOP2_Real_si ; + + def _vi : SOP2_Real_vi ; - def _vi : SOP2_Real_vi ; } -multiclass SOP2_64 pattern> { - def "" : SOP2_Pseudo ; +multiclass SOP2_32 pattern> : SOP2_m < + op, opName, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1), + opName#" $dst, $src0, $src1", pattern +>; - def _si : SOP2_Real_si ; - - def _vi : SOP2_Real_vi ; -} - -multiclass SOP2_64_32 pattern> { - def "" : SOP2_Pseudo ; - - def _si : SOP2_Real_si ; - - def _vi : SOP2_Real_vi ; -} +multiclass SOP2_64 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 pattern> : SOP2_m < + op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_32:$src1), + opName#" $dst, $src0, $src1", pattern +>; class SOPC_Helper op, RegisterOperand rc, ValueType vt, string opName, PatLeaf cond> : SOPC <