diff --git a/include/ircd/simd/popcnt.h b/include/ircd/simd/popcnt.h index 8217ca5ee..25f99e2d1 100644 --- a/include/ircd/simd/popcnt.h +++ b/include/ircd/simd/popcnt.h @@ -40,6 +40,7 @@ noexcept /// Convenience template. Extends a bool value where the lsb is 1 or 0 into a /// mask value like the result of vector comparisons. template +[[gnu::always_inline]] inline T ircd::simd::boolmask(const T a) noexcept @@ -51,6 +52,7 @@ noexcept /// sometimes one might need an actual value of 1 for accumulators or maybe /// some bool-type reason... template +[[gnu::always_inline]] inline T ircd::simd::popmask(const T a) noexcept diff --git a/include/ircd/simd/traits.h b/include/ircd/simd/traits.h index 6ad303cad..c4f017ebc 100644 --- a/include/ircd/simd/traits.h +++ b/include/ircd/simd/traits.h @@ -40,7 +40,8 @@ namespace ircd::simd /// Get number of lanes for vector type (the number after the x in the /// type name). template -constexpr size_t +[[gnu::always_inline]] +inline constexpr size_t ircd::simd::lanes() { constexpr size_t ret @@ -58,7 +59,8 @@ ircd::simd::lanes() /// Get the size of each lane; i.e the size of one integral element. template -constexpr size_t +[[gnu::always_inline]] +inline constexpr size_t ircd::simd::sizeof_lane() { constexpr size_t ret