Index: lib/Target/AMDGPU/SIInstructions.td =================================================================== --- lib/Target/AMDGPU/SIInstructions.td +++ lib/Target/AMDGPU/SIInstructions.td @@ -478,23 +478,18 @@ (V_CNDMASK_B32_e64 $src2, $src1, $src0) >; -// Pattern for V_MAC_F16 -def : Pat < - (f16 (fmad (VOP3NoMods0 f16:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod), - (VOP3NoMods f16:$src1, i32:$src1_modifiers), - (VOP3NoMods f16:$src2, i32:$src2_modifiers))), - (V_MAC_F16_e64 $src0_modifiers, $src0, $src1_modifiers, $src1, - $src2_modifiers, $src2, $clamp, $omod) ->; - -// Pattern for V_MAC_F32 -def : Pat < - (f32 (fmad (VOP3NoMods0 f32:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod), - (VOP3NoMods f32:$src1, i32:$src1_modifiers), - (VOP3NoMods f32:$src2, i32:$src2_modifiers))), - (V_MAC_F32_e64 $src0_modifiers, $src0, $src1_modifiers, $src1, - $src2_modifiers, $src2, $clamp, $omod) ->; +multiclass FMADPat { + def : Pat < + (vt (fmad (VOP3NoMods0 vt:$src0, i32:$src0_modifiers, i1:$clamp, i32:$omod), + (VOP3NoMods vt:$src1, i32:$src1_modifiers), + (VOP3NoMods vt:$src2, i32:$src2_modifiers))), + (inst $src0_modifiers, $src0, $src1_modifiers, $src1, + $src2_modifiers, $src2, $clamp, $omod) + >; +} + +defm : FMADPat; +defm : FMADPat; /********** ============================================ **********/ /********** Extraction, Insertion, Building and Casting **********/