@@ -53,6 +53,7 @@ namespace xsimd
5353
5454 namespace wrap
5555 {
56+ // TODO(c++17): Make a single function with if constexpr switch
5657 template <class R , class T , std::enable_if_t <std::is_same<R, uint8_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
5758 XSIMD_INLINE uint8x16_t x_vreinterpretq (uint8x16_t a) noexcept { return a; }
5859 template <class R , class T , std::enable_if_t <std::is_same<R, uint8_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -72,6 +73,7 @@ namespace xsimd
7273 template <class R , class T , std::enable_if_t <std::is_same<R, uint8_t >::value && std::is_same<T, float >::value, int > = 0 >
7374 XSIMD_INLINE uint8x16_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_u8_f32 (a); }
7475
76+ // TODO(c++17): Make a single function with if constexpr switch
7577 template <class R , class T , std::enable_if_t <std::is_same<R, int8_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
7678 XSIMD_INLINE int8x16_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_s8_u8 (a); }
7779 template <class R , class T , std::enable_if_t <std::is_same<R, int8_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -91,6 +93,7 @@ namespace xsimd
9193 template <class R , class T , std::enable_if_t <std::is_same<R, int8_t >::value && std::is_same<T, float >::value, int > = 0 >
9294 XSIMD_INLINE int8x16_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_s8_f32 (a); }
9395
96+ // TODO(c++17): Make a single function with if constexpr switch
9497 template <class R , class T , std::enable_if_t <std::is_same<R, uint16_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
9598 XSIMD_INLINE uint16x8_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_u16_u8 (a); }
9699 template <class R , class T , std::enable_if_t <std::is_same<R, uint16_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -110,6 +113,7 @@ namespace xsimd
110113 template <class R , class T , std::enable_if_t <std::is_same<R, uint16_t >::value && std::is_same<T, float >::value, int > = 0 >
111114 XSIMD_INLINE uint16x8_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_u16_f32 (a); }
112115
116+ // TODO(c++17): Make a single function with if constexpr switch
113117 template <class R , class T , std::enable_if_t <std::is_same<R, int16_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
114118 XSIMD_INLINE int16x8_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_s16_u8 (a); }
115119 template <class R , class T , std::enable_if_t <std::is_same<R, int16_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -129,6 +133,7 @@ namespace xsimd
129133 template <class R , class T , std::enable_if_t <std::is_same<R, int16_t >::value && std::is_same<T, float >::value, int > = 0 >
130134 XSIMD_INLINE int16x8_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_s16_f32 (a); }
131135
136+ // TODO(c++17): Make a single function with if constexpr switch
132137 template <class R , class T , std::enable_if_t <std::is_same<R, uint32_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
133138 XSIMD_INLINE uint32x4_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_u32_u8 (a); }
134139 template <class R , class T , std::enable_if_t <std::is_same<R, uint32_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -148,6 +153,7 @@ namespace xsimd
148153 template <class R , class T , std::enable_if_t <std::is_same<R, uint32_t >::value && std::is_same<T, float >::value, int > = 0 >
149154 XSIMD_INLINE uint32x4_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_u32_f32 (a); }
150155
156+ // TODO(c++17): Make a single function with if constexpr switch
151157 template <class R , class T , std::enable_if_t <std::is_same<R, int32_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
152158 XSIMD_INLINE int32x4_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_s32_u8 (a); }
153159 template <class R , class T , std::enable_if_t <std::is_same<R, int32_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -167,6 +173,7 @@ namespace xsimd
167173 template <class R , class T , std::enable_if_t <std::is_same<R, int32_t >::value && std::is_same<T, float >::value, int > = 0 >
168174 XSIMD_INLINE int32x4_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_s32_f32 (a); }
169175
176+ // TODO(c++17): Make a single function with if constexpr switch
170177 template <class R , class T , std::enable_if_t <std::is_same<R, uint64_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
171178 XSIMD_INLINE uint64x2_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_u64_u8 (a); }
172179 template <class R , class T , std::enable_if_t <std::is_same<R, uint64_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -186,6 +193,7 @@ namespace xsimd
186193 template <class R , class T , std::enable_if_t <std::is_same<R, uint64_t >::value && std::is_same<T, float >::value, int > = 0 >
187194 XSIMD_INLINE uint64x2_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_u64_f32 (a); }
188195
196+ // TODO(c++17): Make a single function with if constexpr switch
189197 template <class R , class T , std::enable_if_t <std::is_same<R, int64_t >::value && std::is_same<T, uint8_t >::value, int > = 0 >
190198 XSIMD_INLINE int64x2_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_s64_u8 (a); }
191199 template <class R , class T , std::enable_if_t <std::is_same<R, int64_t >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -205,6 +213,7 @@ namespace xsimd
205213 template <class R , class T , std::enable_if_t <std::is_same<R, int64_t >::value && std::is_same<T, float >::value, int > = 0 >
206214 XSIMD_INLINE int64x2_t x_vreinterpretq (float32x4_t a) noexcept { return vreinterpretq_s64_f32 (a); }
207215
216+ // TODO(c++17): Make a single function with if constexpr switch
208217 template <class R , class T , std::enable_if_t <std::is_same<R, float >::value && std::is_same<T, uint8_t >::value, int > = 0 >
209218 XSIMD_INLINE float32x4_t x_vreinterpretq (uint8x16_t a) noexcept { return vreinterpretq_f32_u8 (a); }
210219 template <class R , class T , std::enable_if_t <std::is_same<R, float >::value && std::is_same<T, int8_t >::value, int > = 0 >
@@ -792,6 +801,7 @@ namespace xsimd
792801
793802 namespace wrap
794803 {
804+ // TODO(c++17): Make a single function with if constexpr switch
795805 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
796806 XSIMD_INLINE uint8x16_t x_vaddq (uint8x16_t a, uint8x16_t b) noexcept { return vaddq_u8 (a, b); }
797807 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -825,6 +835,7 @@ namespace xsimd
825835
826836 namespace wrap
827837 {
838+ // TODO(c++17): Make a single function with if constexpr switch
828839 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
829840 XSIMD_INLINE uint8x16_t x_vhaddq (uint8x16_t a, uint8x16_t b) noexcept { return vhaddq_u8 (a, b); }
830841 template <class T , std::enable_if_t <std::is_same<T, uint16_t >::value, int > = 0 >
@@ -846,6 +857,7 @@ namespace xsimd
846857
847858 namespace wrap
848859 {
860+ // TODO(c++17): Make a single function with if constexpr switch
849861 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
850862 XSIMD_INLINE uint8x16_t x_vrhaddq (uint8x16_t a, uint8x16_t b) noexcept { return vrhaddq_u8 (a, b); }
851863 template <class T , std::enable_if_t <std::is_same<T, uint16_t >::value, int > = 0 >
@@ -867,6 +879,7 @@ namespace xsimd
867879
868880 namespace wrap
869881 {
882+ // TODO(c++17): Make a single function with if constexpr switch
870883 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
871884 XSIMD_INLINE uint8x16_t x_vqaddq (uint8x16_t a, uint8x16_t b) noexcept { return vqaddq_u8 (a, b); }
872885 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -900,6 +913,7 @@ namespace xsimd
900913
901914 namespace wrap
902915 {
916+ // TODO(c++17): Make a single function with if constexpr switch
903917 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
904918 XSIMD_INLINE uint8x16_t x_vsubq (uint8x16_t a, uint8x16_t b) noexcept { return vsubq_u8 (a, b); }
905919 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -933,6 +947,7 @@ namespace xsimd
933947
934948 namespace wrap
935949 {
950+ // TODO(c++17): Make a single function with if constexpr switch
936951 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
937952 XSIMD_INLINE uint8x16_t x_vqsubq (uint8x16_t a, uint8x16_t b) noexcept { return vqsubq_u8 (a, b); }
938953 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -966,6 +981,7 @@ namespace xsimd
966981
967982 namespace wrap
968983 {
984+ // TODO(c++17): Make a single function with if constexpr switch
969985 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
970986 XSIMD_INLINE uint8x16_t x_vmulq (uint8x16_t a, uint8x16_t b) noexcept { return vmulq_u8 (a, b); }
971987 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1030,6 +1046,7 @@ namespace xsimd
10301046
10311047 namespace wrap
10321048 {
1049+ // TODO(c++17): Make a single function with if constexpr switch
10331050 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
10341051 XSIMD_INLINE uint8x16_t x_vceqq (uint8x16_t a, uint8x16_t b) noexcept { return vceqq_u8 (a, b); }
10351052 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1122,6 +1139,7 @@ namespace xsimd
11221139
11231140 namespace wrap
11241141 {
1142+ // TODO(c++17): Make a single function with if constexpr switch
11251143 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
11261144 XSIMD_INLINE uint8x16_t x_vcltq (uint8x16_t a, uint8x16_t b) noexcept { return vcltq_u8 (a, b); }
11271145 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1166,6 +1184,7 @@ namespace xsimd
11661184
11671185 namespace wrap
11681186 {
1187+ // TODO(c++17): Make a single function with if constexpr switch
11691188 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
11701189 XSIMD_INLINE uint8x16_t x_vcleq (uint8x16_t a, uint8x16_t b) noexcept { return vcleq_u8 (a, b); }
11711190 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1201,6 +1220,7 @@ namespace xsimd
12011220
12021221 namespace wrap
12031222 {
1223+ // TODO(c++17): Make a single function with if constexpr switch
12041224 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
12051225 XSIMD_INLINE uint8x16_t x_vcgtq (uint8x16_t a, uint8x16_t b) noexcept { return vcgtq_u8 (a, b); }
12061226 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1245,6 +1265,7 @@ namespace xsimd
12451265
12461266 namespace wrap
12471267 {
1268+ // TODO(c++17): Make a single function with if constexpr switch
12481269 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
12491270 XSIMD_INLINE uint8x16_t x_vcgeq (uint8x16_t a, uint8x16_t b) noexcept { return vcgeq_u8 (a, b); }
12501271 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1291,6 +1312,7 @@ namespace xsimd
12911312
12921313 namespace wrap
12931314 {
1315+ // TODO(c++17): Make a single function with if constexpr switch
12941316 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
12951317 XSIMD_INLINE uint8x16_t x_vandq (uint8x16_t a, uint8x16_t b) noexcept { return vandq_u8 (a, b); }
12961318 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1335,6 +1357,7 @@ namespace xsimd
13351357
13361358 namespace wrap
13371359 {
1360+ // TODO(c++17): Make a single function with if constexpr switch
13381361 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
13391362 XSIMD_INLINE uint8x16_t x_vorrq (uint8x16_t a, uint8x16_t b) noexcept { return vorrq_u8 (a, b); }
13401363 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1379,6 +1402,7 @@ namespace xsimd
13791402
13801403 namespace wrap
13811404 {
1405+ // TODO(c++17): Make a single function with if constexpr switch
13821406 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
13831407 XSIMD_INLINE uint8x16_t x_veorq (uint8x16_t a, uint8x16_t b) noexcept { return veorq_u8 (a, b); }
13841408 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1433,6 +1457,7 @@ namespace xsimd
14331457
14341458 namespace wrap
14351459 {
1460+ // TODO(c++17): Make a single function with if constexpr switch
14361461 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
14371462 XSIMD_INLINE uint8x16_t x_vmvnq (uint8x16_t a) noexcept { return vmvnq_u8 (a); }
14381463 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1482,6 +1507,7 @@ namespace xsimd
14821507
14831508 namespace wrap
14841509 {
1510+ // TODO(c++17): Make a single function with if constexpr switch
14851511 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
14861512 XSIMD_INLINE uint8x16_t x_vbicq (uint8x16_t a, uint8x16_t b) noexcept { return vbicq_u8 (a, b); }
14871513 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1525,6 +1551,7 @@ namespace xsimd
15251551
15261552 namespace wrap
15271553 {
1554+ // TODO(c++17): Make a single function with if constexpr switch
15281555 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
15291556 XSIMD_INLINE uint8x16_t x_vminq (uint8x16_t a, uint8x16_t b) noexcept { return vminq_u8 (a, b); }
15301557 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1560,6 +1587,7 @@ namespace xsimd
15601587
15611588 namespace wrap
15621589 {
1590+ // TODO(c++17): Make a single function with if constexpr switch
15631591 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
15641592 XSIMD_INLINE uint8x16_t x_vmaxq (uint8x16_t a, uint8x16_t b) noexcept { return vmaxq_u8 (a, b); }
15651593 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1595,6 +1623,7 @@ namespace xsimd
15951623
15961624 namespace wrap
15971625 {
1626+ // TODO(c++17): Make a single function with if constexpr switch
15981627 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
15991628 XSIMD_INLINE uint8x16_t x_vabsq (uint8x16_t a) noexcept { return a; }
16001629 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -1937,6 +1966,7 @@ namespace xsimd
19371966
19381967 namespace wrap
19391968 {
1969+ // TODO(c++17): Make a single function with if constexpr switch
19401970 template <class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
19411971 XSIMD_INLINE uint8x16_t x_vbslq (uint8x16_t a, uint8x16_t b, uint8x16_t c) noexcept { return vbslq_u8 (a, b, c); }
19421972 template <class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
@@ -3065,6 +3095,7 @@ namespace xsimd
30653095 ****************/
30663096 namespace wrap
30673097 {
3098+ // TODO(c++17): Make a single function with if constexpr switch
30683099 template <size_t N, class T , std::enable_if_t <std::is_same<T, uint8_t >::value, int > = 0 >
30693100 XSIMD_INLINE uint8x16_t x_rotate_left (uint8x16_t a, uint8x16_t b) noexcept { return vextq_u8 (a, b, N); }
30703101 template <size_t N, class T , std::enable_if_t <std::is_same<T, int8_t >::value, int > = 0 >
0 commit comments