From 067c17b293998a31c1b57e624a99b8108d697f22 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sun, 4 Dec 2011 14:23:48 +0100 Subject: [PATCH] re PR target/51393 (Wrong parameter type for _mm256_insert_epi64 in avxintrin.h) PR target/51393 * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second parameter as long long. testsuite/ChangeLog: PR target/51393 * gcc.target/i386/pr51393.c: New test. From-SVN: r181988 --- gcc/ChangeLog | 8 +++++++- gcc/config/i386/avxintrin.h | 2 +- gcc/testsuite/ChangeLog | 12 +++++++++--- gcc/testsuite/gcc.target/i386/pr51393.c | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr51393.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fdb61d09633f..770c4487f022 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-12-04 Jérémie Detrey + + PR target/51393 + * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second + parameter as long long. + 2011-12-02 Georg-Johann Lay PR target/51002 @@ -430,7 +436,7 @@ * config/rs6000/rs6000.md (probe_stack): Use explicit operand. * config/rs6000/rs6000.c (output_probe_stack_range): Likewise. -2011-09-14 Diego Novillo +2011-09-14 Diego Novillo * tree-vect-stmts.c (vect_transform_stmt): Remove unused local variable ORIG_SCALAR_STMT. diff --git a/gcc/config/i386/avxintrin.h b/gcc/config/i386/avxintrin.h index 8055cc607224..6d4213dc8bd5 100644 --- a/gcc/config/i386/avxintrin.h +++ b/gcc/config/i386/avxintrin.h @@ -759,7 +759,7 @@ _mm256_insert_epi8 (__m256i __X, int __D, int const __N) #ifdef __x86_64__ extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_insert_epi64 (__m256i __X, int __D, int const __N) +_mm256_insert_epi64 (__m256i __X, long long __D, int const __N) { __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1); __Y = _mm_insert_epi64 (__Y, __D, __N % 2); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f10b88d409b5..c06d1a907440 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-12-04 Uros Bizjak + Jérémie Detrey + + PR target/51393 + * gcc.target/i386/pr51393.c: New test. + 2011-12-03 Tobias Burnus PR fortran/50684 @@ -80,9 +86,9 @@ 2011-10-20 Uros Bizjak - * gcc.dg/ipa/ipa-sra-2.c: Add dg-require-effective-target - non_strict_align. - * gcc.dg/ipa/ipa-sra-6.c: Ditto. + * gcc.dg/ipa/ipa-sra-2.c: Add dg-require-effective-target + non_strict_align. + * gcc.dg/ipa/ipa-sra-6.c: Ditto. 2011-10-19 Jason Merrill diff --git a/gcc/testsuite/gcc.target/i386/pr51393.c b/gcc/testsuite/gcc.target/i386/pr51393.c new file mode 100644 index 000000000000..ac167396ee75 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr51393.c @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O -mavx" } */ + +#include "avx-check.h" +#include + +static void +__attribute__((noinline)) +avx_test (void) +{ + long long in = 0x800000000ll; + long long out; + + __m256i zero = _mm256_setzero_si256(); + __m256i tmp = _mm256_insert_epi64 (zero, in, 0); + out = _mm256_extract_epi64(tmp, 0); + + if (in != out) + abort (); +} -- 2.47.2