From 18700970e59b69e2d60fbcd829c3640c006f5e5a Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sun, 29 May 2016 18:49:08 +0000 Subject: [PATCH] [X86][SSE] Make unsigned integer vector types generally available As discussed on http://reviews.llvm.org/D20684, move the unsigned integer vector types used for zero extension to make them available for general use. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271187 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Headers/avx2intrin.h | 6 ------ lib/Headers/emmintrin.h | 6 ++++++ lib/Headers/smmintrin.h | 6 ------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/Headers/avx2intrin.h b/lib/Headers/avx2intrin.h index e025d6f9e2..029199e4cd 100644 --- a/lib/Headers/avx2intrin.h +++ b/lib/Headers/avx2intrin.h @@ -402,42 +402,36 @@ _mm256_cvtepi32_epi64(__m128i __V) static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu8_epi16(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector((__v16qu)__V, __v16hi); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu8_epi32(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8si); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu8_epi64(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4di); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu16_epi32(__m128i __V) { - typedef unsigned short __v8hu __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector((__v8hu)__V, __v8si); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu16_epi64(__m128i __V) { - typedef unsigned short __v8hu __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4di); } static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvtepu32_epi64(__m128i __V) { - typedef unsigned int __v4su __attribute__((__vector_size__(16))); return (__m256i)__builtin_convertvector((__v4su)__V, __v4di); } diff --git a/lib/Headers/emmintrin.h b/lib/Headers/emmintrin.h index f9a1a1a005..a7669b7ea8 100644 --- a/lib/Headers/emmintrin.h +++ b/lib/Headers/emmintrin.h @@ -35,6 +35,12 @@ typedef long long __v2di __attribute__ ((__vector_size__ (16))); typedef short __v8hi __attribute__((__vector_size__(16))); typedef char __v16qi __attribute__((__vector_size__(16))); +/* Unsigned types */ +typedef unsigned long long __v2du __attribute__ ((__vector_size__ (16))); +typedef unsigned int __v4su __attribute__((__vector_size__(16))); +typedef unsigned short __v8hu __attribute__((__vector_size__(16))); +typedef unsigned char __v16qu __attribute__((__vector_size__(16))); + /* We need an explicitly signed variant for char. Note that this shouldn't * appear in the interface though. */ typedef signed char __v16qs __attribute__((__vector_size__(16))); diff --git a/lib/Headers/smmintrin.h b/lib/Headers/smmintrin.h index a45a24c473..37abb7001d 100644 --- a/lib/Headers/smmintrin.h +++ b/lib/Headers/smmintrin.h @@ -324,42 +324,36 @@ _mm_cvtepi32_epi64(__m128i __V) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi16(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8hi); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi32(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4si); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi64(__m128i __V) { - typedef unsigned char __v16qu __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1), __v2di); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu16_epi32(__m128i __V) { - typedef unsigned short __v8hu __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4si); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu16_epi64(__m128i __V) { - typedef unsigned short __v8hu __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1), __v2di); } static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu32_epi64(__m128i __V) { - typedef unsigned int __v4su __attribute__((__vector_size__(16))); return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v4su)__V, (__v4su)__V, 0, 1), __v2di); } -- 2.40.0