From d8c80dbf68a848cc8699b57a7a786f123b653b39 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 8 Dec 2011 11:43:13 +0100 Subject: [PATCH] backport: re PR target/51393 (Wrong parameter type for _mm256_insert_epi64 in avxintrin.h) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Backported from mainline 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-04 Uros Bizjak Jérémie Detrey PR target/51393 * gcc.target/i386/pr51393.c: New test. From-SVN: r182106 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/avxintrin.h | 2 +- gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/gcc.target/i386/pr51393.c | 22 ++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr51393.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9dc88813e296..094c5aaf111d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2011-12-08 Jakub Jelinek + + Backported from mainline + 2011-12-04 Jérémie Detrey + + PR target/51393 + * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second + parameter as long long. + 2011-11-07 Alan Modra PR target/30282 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 0c59d5ccb4d4..4839a7d68fbf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2011-12-08 Jakub Jelinek + + Backported from mainline + 2011-12-04 Uros Bizjak + Jérémie Detrey + + PR target/51393 + * gcc.target/i386/pr51393.c: New test. + 2011-10-23 Uros Bizjak PR target/50788 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