backport: re PR target/51393 (Wrong parameter type for _mm256_insert_epi64 in avxintrin.h)

Backported from mainline
	2011-12-04  Jérémie Detrey  <Jeremie.Detrey@loria.fr>

	PR target/51393
	* config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
	parameter as long long.

	2011-12-04  Uros Bizjak  <ubizjak@gmail.com>
		    Jérémie Detrey  <Jeremie.Detrey@loria.fr>

	PR target/51393
	* gcc.target/i386/pr51393.c: New test.

From-SVN: r182106
This commit is contained in:
Jakub Jelinek 2011-12-08 11:43:13 +01:00 committed by Jakub Jelinek
parent 00803b649b
commit d8c80dbf68
4 changed files with 41 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2011-12-08 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
PR target/51393
* config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
parameter as long long.
2011-11-07 Alan Modra <amodra@gmail.com>
PR target/30282

View File

@ -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);

View File

@ -1,3 +1,12 @@
2011-12-08 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
2011-12-04 Uros Bizjak <ubizjak@gmail.com>
Jérémie Detrey <Jeremie.Detrey@loria.fr>
PR target/51393
* gcc.target/i386/pr51393.c: New test.
2011-10-23 Uros Bizjak <ubizjak@gmail.com>
PR target/50788

View File

@ -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 <immintrin.h>
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 ();
}