[PATCH] Teach the vectorizer about multiple sizes

Richard Guenther rguenther@suse.de
Wed Oct 6 13:06:00 GMT 2010


On Wed, 6 Oct 2010, Richard Guenther wrote:

> 
> This teaches the vectorizer about multiple possible SIMD vector sizes
> as for example supported by x86 with AVX and SSE.  This is the least
> intrusive approach of adding support for autovectorizing using AVX
> without regressing compared to what loops are vectorized with SSE
> (because we'll fall back to SSE if AVX doesn't work).
> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu.
> 
> I also built SPEC CPU 2006 with -mavx and fixed the fallout - a
> bogus builtin used for V8SF -> V8SI vectorization and us rejecting
> shuffle masks (int!) for 32byte floating-point shuffles (oh well ...).
> 
> Ok for trunk?
> 
> Thanks,
> Richard.

And this is actually the i386.c hunk missing from the previous post ...

> 2010-10-06  Richard Guenther  <rguenther@suse.de>
> 
...
> 	* config/i386/i386.c (ix86_vectorize_builtin_conversion): Fix
> 	V8SF to V8SI conversion builtin.

Index: gcc/config/i386/i386.c
===================================================================
--- gcc/config/i386/i386.c.orig 2010-10-06 14:29:58.000000000 +0200
+++ gcc/config/i386/i386.c      2010-10-06 14:30:13.000000000 +0200
@@ -26272,7 +26272,7 @@ ix86_vectorize_builtin_conversion (unsig
            case V8SFmode:
              return (TYPE_UNSIGNED (src_type)
                      ? NULL_TREE
-                     : ix86_builtins[IX86_BUILTIN_CVTDQ2PS]);
+                     : ix86_builtins[IX86_BUILTIN_CVTDQ2PS256]);
            default:
              return NULL_TREE;
            }



More information about the Gcc-patches mailing list