Skip to content

Commit ec73b0d

Browse files
author
Fikret Ardal
committed
fix a bug in mock_simd class
1 parent 9b8dfd7 commit ec73b0d

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

c++/nda/simd/mock_simd.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,31 @@ namespace nda::simd {
1111
template <typename... Args>
1212
value_t operator()(Args &&...args) const {
1313
static_assert((std::is_same_v<value_t, std::remove_cvref_t<Args>> and ...), "All types have to be the same.");
14-
return static_cast<Derived *>(this)->operator()(std::forward<Args>(args)...);
14+
return static_cast<const Derived *>(this)->operator()(std::forward<Args>(args)...);
1515
}
1616

1717
private:
18-
[[gnu::always_inline]] std::array<value_t, simd_t::size()> convert_simd_to_array(const simd_t &a) {
18+
[[gnu::always_inline]] std::array<value_t, simd_t::size()> convert_simd_to_array(const simd_t &a) const {
1919
alignas(simd_t::alignment()) std::array<T, simd_t::size()> result;
2020
a.store(result.data());
2121
return result;
2222
}
2323

2424
template <size_t... Is, typename... Args>
25-
[[gnu::always_inline]] auto make_array_tuple(std::index_sequence<Is...>, const std::tuple<Args...> &args_tuple) {
25+
[[gnu::always_inline]] auto make_array_tuple(std::index_sequence<Is...>, const std::tuple<Args...> &args_tuple) const {
2626
return std::make_tuple(convert_simd_to_array(std::get<Is>(args_tuple))...);
2727
}
2828

2929
template <size_t... Is, typename... Args>
30-
[[gnu::always_inline]] auto apply_function(std::index_sequence<Is...>, const std::tuple<Args...> &array_tuple) {
30+
[[gnu::always_inline]] auto apply_function(std::index_sequence<Is...>, const std::tuple<Args...> &array_tuple) const {
3131
alignas(simd_t::alignment()) std::array<T, simd_t::size()> result_array;
32-
for (int i = 0; i < simd_t::size(); ++i) { result_array[i] = static_cast<Derived *>(this)->operator()(std::get<Is>(array_tuple)[i]...); }
32+
for (int i = 0; i < simd_t::size(); ++i) { result_array[i] = static_cast<const Derived *>(this)->operator()(std::get<Is>(array_tuple)[i]...); }
3333
return result_array;
3434
}
3535

3636
public:
3737
template <typename... Args>
38-
simd_t load(Args &&...args) {
38+
simd_t load(Args &&...args) const {
3939
static_assert((std::is_same_v<simd_t, std::remove_cvref_t<Args>> and ...), "All types have to be the same.");
4040
constexpr size_t args_size = sizeof...(Args);
4141
std::tuple<Args &&...> args_tuple = std::forward_as_tuple(std::forward<Args>(args)...);

0 commit comments

Comments
 (0)