Patchwork Teach the vectorizer about multiple sizes

login
register
mail settings
Submitter Richard Guenther
Date Oct. 6, 2010, 1:05 p.m.
Message ID <alpine.LNX.2.00.1010061505070.8982@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/66908/
State New
Headers show

Comments

Richard Guenther - Oct. 6, 2010, 1:05 p.m.
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.

Patch

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;
            }