Author: ctopper Date: Sat Oct 20 12:28:52 2018 New Revision: 344862 URL: http://llvm.org/viewvc/llvm-project?rev=344862&view=rev Log: [X86] Add more intrinsics to match icc.
This adds _mm_loadu_epi8, _mm256_loadu_epi8, _mm512_loadu_epi8 _mm_loadu_epi16, _mm256_loadu_epi16, _mm512_loadu_epi16 _mm_storeu_epi8, _mm256_storeu_epi8, _mm512_storeu_epi8 _mm_storeu_epi16, _mm256_storeu_epi16, _mm512_storeu_epi16 Modified: cfe/trunk/lib/Headers/avx512bwintrin.h cfe/trunk/lib/Headers/avx512vlbwintrin.h cfe/trunk/test/CodeGen/avx512bw-builtins.c cfe/trunk/test/CodeGen/avx512vl-builtins.c cfe/trunk/test/CodeGen/avx512vlbw-builtins.c Modified: cfe/trunk/lib/Headers/avx512bwintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512bwintrin.h?rev=344862&r1=344861&r2=344862&view=diff ============================================================================== --- cfe/trunk/lib/Headers/avx512bwintrin.h (original) +++ cfe/trunk/lib/Headers/avx512bwintrin.h Sat Oct 20 12:28:52 2018 @@ -1747,6 +1747,15 @@ _mm512_kunpackw (__mmask32 __A, __mmask3 (__mmask32) __B); } +static __inline __m512i __DEFAULT_FN_ATTRS512 +_mm512_loadu_epi16 (void const *__P) +{ + struct __loadu_epi16 { + __m512i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi16*)__P)->__v; +} + static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P) { @@ -1764,6 +1773,15 @@ _mm512_maskz_loadu_epi16 (__mmask32 __U, (__mmask32) __U); } +static __inline __m512i __DEFAULT_FN_ATTRS512 +_mm512_loadu_epi8 (void const *__P) +{ + struct __loadu_epi8 { + __m512i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi8*)__P)->__v; +} + static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P) { @@ -1780,6 +1798,16 @@ _mm512_maskz_loadu_epi8 (__mmask64 __U, _mm512_setzero_si512 (), (__mmask64) __U); } + +static __inline void __DEFAULT_FN_ATTRS512 +_mm512_storeu_epi16 (void *__P, __m512i __A) +{ + struct __storeu_epi16 { + __m512i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi16*)__P)->__v = __A; +} + static __inline__ void __DEFAULT_FN_ATTRS512 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A) { @@ -1788,6 +1816,15 @@ _mm512_mask_storeu_epi16 (void *__P, __m (__mmask32) __U); } +static __inline void __DEFAULT_FN_ATTRS512 +_mm512_storeu_epi8 (void *__P, __m512i __A) +{ + struct __storeu_epi8 { + __m512i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi8*)__P)->__v = __A; +} + static __inline__ void __DEFAULT_FN_ATTRS512 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) { Modified: cfe/trunk/lib/Headers/avx512vlbwintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512vlbwintrin.h?rev=344862&r1=344861&r2=344862&view=diff ============================================================================== --- cfe/trunk/lib/Headers/avx512vlbwintrin.h (original) +++ cfe/trunk/lib/Headers/avx512vlbwintrin.h Sat Oct 20 12:28:52 2018 @@ -2297,6 +2297,15 @@ _mm256_maskz_set1_epi8 (__mmask32 __M, c (__v32qi) _mm256_setzero_si256()); } +static __inline __m128i __DEFAULT_FN_ATTRS128 +_mm_loadu_epi16 (void const *__P) +{ + struct __loadu_epi16 { + __m128i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi16*)__P)->__v; +} + static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P) { @@ -2314,6 +2323,15 @@ _mm_maskz_loadu_epi16 (__mmask8 __U, voi (__mmask8) __U); } +static __inline __m256i __DEFAULT_FN_ATTRS256 +_mm256_loadu_epi16 (void const *__P) +{ + struct __loadu_epi16 { + __m256i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi16*)__P)->__v; +} + static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P) { @@ -2331,6 +2349,15 @@ _mm256_maskz_loadu_epi16 (__mmask16 __U, (__mmask16) __U); } +static __inline __m128i __DEFAULT_FN_ATTRS128 +_mm_loadu_epi8 (void const *__P) +{ + struct __loadu_epi8 { + __m128i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi8*)__P)->__v; +} + static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P) { @@ -2348,6 +2375,15 @@ _mm_maskz_loadu_epi8 (__mmask16 __U, voi (__mmask16) __U); } +static __inline __m256i __DEFAULT_FN_ATTRS256 +_mm256_loadu_epi8 (void const *__P) +{ + struct __loadu_epi8 { + __m256i __v; + } __attribute__((__packed__, __may_alias__)); + return ((struct __loadu_epi8*)__P)->__v; +} + static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P) { @@ -2364,7 +2400,17 @@ _mm256_maskz_loadu_epi8 (__mmask32 __U, _mm256_setzero_si256 (), (__mmask32) __U); } -static __inline__ void __DEFAULT_FN_ATTRS256 + +static __inline void __DEFAULT_FN_ATTRS128 +_mm_storeu_epi16 (void *__P, __m128i __A) +{ + struct __storeu_epi16 { + __m128i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi16*)__P)->__v = __A; +} + +static __inline__ void __DEFAULT_FN_ATTRS128 _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A) { __builtin_ia32_storedquhi128_mask ((__v8hi *) __P, @@ -2372,6 +2418,15 @@ _mm_mask_storeu_epi16 (void *__P, __mmas (__mmask8) __U); } +static __inline void __DEFAULT_FN_ATTRS256 +_mm256_storeu_epi16 (void *__P, __m256i __A) +{ + struct __storeu_epi16 { + __m256i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi16*)__P)->__v = __A; +} + static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A) { @@ -2380,6 +2435,15 @@ _mm256_mask_storeu_epi16 (void *__P, __m (__mmask16) __U); } +static __inline void __DEFAULT_FN_ATTRS128 +_mm_storeu_epi8 (void *__P, __m128i __A) +{ + struct __storeu_epi8 { + __m128i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi8*)__P)->__v = __A; +} + static __inline__ void __DEFAULT_FN_ATTRS128 _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A) { @@ -2388,6 +2452,15 @@ _mm_mask_storeu_epi8 (void *__P, __mmask (__mmask16) __U); } +static __inline void __DEFAULT_FN_ATTRS256 +_mm256_storeu_epi8 (void *__P, __m256i __A) +{ + struct __storeu_epi8 { + __m256i __v; + } __attribute__((__packed__, __may_alias__)); + ((struct __storeu_epi8*)__P)->__v = __A; +} + static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A) { Modified: cfe/trunk/test/CodeGen/avx512bw-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512bw-builtins.c?rev=344862&r1=344861&r2=344862&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512bw-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512bw-builtins.c Sat Oct 20 12:28:52 2018 @@ -2112,6 +2112,13 @@ __mmask32 test_mm512_kunpackw(__m512i __ return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F); } +__m512i test_mm512_loadu_epi16 (void *__P) +{ + // CHECK-LABEL: @test_mm512_loadu_epi16 + // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_loadu_epi16 (__P); +} + __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) { // CHECK-LABEL: @test_mm512_mask_loadu_epi16 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}}) @@ -2124,6 +2131,13 @@ __m512i test_mm512_maskz_loadu_epi16(__m return _mm512_maskz_loadu_epi16(__U, __P); } +__m512i test_mm512_loadu_epi8 (void *__P) +{ + // CHECK-LABEL: @test_mm512_loadu_epi8 + // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_loadu_epi8 (__P); +} + __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) { // CHECK-LABEL: @test_mm512_mask_loadu_epi8 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) @@ -2135,11 +2149,19 @@ __m512i test_mm512_maskz_loadu_epi8(__mm // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) return _mm512_maskz_loadu_epi8(__U, __P); } + +void test_mm512_storeu_epi16(void *__P, __m512i __A) { + // CHECK-LABEL: @test_mm512_storeu_epi16 + // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_storeu_epi16(__P, __A); +} + void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_storeu_epi16 // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}) - return _mm512_mask_storeu_epi16(__P, __U, __A); + return _mm512_mask_storeu_epi16(__P, __U, __A); } + __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { // CHECK-LABEL: @test_mm512_test_epi8_mask // CHECK: and <16 x i32> %{{.*}}, %{{.*}} @@ -2147,6 +2169,12 @@ __mmask64 test_mm512_test_epi8_mask(__m5 return _mm512_test_epi8_mask(__A, __B); } +void test_mm512_storeu_epi8(void *__P, __m512i __A) { + // CHECK-LABEL: @test_mm512_storeu_epi8 + // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}} + return _mm512_storeu_epi8(__P, __A); +} + void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) { // CHECK-LABEL: @test_mm512_mask_storeu_epi8 // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}) Modified: cfe/trunk/test/CodeGen/avx512vl-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=344862&r1=344861&r2=344862&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vl-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vl-builtins.c Sat Oct 20 12:28:52 2018 @@ -7052,10 +7052,10 @@ void test_mm256_mask_store_ps(void *__P, return _mm256_mask_store_ps(__P, __U, __A); } -void test_mm_storeu_epi64(void *__P, __m128i __A) { - // CHECK-LABEL: @test_mm_storeu_epi64 - // CHECK: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} - return _mm_storeu_epi64(__P, __A); +void test_mm_storeu_epi64(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi64 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi64(__p, __a); } void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) { Modified: cfe/trunk/test/CodeGen/avx512vlbw-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vlbw-builtins.c?rev=344862&r1=344861&r2=344862&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vlbw-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vlbw-builtins.c Sat Oct 20 12:28:52 2018 @@ -2465,6 +2465,12 @@ __m256i test_mm256_maskz_mov_epi8(__mmas return _mm256_maskz_mov_epi8(__U, __A); } +__m128i test_mm_loadu_epi16(void const *__P) { + // CHECK-LABEL: @test_mm_loadu_epi16 + // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_loadu_epi16(__P); +} + __m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) { // CHECK-LABEL: @test_mm_mask_loadu_epi16 // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}}) @@ -2477,6 +2483,12 @@ __m128i test_mm_maskz_loadu_epi16(__mmas return _mm_maskz_loadu_epi16(__U, __P); } +__m256i test_mm256_loadu_epi16(void const *__P) { + // CHECK-LABEL: @test_mm256_loadu_epi16 + // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_loadu_epi16(__P); +} + __m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) { // CHECK-LABEL: @test_mm256_mask_loadu_epi16 // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}}) @@ -2489,6 +2501,12 @@ __m256i test_mm256_maskz_loadu_epi16(__m return _mm256_maskz_loadu_epi16(__U, __P); } +__m128i test_mm_loadu_epi8(void const *__P) { + // CHECK-LABEL: @test_mm_loadu_epi8 + // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_loadu_epi8(__P); +} + __m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) { // CHECK-LABEL: @test_mm_mask_loadu_epi8 // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}}) @@ -2501,6 +2519,12 @@ __m128i test_mm_maskz_loadu_epi8(__mmask return _mm_maskz_loadu_epi8(__U, __P); } +__m256i test_mm256_loadu_epi8(void const *__P) { + // CHECK-LABEL: @test_mm256_loadu_epi8 + // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_loadu_epi8(__P); +} + __m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) { // CHECK-LABEL: @test_mm256_mask_loadu_epi8 // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}}) @@ -2513,24 +2537,48 @@ __m256i test_mm256_maskz_loadu_epi8(__mm return _mm256_maskz_loadu_epi8(__U, __P); } +void test_mm_storeu_epi16(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi16 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi16(__p, __a); +} + void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_storeu_epi16 // CHECK: @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %{{.*}}, <8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}) return _mm_mask_storeu_epi16(__P, __U, __A); } +void test_mm256_storeu_epi16(void *__P, __m256i __A) { + // CHECK-LABEL: @test_mm256_storeu_epi16 + // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_storeu_epi16(__P, __A); +} + void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_storeu_epi16 // CHECK: @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %{{.*}}, <16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}) return _mm256_mask_storeu_epi16(__P, __U, __A); } +void test_mm_storeu_epi8(void *__p, __m128i __a) { + // check-label: @test_mm_storeu_epi8 + // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}} + return _mm_storeu_epi8(__p, __a); +} + void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_storeu_epi8 // CHECK: @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %{{.*}}, <16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}) return _mm_mask_storeu_epi8(__P, __U, __A); } +void test_mm256_storeu_epi8(void *__P, __m256i __A) { + // CHECK-LABEL: @test_mm256_storeu_epi8 + // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}} + return _mm256_storeu_epi8(__P, __A); +} + void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_storeu_epi8 // CHECK: @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %{{.*}}, <32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits