From 1bc85062a0df98e1e672421fc34b424a7eb8b824 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 21 Feb 2011 21:04:57 +0100 Subject: [PATCH] re PR target/47840 (incorrect _mm256_insert_epi{32,64} implementations) PR target/47840 * config/i386/avxintrin.h (_mm256_insert_epi32): Use _mm_insert_epi32. (_mm256_insert_epi64): Use _mm_insert_epi64. From-SVN: r170373 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/avxintrin.h | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76fd7eb5944c..1dc26a0cb8fd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-02-21 Uros Bizjak + + PR target/47840 + * config/i386/avxintrin.h (_mm256_insert_epi32): Use _mm_insert_epi32. + (_mm256_insert_epi64): Use _mm_insert_epi64. + 2011-02-19 Alexandre Oliva PR tree-optimization/46620 diff --git a/gcc/config/i386/avxintrin.h b/gcc/config/i386/avxintrin.h index 70bfce1a2746..8055cc607224 100644 --- a/gcc/config/i386/avxintrin.h +++ b/gcc/config/i386/avxintrin.h @@ -737,7 +737,7 @@ extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __arti _mm256_insert_epi32 (__m256i __X, int __D, int const __N) { __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2); - __Y = _mm_insert_epi16 (__Y, __D, __N % 4); + __Y = _mm_insert_epi32 (__Y, __D, __N % 4); return _mm256_insertf128_si256 (__X, __Y, __N >> 2); } @@ -762,7 +762,7 @@ extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __arti _mm256_insert_epi64 (__m256i __X, int __D, int const __N) { __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1); - __Y = _mm_insert_epi16 (__Y, __D, __N % 2); + __Y = _mm_insert_epi64 (__Y, __D, __N % 2); return _mm256_insertf128_si256 (__X, __Y, __N >> 1); } #endif -- 2.47.2