The end result is a bunch more macro-ized patterns in the md file, and some missing patterns filled in. The widen_mult_even/odd hooks elide the need for specific sdot_prod patterns while allowing the same improved code sequence for other reductions.
I expect to be able to use the widen_mult_even/odd hooks elsewhere as well, but that patch sequence is not yet complete. Tested on x86-64-linux, {-msse2,-msse4}. Spot checked for -mavx2 and -mxop. Committed. r~ Richard Henderson (4): i386: Cleanup and unify widening multiply patterns i386: Use vpmacsdd for mulv4si3 i386: Add widen_multiply_even/odd builtins and hooks i386: Delete sse sdot_prod; add sdot_prodv4si for xop gcc/ChangeLog | 54 ++++++ gcc/config/i386/i386-builtin-types.def | 5 +- gcc/config/i386/i386-protos.h | 4 +- gcc/config/i386/i386.c | 308 +++++++++++++++++++++++++++----- gcc/config/i386/i386.md | 1 + gcc/config/i386/predicates.md | 7 - gcc/config/i386/sse.md | 282 +++++------------------------ 7 files changed, 368 insertions(+), 293 deletions(-) -- 1.7.10.2