From 14f35f4ff68c1a50da958fbaac4470ca5edc8d04 Mon Sep 17 00:00:00 2001 From: Paul Kulchenko Date: Mon, 20 Sep 2021 21:10:12 -0700 Subject: [PATCH] Reorganize handling of added SSE intrinsics to simplify. --- libc/bits/emmintrin.internal.h | 50 ++++++---------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/libc/bits/emmintrin.internal.h b/libc/bits/emmintrin.internal.h index 7851beadb..d3741e7ce 100644 --- a/libc/bits/emmintrin.internal.h +++ b/libc/bits/emmintrin.internal.h @@ -218,53 +218,19 @@ struct thatispacked mayalias __usi128ma { #define _mm_cmpunord_sd(M128D_0, M128D_1) \ __builtin_ia32_cmpunordsd((__v2df)(M128D_0), (__v2df)(M128D_1)) -#define _mm_mul_epu32(A, B) \ +#define _mm_SSE2(op, A, B) \ ({ \ __m128i R = A; \ - asm("pmuludq %1, %0" \ + asm(#op " %1, %0" \ : "+x"(R) : "xm"(B)); \ R; \ }) - -#define _mm_add_epi64(A, B) \ - ({ \ - __m128i R = A; \ - asm("paddq %1, %0" \ - : "+x"(R) : "xm"(B)); \ - R; \ - }) - -#define _mm_srli_epi64(A, B) \ - ({ \ - __m128i R = A; \ - asm("psrlq %1, %0" \ - : "+x"(R) : "xm"(B)); \ - R; \ - }) - -#define _mm_slli_epi64(A, B) \ - ({ \ - __m128i R = A; \ - asm("psllq %1, %0" \ - : "+x"(R) : "xm"(B)); \ - R; \ - }) - -#define _mm_unpacklo_epi64(A, B) \ - ({ \ - __m128i R = A; \ - asm("punpcklqdq %1, %0" \ - : "+x"(R) : "xm"(B)); \ - R; \ - }) - -#define _mm_unpackhi_epi64(A, B) \ - ({ \ - __m128i R = A; \ - asm("punpckhqdq %1, %0" \ - : "+x"(R) : "xm"(B)); \ - R; \ - }) +#define _mm_mul_epu32(A, B) _mm_SSE2(pmuludq, A, B) +#define _mm_add_epi64(A, B) _mm_SSE2(paddq, A, B) +#define _mm_srli_epi64(A, B) _mm_SSE2(psrlq, A, B) +#define _mm_slli_epi64(A, B) _mm_SSE2(psllq, A, B) +#define _mm_unpacklo_epi64(A, B) _mm_SSE2(punpcklqdq, A, B) +#define _mm_unpackhi_epi64(A, B) _mm_SSE2(punpckhqdq, A, B) /*───────────────────────────────────────────────────────────────────────────│─╗ │ cosmopolitan § it's a trap! » sse2 » miscellaneous ─╬─│┼