diff --git a/include/ircd/simd/simd.h b/include/ircd/simd/simd.h index a2555e994..03253f67c 100644 --- a/include/ircd/simd/simd.h +++ b/include/ircd/simd/simd.h @@ -55,7 +55,7 @@ noexcept else ret += __lzcnt64(__builtin_bswap64(a[i++])) & mask; } - while(i < lanes(a)); + while(i < lanes()); return ret; } @@ -67,7 +67,7 @@ inline uint ircd::simd::ctz(const T a) noexcept { - uint ret(0), i(lanes(a)), mask(-1U); do + uint ret(0), i(lanes()), mask(-1U); do { if constexpr(sizeof_lane() <= sizeof(u16)) ret += __lzcnt16(a[--i]) & mask; diff --git a/include/ircd/simd/traits.h b/include/ircd/simd/traits.h index 528c9663c..6ad303cad 100644 --- a/include/ircd/simd/traits.h +++ b/include/ircd/simd/traits.h @@ -14,10 +14,10 @@ namespace ircd::simd { template - constexpr size_t sizeof_lane(T = {}); + constexpr size_t sizeof_lane(); template - constexpr size_t lanes(T = {}); + constexpr size_t lanes(); // lane number convenience constants extern const u8x64 u8x64_lane_id; @@ -41,7 +41,7 @@ namespace ircd::simd /// type name). template constexpr size_t -ircd::simd::lanes(T) +ircd::simd::lanes() { constexpr size_t ret { @@ -59,7 +59,7 @@ ircd::simd::lanes(T) /// Get the size of each lane; i.e the size of one integral element. template constexpr size_t -ircd::simd::sizeof_lane(T) +ircd::simd::sizeof_lane() { constexpr size_t ret { @@ -76,63 +76,63 @@ ircd::simd::sizeof_lane(T) template<> constexpr size_t -ircd::simd::sizeof_lane(u128x1) +ircd::simd::sizeof_lane() { return 16; }; template<> constexpr size_t -ircd::simd::sizeof_lane(f128x1) +ircd::simd::sizeof_lane() { return 16; }; template<> constexpr size_t -ircd::simd::sizeof_lane(d128x1) +ircd::simd::sizeof_lane() { return 16; }; template<> constexpr size_t -ircd::simd::sizeof_lane(u256x1) +ircd::simd::sizeof_lane() { return 32; }; template<> constexpr size_t -ircd::simd::sizeof_lane(f256x1) +ircd::simd::sizeof_lane() { return 32; }; template<> constexpr size_t -ircd::simd::sizeof_lane(d256x1) +ircd::simd::sizeof_lane() { return 32; }; template<> constexpr size_t -ircd::simd::sizeof_lane(u512x1) +ircd::simd::sizeof_lane() { return 64; }; template<> constexpr size_t -ircd::simd::sizeof_lane(f512x1) +ircd::simd::sizeof_lane() { return 64; }; template<> constexpr size_t -ircd::simd::sizeof_lane(d512x1) +ircd::simd::sizeof_lane() { return 64; };