Skip to content

Commit

Permalink
absolute namespace paths
Browse files Browse the repository at this point in the history
  • Loading branch information
chriselrod committed Nov 28, 2023
1 parent 0d9e705 commit 4dcc561
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 27 deletions.
6 changes: 3 additions & 3 deletions include/Math/StaticArrays.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ static_assert(

template <ptrdiff_t N, typename T>
constexpr ptrdiff_t VecLen =
(N < poly::simd::Width<T>) ? ptrdiff_t(std::bit_ceil(size_t(N)))
: std::max(poly::simd::Width<T>, ptrdiff_t(1));
(N < simd::Width<T>) ? ptrdiff_t(std::bit_ceil(size_t(N)))
: std::max(simd::Width<T>, ptrdiff_t(1));

template <typename T, ptrdiff_t L>
consteval auto paddedSize() -> std::array<ptrdiff_t, 2> {
constexpr ptrdiff_t WF = poly::simd::Width<T>;
constexpr ptrdiff_t WF = simd::Width<T>;
constexpr ptrdiff_t W = L < WF ? ptrdiff_t(std::bit_ceil(uint64_t(L))) : WF;
constexpr ptrdiff_t N = ((L + W - 1) / W);
return {N, W};
Expand Down
48 changes: 24 additions & 24 deletions include/SIMD/Unroll.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -705,124 +705,124 @@ template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator==(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) == y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index == y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index == y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() == (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() == vbroadcast<W, int64_t>(y - x.index)};
}
template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator!=(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) != y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index != y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index != y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() != (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() != vbroadcast<W, int64_t>(y - x.index)};
}

template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator<(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) < y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index < y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index < y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() < (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() < vbroadcast<W, int64_t>(y - x.index)};
}

template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator>(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) > y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index > y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index > y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() > (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() > vbroadcast<W, int64_t>(y - x.index)};
}

template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator<=(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) <= y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index <= y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index <= y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() <= (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() <= vbroadcast<W, int64_t>(y - x.index)};
}

template <ptrdiff_t U, ptrdiff_t W, typename M>
constexpr auto operator>=(Unroll<U, W, M> x, ptrdiff_t y) {
if constexpr (W == 1) {
if constexpr (U > 1) {
poly::simd::Unroll<U, 1, 1, int64_t> ret;
::poly::simd::Unroll<U, 1, 1, int64_t> ret;
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u) ret.data[u] = (x.index + u) >= y;
return ret;
} else return poly::simd::Unroll<1, 1, W, int64_t>{x.index >= y};
} else return ::poly::simd::Unroll<1, 1, W, int64_t>{x.index >= y};
} else if constexpr (U > 1) {
poly::simd::Unroll<1, U, W, int64_t> ret;
::poly::simd::Unroll<1, U, W, int64_t> ret;
Vec<W, int64_t> v = vbroadcast<W, int64_t>(y - x.index);
POLYMATHFULLUNROLL
for (ptrdiff_t u = 0; u < U; ++u)
ret.data[u] = range<W, int64_t>() >= (v - u * W);
return ret;
} else
return poly::simd::Unroll<1, 1, W, int64_t>{
return ::poly::simd::Unroll<1, 1, W, int64_t>{
range<W, int64_t>() >= vbroadcast<W, int64_t>(y - x.index)};
}

Expand Down

0 comments on commit 4dcc561

Please sign in to comment.