9#elifdef __ARM_FEATURE_MVE
13#define SIMDE_ENABLE_NATIVE_ALIASES
18#ifdef ARGON_PLATFORM_SIMDE
21#define nce [[gnu::always_inline]] constexpr
23#define nce [[gnu::always_inline]] inline
35nce T set_lane(T vec,
const int i, Scalar_t<T> a) {
36 constexpr size_t lanes =
sizeof(T) /
sizeof(Scalar_t<T>);
37 if constexpr (lanes == 1) {
38 return simd::set_lane<0>(a, vec);
39 }
else if constexpr (lanes == 2) {
42 return simd::set_lane<0>(a, vec);
44 return simd::set_lane<1>(a, vec);
48 }
else if constexpr (lanes == 4) {
51 return simd::set_lane<0>(a, vec);
53 return simd::set_lane<1>(a, vec);
55 return simd::set_lane<2>(a, vec);
57 return simd::set_lane<3>(a, vec);
61 }
else if constexpr (lanes == 8) {
64 return simd::set_lane<0>(a, vec);
66 return simd::set_lane<1>(a, vec);
68 return simd::set_lane<2>(a, vec);
70 return simd::set_lane<3>(a, vec);
72 return simd::set_lane<4>(a, vec);
74 return simd::set_lane<5>(a, vec);
76 return simd::set_lane<6>(a, vec);
78 return simd::set_lane<7>(a, vec);
82 }
else if constexpr (lanes == 16) {
85 return simd::set_lane<0>(a, vec);
87 return simd::set_lane<1>(a, vec);
89 return simd::set_lane<2>(a, vec);
91 return simd::set_lane<3>(a, vec);
93 return simd::set_lane<4>(a, vec);
95 return simd::set_lane<5>(a, vec);
97 return simd::set_lane<6>(a, vec);
99 return simd::set_lane<7>(a, vec);
101 return simd::set_lane<8>(a, vec);
103 return simd::set_lane<9>(a, vec);
105 return simd::set_lane<10>(a, vec);
107 return simd::set_lane<11>(a, vec);
109 return simd::set_lane<12>(a, vec);
111 return simd::set_lane<13>(a, vec);
113 return simd::set_lane<14>(a, vec);
115 return simd::set_lane<15>(a, vec);