From 38e77c64c612584e0f7eb92ddfd15df44c676e35 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 26 Mar 2023 14:15:31 -0700 Subject: [PATCH] ircd::simd: Fix 'return type cannot be vectorized' inhibition (clang). --- include/ircd/simd/unaligned.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/include/ircd/simd/unaligned.h b/include/ircd/simd/unaligned.h index dde38538c..e4199f091 100644 --- a/include/ircd/simd/unaligned.h +++ b/include/ircd/simd/unaligned.h @@ -24,23 +24,24 @@ namespace ircd::simd /// T = inner aligned type template struct -__attribute__((packed)) -__attribute__((aligned(1))) -__attribute__((visibility("internal"))) +[[using clang: internal_linkage, nodebug]] +[[using gnu: packed, aligned(1), visibility("internal")]] ircd::simd::unaligned { using value_type = T; T val; - operator T() const + [[gnu::always_inline]] + operator T() const noexcept { return val; } template - unaligned(U&& val) - :val(std::forward(val)) + [[gnu::always_inline]] + unaligned(const U val) noexcept + :val(val) {} };