From patchwork Mon Jun 14 17:04:22 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: PATCH: PR target/44534: _builtin_ia32_vextractf128_si256(X, N) acts as if N was always set to 1 Date: Mon, 14 Jun 2010 07:04:22 -0000 From: "H.J. Lu" X-Patchwork-Id: 55569 Message-Id: <20100614170422.GA15726@intel.com> To: gcc-patches@gcc.gnu.org Cc: Uros Bizjak Hi, This patch fixes a typo in AVX vec_extract_lo_* patterns. OK for trunk, 4.5 and 4.4? Thanks. H.J. --- gcc/ 2010-06-14 H.J. Lu PR target/44534 * config/i386/sse.md (vec_extract_lo_): Replace 0x1 with 0x0. (vec_extract_lo_v16hi): Likewise. (vec_extract_lo_v32qi): Likewise. gcc/testsuite/ 2010-06-14 H.J. Lu PR target/44534 * gcc.target/i386/avx-vextractf128-256-3.c: New. * gcc.target/i386/avx-vextractf128-256-4.c: Likewise. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index d154f07..7625906 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -4213,7 +4213,7 @@ (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)])))] "TARGET_AVX" - "vextractf128\t{$0x1, %1, %0|%0, %1, 0x1}" + "vextractf128\t{$0x0, %1, %0|%0, %1, 0x0}" [(set_attr "type" "sselog") (set_attr "prefix_extra" "1") (set_attr "length_immediate" "1") @@ -4245,7 +4245,7 @@ (const_int 4) (const_int 5) (const_int 6) (const_int 7)])))] "TARGET_AVX" - "vextractf128\t{$0x1, %1, %0|%0, %1, 0x1}" + "vextractf128\t{$0x0, %1, %0|%0, %1, 0x0}" [(set_attr "type" "sselog") (set_attr "prefix_extra" "1") (set_attr "length_immediate" "1") @@ -4283,7 +4283,7 @@ (const_int 12) (const_int 13) (const_int 14) (const_int 15)])))] "TARGET_AVX" - "vextractf128\t{$0x1, %1, %0|%0, %1, 0x1}" + "vextractf128\t{$0x0, %1, %0|%0, %1, 0x0}" [(set_attr "type" "sselog") (set_attr "prefix_extra" "1") (set_attr "length_immediate" "1") --- /dev/null 2010-06-03 08:38:07.730259022 -0700 +++ gcc-release/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-3.c 2010-06-14 09:49:51.621497536 -0700 @@ -0,0 +1,7 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O2 -mavx" } */ + +#define OFFSET 0 + +#include "avx-vextractf128-256-1.c" --- /dev/null 2010-06-03 08:38:07.730259022 -0700 +++ gcc-release/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-4.c 2010-06-14 09:50:05.188629783 -0700 @@ -0,0 +1,7 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O2 -mavx" } */ + +#define OFFSET 0 + +#include "avx-vextractf128-256-2.c"