From d932ffab33310821109c36b30255d29b1e2f8065 Mon Sep 17 00:00:00 2001 From: Guillaume Piolat Date: Tue, 22 Oct 2024 14:48:49 +0200 Subject: [PATCH] Add pure to _mm_blendv_ps (it builds on all supported compilers). Change parameter of _mm_stream_load_si128 to void* to follow a Intel Guide signature change. --- source/inteli/smmintrin.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/inteli/smmintrin.d b/source/inteli/smmintrin.d index fd48a8c..f163e38 100644 --- a/source/inteli/smmintrin.d +++ b/source/inteli/smmintrin.d @@ -4,6 +4,7 @@ * * Copyright: Guillaume Piolat 2021. * Johan Engelen 2021. +* cet 2024. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) */ module inteli.smmintrin; @@ -238,7 +239,7 @@ unittest /// Blend packed single-precision (32-bit) floating-point elements from `a` and `b` using `mask`. -__m128 _mm_blendv_ps (__m128 a, __m128 b, __m128 mask) @trusted +__m128 _mm_blendv_ps (__m128 a, __m128 b, __m128 mask) pure @trusted { // PERF DMD static if (GDC_with_SSE41) @@ -1991,7 +1992,7 @@ unittest /// Load 128-bits of integer data from memory using a non-temporal memory hint. /// `mem_addr` must be aligned on a 16-byte boundary or a general-protection /// exception may be generated. -__m128i _mm_stream_load_si128 (__m128i * mem_addr) pure @trusted +__m128i _mm_stream_load_si128 (void* mem_addr) pure @trusted { // PERF DMD D_SIMD static if (GDC_with_SSE41) @@ -2004,11 +2005,11 @@ __m128i _mm_stream_load_si128 (__m128i * mem_addr) pure @trusted enum ir = ` %r = load <4 x i32>, <4 x i32>* %0, !nontemporal !0 ret <4 x i32> %r`; - return cast(__m128i) LDCInlineIREx!(prefix, ir, "", int4, int4*)(mem_addr); + return cast(__m128i) LDCInlineIREx!(prefix, ir, "", int4, int4*)(cast(__m128i*)mem_addr); } else { - return *mem_addr; // regular move instead + return *cast(__m128i*)mem_addr; // regular move instead } } unittest