<div dir="ltr"><div><div><div><div><div><div>If I have my FMA intrinsics story straight now (thanks for the explanation, Hal!), I think it raises another question about IR canonicalization (and may affect the proposed revision to IR FMF):<br><br>define float @foo(float %a, float %b, float %c) {<br>  %mul = fmul fast float %a, %b     ; using 'fast' because there is no 'fma' flag<br>  %add = fadd fast float %mul, %c<br>  ret float %add<br>}<br><br></div>Should this be:<br><br>define float @goo(float %a, float %b, float %c) {<br>  %maybe.fma = call fast float @llvm.fmuladd.f32(float %a, float %b, float %c)<br>  ret float %maybe.fma<br>}<br>declare float @llvm.fmuladd.f32(float %a, float %b, float %c)<br><br></div><br></div></div></div></div></div>