From 967cd889e59ff73a53b71463d33df7bdfc4b8567 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Sat, 24 Dec 2011 05:19:47 +0000 Subject: [PATCH] Add AVX2 intrinsics for FP vbroadcast, vbroadcasti128, and vpblendd. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147240 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/BuiltinsX86.def | 7 ++++++ test/CodeGen/avx2-builtins.c | 35 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 8c25a7a641..c13fdb082d 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/include/clang/Basic/BuiltinsX86.def @@ -555,5 +555,12 @@ BUILTIN(__builtin_ia32_psrldi256, "V8iV8ii", "") BUILTIN(__builtin_ia32_psrld256, "V8iV8iV4i", "") BUILTIN(__builtin_ia32_psrlqi256, "V4LLiV4LLii", "") BUILTIN(__builtin_ia32_psrlq256, "V4LLiV4LLiV2LLi", "") +BUILTIN(__builtin_ia32_movntdqa256, "V4LLiV4LLi*", "") +BUILTIN(__builtin_ia32_vbroadcastss_ps, "V4fV4f", "") +BUILTIN(__builtin_ia32_vbroadcastss_ps256, "V8fV4f", "") +BUILTIN(__builtin_ia32_vbroadcastsd_pd256, "V4dV2d", "") +BUILTIN(__builtin_ia32_vbroadcastsi256, "V4LLiV2LLiC*", "") +BUILTIN(__builtin_ia32_pblendd128, "V4iV4iV4iIi", "") +BUILTIN(__builtin_ia32_pblendd256, "V8iV8iV8iIi", "") #undef BUILTIN diff --git a/test/CodeGen/avx2-builtins.c b/test/CodeGen/avx2-builtins.c index aac2b28301..dc9c5009c6 100644 --- a/test/CodeGen/avx2-builtins.c +++ b/test/CodeGen/avx2-builtins.c @@ -580,3 +580,38 @@ __m256i test_mm256_unpacklo_epi64(__m256i a, __m256i b) { // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> return _mm256_unpacklo_epi64(a, b); } + +__m256i test_mm256_stream_load_si256(__m256i *a) { + // CHECK: @llvm.x86.avx2.movntdqa + return _mm256_stream_load_si256(a); +} + +__m128 test_mm_broadcastss_ps(__m128 a) { + // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps + return _mm_broadcastss_ps(a); +} + +__m256 test_mm256_broadcastss_ps(__m128 a) { + // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps.256 + return _mm256_broadcastss_ps(a); +} + +__m256d test_mm256_broadcastsd_pd(__m128d a) { + // CHECK: @llvm.x86.avx2.vbroadcast.sd.pd.256 + return _mm256_broadcastsd_pd(a); +} + +__m256i test_mm_broadcastsi128_si256(__m128i *a) { + // CHECK: @llvm.x86.avx2.vbroadcasti128 + return _mm_broadcastsi128_si256(a); +} + +__m128i test_mm_blend_epi32(__m128i a, __m128i b) { + // CHECK: @llvm.x86.avx2.pblendd.128 + return _mm_blend_epi32(a, b, 57); +} + +__m256i test_mm256_blend_epi32(__m256i a, __m256i b) { + // CHECK: @llvm.x86.avx2.pblendd.256 + return _mm256_blend_epi32(a, b, 57); +} -- 2.40.0