Message ID | EB4625145972F94C9680D8CADD6516152A07230F@sausexdag04.amd.com |
---|---|
State | New |
Headers | show |
On Thu, Aug 16, 2012 at 1:43 PM, Gopalasubramanian, Ganesh <Ganesh.Gopalasubramanian@amd.com> wrote: >> This won't work, since we have to prefer FMA3 also in case when only "-mfma -mfma4" without -mtune=XX is used. >> We can add TARGET_FMA_BOTH though, but I doubt there will ever be target that implements both insn sets without preferences. > > Preferring FMA3 over FMA4 might not do good always. For instance, with increased register pressure FMA3 can be used. > But, when we have more registers at our disposal, fma4 if used might do good by avoiding extra reload. > IMO, when preference of FMA instructions is adjudged by register pressure, we may need some functionality to support that. > > So, ideally for bdver2, we like to have both fma and fma4 getting generated with options "-mfma -mfma4". Yes, now it can also work that way. Current insn generation can be trivially changed now, just change "fma4" condition for "enabled" attribute in i386.md. I will wait for your recommendation. Uros.
Index: i386.md =================================================================== --- i386.md (revision 190362) +++ i386.md (working copy) @@ -659,6 +659,9 @@ (eq_attr "isa" "noavx2") (symbol_ref "!TARGET_AVX2") (eq_attr "isa" "bmi2") (symbol_ref "TARGET_BMI2") (eq_attr "isa" "fma") (symbol_ref "TARGET_FMA") + ;; Disable generation of FMA4 instructions for generic code + ;; since FMA3 is preferred for targets that implement both + ;; instruction sets. (eq_attr "isa" "fma4") (symbol_ref "TARGET_FMA4 && !TARGET_FMA") ]