From: Simon Pilgrim Date: Fri, 28 Apr 2017 10:28:32 +0000 (+0000) Subject: [X86][SSE] Add _mm_set_pd1 (PR32827) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68ff0b49664a768fb9b9b89cd1f63a5ee8907bd8;p=clang [X86][SSE] Add _mm_set_pd1 (PR32827) Matches _mm_set_ps1 implementation git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301637 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/emmintrin.h b/lib/Headers/emmintrin.h index 0dfa6a9fbc..13b0db22ec 100644 --- a/lib/Headers/emmintrin.h +++ b/lib/Headers/emmintrin.h @@ -1750,6 +1750,24 @@ _mm_set1_pd(double __w) return (__m128d){ __w, __w }; } +/// \brief Constructs a 128-bit floating-point vector of [2 x double], with each +/// of the two double-precision floating-point vector elements set to the +/// specified double-precision floating-point value. +/// +/// \headerfile +/// +/// This intrinsic corresponds to the VMOVDDUP / MOVLHPS instruction. +/// +/// \param __w +/// A double-precision floating-point value used to initialize each vector +/// element of the result. +/// \returns An initialized 128-bit floating-point vector of [2 x double]. +static __inline__ __m128d __DEFAULT_FN_ATTRS +_mm_set_pd1(double __w) +{ + return _mm_set1_pd(__w); +} + /// \brief Constructs a 128-bit floating-point vector of [2 x double] /// initialized with the specified double-precision floating-point values. /// diff --git a/test/CodeGen/sse2-builtins.c b/test/CodeGen/sse2-builtins.c index a140a6ce55..ca51314d80 100644 --- a/test/CodeGen/sse2-builtins.c +++ b/test/CodeGen/sse2-builtins.c @@ -951,6 +951,13 @@ __m128d test_mm_set_pd(double A, double B) { return _mm_set_pd(A, B); } +__m128d test_mm_set_pd1(double A) { + // CHECK-LABEL: test_mm_set_pd1 + // CHECK: insertelement <2 x double> undef, double %{{.*}}, i32 0 + // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 1 + return _mm_set_pd1(A); +} + __m128d test_mm_set_sd(double A) { // CHECK-LABEL: test_mm_set_sd // CHECK: insertelement <2 x double> undef, double %{{.*}}, i32 0