From 22c47e606a07e91336d3408477fde62b61aee1c4 Mon Sep 17 00:00:00 2001 From: Michael Zuckerman Date: Thu, 26 May 2016 14:32:11 +0000 Subject: [PATCH] Adding missing _mm512_castsi512_si256 intrinsic. llvm-svn: 270851 --- clang/lib/Headers/avx512fintrin.h | 6 ++++++ clang/test/CodeGen/avx512f-builtins.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index a9d2af378df5..dd5e0e159979 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -445,6 +445,12 @@ _mm512_castsi512_si128 (__m512i __A) return (__m128i)__builtin_shufflevector(__A, __A , 0, 1); } +static __inline __m256i __DEFAULT_FN_ATTRS +_mm512_castsi512_si256 (__m512i __A) +{ + return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3); +} + /* Bitwise operators */ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_and_epi32(__m512i __a, __m512i __b) diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c index 553dc147da1f..8e5813fb3483 100644 --- a/clang/test/CodeGen/avx512f-builtins.c +++ b/clang/test/CodeGen/avx512f-builtins.c @@ -6041,6 +6041,13 @@ __m128i test_mm512_castsi512_si128 (__m512i __A) return _mm512_castsi512_si128 (__A); } +__m256i test_mm512_castsi512_si256 (__m512i __A) +{ + // CHECK-LABEL: @test_mm512_castsi512_si256 + // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> + return _mm512_castsi512_si256 (__A); +} + __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) { // CHECK-LABEL: @test_mm_cvt_roundsd_ss // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round