Use fmadd for multiply-and-add instructions.
authorDavid Given <dg@cowlark.com>
Mon, 31 Oct 2016 18:52:17 +0000 (19:52 +0100)
committerDavid Given <dg@cowlark.com>
Mon, 31 Oct 2016 18:52:17 +0000 (19:52 +0100)
mach/powerpc/mcg/table

index 61729d3..159d033 100644 (file)
@@ -711,6 +711,14 @@ PATTERNS
     FPU4R(DIVF.F, "fdivs")
     FPU8R(DIVF.D, "fdiv")
 
+    out:(double)reg = ADDF.D(MULF.D(m1:(double)reg, m2:(double)reg), m3:(double)reg)
+        emit "fmadd %out, %m1, %m2, %m3"
+        cost 4;
+
+    out:(double)reg = ADDF.D(m3:(double)reg, MULF.D(m1:(double)reg, m2:(double)reg))
+        emit "fmadd %out, %m1, %m2, %m3"
+        cost 4;
+
     out:(float)reg = NEGF.F(left:(float)reg)
         emit "fneg %out, %left"
         cost 4;