Skip to content

Commit e25e27d

Browse files
committed
try alias
1 parent 545add4 commit e25e27d

1 file changed

Lines changed: 21 additions & 18 deletions

File tree

include/xsimd/arch/xsimd_neon.hpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ namespace xsimd
215215
= std::enable_if_t<(std::is_integral<T>::value && sizeof(T) != 8) || std::is_same<T, float>::value, int>;
216216
}
217217

218+
template <typename T>
219+
using detail_identity_return_type = detail::identity_return_type<T>;
220+
218221
/*************
219222
* broadcast *
220223
*************/
@@ -769,8 +772,8 @@ namespace xsimd
769772
* add *
770773
*******/
771774

772-
WRAP_BINARY_INT(vaddq_u8, vaddq_s8, vaddq_u16, vaddq_s16, vaddq_u32, vaddq_s32, vaddq_u64, vaddq_s64, detail::identity_return_type)
773-
WRAP_BINARY_FLOAT(vaddq_f32, detail::identity_return_type)
775+
WRAP_BINARY_INT(vaddq_u8, vaddq_s8, vaddq_u16, vaddq_s16, vaddq_u32, vaddq_s32, vaddq_u64, vaddq_s64, detail_identity_return_type)
776+
WRAP_BINARY_FLOAT(vaddq_f32, detail_identity_return_type)
774777

775778
template <class A, class T, detail::enable_neon_type_t<T> = 0>
776779
XSIMD_INLINE batch<T, A> add(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -788,7 +791,7 @@ namespace xsimd
788791
* avg *
789792
*******/
790793

791-
WRAP_BINARY_UINT_EXCLUDING_64(vhaddq_u8, vhaddq_u16, vhaddq_u32, detail::identity_return_type)
794+
WRAP_BINARY_UINT_EXCLUDING_64(vhaddq_u8, vhaddq_u16, vhaddq_u32, detail_identity_return_type)
792795

793796
template <class A, class T, class = std::enable_if_t<(std::is_unsigned<T>::value && sizeof(T) != 8)>>
794797
XSIMD_INLINE batch<T, A> avg(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -804,7 +807,7 @@ namespace xsimd
804807
* avgr *
805808
********/
806809

807-
WRAP_BINARY_UINT_EXCLUDING_64(vrhaddq_u8, vrhaddq_u16, vrhaddq_u32, detail::identity_return_type)
810+
WRAP_BINARY_UINT_EXCLUDING_64(vrhaddq_u8, vrhaddq_u16, vrhaddq_u32, detail_identity_return_type)
808811

809812
template <class A, class T, class = std::enable_if_t<(std::is_unsigned<T>::value && sizeof(T) != 8)>>
810813
XSIMD_INLINE batch<T, A> avgr(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -820,7 +823,7 @@ namespace xsimd
820823
* sadd *
821824
********/
822825

823-
WRAP_BINARY_INT(vqaddq_u8, vqaddq_s8, vqaddq_u16, vqaddq_s16, vqaddq_u32, vqaddq_s32, vqaddq_u64, vqaddq_s64, detail::identity_return_type)
826+
WRAP_BINARY_INT(vqaddq_u8, vqaddq_s8, vqaddq_u16, vqaddq_s16, vqaddq_u32, vqaddq_s32, vqaddq_u64, vqaddq_s64, detail_identity_return_type)
824827

825828
template <class A, class T, detail::enable_neon_type_t<T> = 0>
826829
XSIMD_INLINE batch<T, A> sadd(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -838,8 +841,8 @@ namespace xsimd
838841
* sub *
839842
*******/
840843

841-
WRAP_BINARY_INT(vsubq_u8, vsubq_s8, vsubq_u16, vsubq_s16, vsubq_u32, vsubq_s32, vsubq_u64, vsubq_s64, detail::identity_return_type)
842-
WRAP_BINARY_FLOAT(vsubq_f32, detail::identity_return_type)
844+
WRAP_BINARY_INT(vsubq_u8, vsubq_s8, vsubq_u16, vsubq_s16, vsubq_u32, vsubq_s32, vsubq_u64, vsubq_s64, detail_identity_return_type)
845+
WRAP_BINARY_FLOAT(vsubq_f32, detail_identity_return_type)
843846

844847
template <class A, class T, detail::enable_neon_type_t<T> = 0>
845848
XSIMD_INLINE batch<T, A> sub(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -857,7 +860,7 @@ namespace xsimd
857860
* ssub *
858861
********/
859862

860-
WRAP_BINARY_INT(vqsubq_u8, vqsubq_s8, vqsubq_u16, vqsubq_s16, vqsubq_u32, vqsubq_s32, vqsubq_u64, vqsubq_s64, detail::identity_return_type)
863+
WRAP_BINARY_INT(vqsubq_u8, vqsubq_s8, vqsubq_u16, vqsubq_s16, vqsubq_u32, vqsubq_s32, vqsubq_u64, vqsubq_s64, detail_identity_return_type)
861864

862865
template <class A, class T, detail::enable_neon_type_t<T> = 0>
863866
XSIMD_INLINE batch<T, A> ssub(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -875,8 +878,8 @@ namespace xsimd
875878
* mul *
876879
*******/
877880

878-
WRAP_BINARY_INT_EXCLUDING_64(vmulq_u8, vmulq_s8, vmulq_u16, vmulq_s16, vmulq_u32, vmulq_s32, detail::identity_return_type)
879-
WRAP_BINARY_FLOAT(vmulq_f32, detail::identity_return_type)
881+
WRAP_BINARY_INT_EXCLUDING_64(vmulq_u8, vmulq_s8, vmulq_u16, vmulq_s16, vmulq_u32, vmulq_s32, detail_identity_return_type)
882+
WRAP_BINARY_FLOAT(vmulq_f32, detail_identity_return_type)
880883

881884
template <class A, class T, detail::exclude_int64_neon_t<T> = 0>
882885
XSIMD_INLINE batch<T, A> mul(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -1150,7 +1153,7 @@ namespace xsimd
11501153
* bitwise_and *
11511154
***************/
11521155

1153-
WRAP_BINARY_INT(vandq_u8, vandq_s8, vandq_u16, vandq_s16, vandq_u32, vandq_s32, vandq_u64, vandq_s64, detail::identity_return_type)
1156+
WRAP_BINARY_INT(vandq_u8, vandq_s8, vandq_u16, vandq_s16, vandq_u32, vandq_s32, vandq_u64, vandq_s64, detail_identity_return_type)
11541157

11551158
namespace detail
11561159
{
@@ -1190,7 +1193,7 @@ namespace xsimd
11901193
* bitwise_or *
11911194
**************/
11921195

1193-
WRAP_BINARY_INT(vorrq_u8, vorrq_s8, vorrq_u16, vorrq_s16, vorrq_u32, vorrq_s32, vorrq_u64, vorrq_s64, detail::identity_return_type)
1196+
WRAP_BINARY_INT(vorrq_u8, vorrq_s8, vorrq_u16, vorrq_s16, vorrq_u32, vorrq_s32, vorrq_u64, vorrq_s64, detail_identity_return_type)
11941197

11951198
namespace detail
11961199
{
@@ -1230,7 +1233,7 @@ namespace xsimd
12301233
* bitwise_xor *
12311234
***************/
12321235

1233-
WRAP_BINARY_INT(veorq_u8, veorq_s8, veorq_u16, veorq_s16, veorq_u32, veorq_s32, veorq_u64, veorq_s64, detail::identity_return_type)
1236+
WRAP_BINARY_INT(veorq_u8, veorq_s8, veorq_u16, veorq_s16, veorq_u32, veorq_s32, veorq_u64, veorq_s64, detail_identity_return_type)
12341237

12351238
namespace detail
12361239
{
@@ -1320,7 +1323,7 @@ namespace xsimd
13201323
* bitwise_andnot *
13211324
******************/
13221325

1323-
WRAP_BINARY_INT(vbicq_u8, vbicq_s8, vbicq_u16, vbicq_s16, vbicq_u32, vbicq_s32, vbicq_u64, vbicq_s64, detail::identity_return_type)
1326+
WRAP_BINARY_INT(vbicq_u8, vbicq_s8, vbicq_u16, vbicq_s16, vbicq_u32, vbicq_s32, vbicq_u64, vbicq_s64, detail_identity_return_type)
13241327

13251328
namespace detail
13261329
{
@@ -1359,8 +1362,8 @@ namespace xsimd
13591362
* min *
13601363
*******/
13611364

1362-
WRAP_BINARY_INT_EXCLUDING_64(vminq_u8, vminq_s8, vminq_u16, vminq_s16, vminq_u32, vminq_s32, detail::identity_return_type)
1363-
WRAP_BINARY_FLOAT(vminq_f32, detail::identity_return_type)
1365+
WRAP_BINARY_INT_EXCLUDING_64(vminq_u8, vminq_s8, vminq_u16, vminq_s16, vminq_u32, vminq_s32, detail_identity_return_type)
1366+
WRAP_BINARY_FLOAT(vminq_f32, detail_identity_return_type)
13641367

13651368
template <class A, class T, detail::exclude_int64_neon_t<T> = 0>
13661369
XSIMD_INLINE batch<T, A> min(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept
@@ -1383,8 +1386,8 @@ namespace xsimd
13831386
* max *
13841387
*******/
13851388

1386-
WRAP_BINARY_INT_EXCLUDING_64(vmaxq_u8, vmaxq_s8, vmaxq_u16, vmaxq_s16, vmaxq_u32, vmaxq_s32, detail::identity_return_type)
1387-
WRAP_BINARY_FLOAT(vmaxq_f32, detail::identity_return_type)
1389+
WRAP_BINARY_INT_EXCLUDING_64(vmaxq_u8, vmaxq_s8, vmaxq_u16, vmaxq_s16, vmaxq_u32, vmaxq_s32, detail_identity_return_type)
1390+
WRAP_BINARY_FLOAT(vmaxq_f32, detail_identity_return_type)
13881391

13891392
template <class A, class T, detail::exclude_int64_neon_t<T> = 0>
13901393
XSIMD_INLINE batch<T, A> max(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>) noexcept

0 commit comments

Comments
 (0)