diff --git a/lib/Target/X86/X86InstrFMA.td b/lib/Target/X86/X86InstrFMA.td index 43d8fd66be6..cdabc410a22 100644 --- a/lib/Target/X86/X86InstrFMA.td +++ b/lib/Target/X86/X86InstrFMA.td @@ -16,60 +16,39 @@ //===----------------------------------------------------------------------===// let Constraints = "$src1 = $dst" in { -multiclass fma3p_rm opc, string OpcodeStr> { -let neverHasSideEffects = 1 in { - def r : FMA3; - let mayLoad = 1 in - def m : FMA3; - def rY : FMA3; - let mayLoad = 1 in - def mY : FMA3; -} // neverHasSideEffects = 1 -} - -// Intrinsic for 213 pattern -multiclass fma3p_rm_int opc, string OpcodeStr, - PatFrag MemFrag128, PatFrag MemFrag256, - SDNode Op213, ValueType OpVT128, ValueType OpVT256> { +multiclass fma3p_rm opc, string OpcodeStr, + PatFrag MemFrag128, PatFrag MemFrag256, + ValueType OpVT128, ValueType OpVT256, + SDPatternOperator Op = null_frag, bit MayLoad = 1> { def r : FMA3; + let mayLoad = MayLoad in def m : FMA3; def rY : FMA3; + let mayLoad = MayLoad in def mY : FMA3; } } // Constraints = "$src1 = $dst" @@ -78,13 +57,17 @@ multiclass fma3p_forms opc132, bits<8> opc213, bits<8> opc231, string OpcodeStr, string PackTy, PatFrag MemFrag128, PatFrag MemFrag256, SDNode Op, ValueType OpTy128, ValueType OpTy256> { - defm r213 : fma3p_rm_int ; - defm r132 : fma3p_rm ; - defm r231 : fma3p_rm ; + defm r213 : fma3p_rm; +let neverHasSideEffects = 1 in { + defm r132 : fma3p_rm; + defm r231 : fma3p_rm; +} // neverHasSideEffects = 1 } // Fused Multiply-Add