Skip to content

Commit ca9533e

Browse files
authored
Merge pull request #604 from xtensor-stack/feature/contexprness
Neither std::tuple nor std::make_tuple are contexpr in C++11
2 parents 52984ef + dc76bb3 commit ca9533e

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

include/xsimd/arch/xsimd_neon.hpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ namespace xsimd
630630
batch<T, A> add(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
631631
{
632632
using register_type = typename batch<T, A>::register_type;
633-
constexpr detail::neon_dispatcher::binary dispatcher =
633+
const detail::neon_dispatcher::binary dispatcher =
634634
{
635635
std::make_tuple(wrap::vaddq_u8, wrap::vaddq_s8, wrap::vaddq_u16, wrap::vaddq_s16,
636636
wrap::vaddq_u32, wrap::vaddq_s32, wrap::vaddq_u64, wrap::vaddq_s64,
@@ -649,7 +649,7 @@ namespace xsimd
649649
batch<T, A> sadd(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
650650
{
651651
using register_type = typename batch<T, A>::register_type;
652-
constexpr detail::neon_dispatcher::binary dispatcher =
652+
const detail::neon_dispatcher::binary dispatcher =
653653
{
654654
std::make_tuple(wrap::vqaddq_u8, wrap::vqaddq_s8, wrap::vqaddq_u16, wrap::vqaddq_s16,
655655
wrap::vqaddq_u32, wrap::vqaddq_s32, wrap::vqaddq_u64, wrap::vqaddq_s64,
@@ -669,7 +669,7 @@ namespace xsimd
669669
batch<T, A> sub(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
670670
{
671671
using register_type = typename batch<T, A>::register_type;
672-
constexpr detail::neon_dispatcher::binary dispatcher =
672+
const detail::neon_dispatcher::binary dispatcher =
673673
{
674674
std::make_tuple(wrap::vsubq_u8, wrap::vsubq_s8, wrap::vsubq_u16, wrap::vsubq_s16,
675675
wrap::vsubq_u32, wrap::vsubq_s32, wrap::vsubq_u64, wrap::vsubq_s64,
@@ -688,7 +688,7 @@ namespace xsimd
688688
batch<T, A> ssub(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
689689
{
690690
using register_type = typename batch<T, A>::register_type;
691-
constexpr detail::neon_dispatcher::binary dispatcher =
691+
const detail::neon_dispatcher::binary dispatcher =
692692
{
693693
std::make_tuple(wrap::vqsubq_u8, wrap::vqsubq_s8, wrap::vqsubq_u16, wrap::vqsubq_s16,
694694
wrap::vqsubq_u32, wrap::vqsubq_s32, wrap::vqsubq_u64, wrap::vqsubq_s64,
@@ -709,7 +709,7 @@ namespace xsimd
709709
batch<T, A> mul(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
710710
{
711711
using register_type = typename batch<T, A>::register_type;
712-
constexpr detail::excluding_int64_dispatcher::binary dispatcher =
712+
const detail::excluding_int64_dispatcher::binary dispatcher =
713713
{
714714
std::make_tuple(wrap::vmulq_u8, wrap::vmulq_s8, wrap::vmulq_u16, wrap::vmulq_s16,
715715
wrap::vmulq_u32, wrap::vmulq_s32, wrap::vmulq_f32)
@@ -763,7 +763,7 @@ namespace xsimd
763763
batch_bool<T, A> eq(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
764764
{
765765
using register_type = typename batch<T, A>::register_type;
766-
constexpr detail::excluding_int64_comp_dispatcher::binary dispatcher =
766+
const detail::excluding_int64_comp_dispatcher::binary dispatcher =
767767
{
768768
std::make_tuple(wrap::vceqq_u8, wrap::vceqq_s8, wrap::vceqq_u16, wrap::vceqq_s16,
769769
wrap::vceqq_u32, wrap::vceqq_s32, wrap::vceqq_f32)
@@ -776,7 +776,7 @@ namespace xsimd
776776
{
777777
using register_type = typename batch_bool<T, A>::register_type;
778778
using dispatcher_type = detail::neon_comp_dispatcher_impl<uint8x16_t, uint16x8_t, uint32x4_t>::binary;
779-
constexpr dispatcher_type dispatcher =
779+
const dispatcher_type dispatcher =
780780
{
781781
std::make_tuple(wrap::vceqq_u8, wrap::vceqq_u16, wrap::vceqq_u32)
782782
};
@@ -806,7 +806,7 @@ namespace xsimd
806806
batch_bool<T, A> lt(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
807807
{
808808
using register_type = typename batch<T, A>::register_type;
809-
constexpr detail::excluding_int64_comp_dispatcher::binary dispatcher =
809+
const detail::excluding_int64_comp_dispatcher::binary dispatcher =
810810
{
811811
std::make_tuple(wrap::vcltq_u8, wrap::vcltq_s8, wrap::vcltq_u16, wrap::vcltq_s16,
812812
wrap::vcltq_u32, wrap::vcltq_s32, wrap::vcltq_f32)
@@ -831,7 +831,7 @@ namespace xsimd
831831
batch_bool<T, A> le(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
832832
{
833833
using register_type = typename batch<T, A>::register_type;
834-
constexpr detail::excluding_int64_comp_dispatcher::binary dispatcher =
834+
const detail::excluding_int64_comp_dispatcher::binary dispatcher =
835835
{
836836
std::make_tuple(wrap::vcleq_u8, wrap::vcleq_s8, wrap::vcleq_u16, wrap::vcleq_s16,
837837
wrap::vcleq_u32, wrap::vcleq_s32, wrap::vcleq_f32)
@@ -856,7 +856,7 @@ namespace xsimd
856856
batch_bool<T, A> gt(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
857857
{
858858
using register_type = typename batch<T, A>::register_type;
859-
constexpr detail::excluding_int64_comp_dispatcher::binary dispatcher =
859+
const detail::excluding_int64_comp_dispatcher::binary dispatcher =
860860
{
861861
std::make_tuple(wrap::vcgtq_u8, wrap::vcgtq_s8, wrap::vcgtq_u16, wrap::vcgtq_s16,
862862
wrap::vcgtq_u32, wrap::vcgtq_s32, wrap::vcgtq_f32)
@@ -881,7 +881,7 @@ namespace xsimd
881881
batch_bool<T, A> ge(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
882882
{
883883
using register_type = typename batch<T, A>::register_type;
884-
constexpr detail::excluding_int64_comp_dispatcher::binary dispatcher =
884+
const detail::excluding_int64_comp_dispatcher::binary dispatcher =
885885
{
886886
std::make_tuple(wrap::vcgeq_u8, wrap::vcgeq_s8, wrap::vcgeq_u16, wrap::vcgeq_s16,
887887
wrap::vcgeq_u32, wrap::vcgeq_s32, wrap::vcgeq_f32)
@@ -912,7 +912,7 @@ namespace xsimd
912912
template <class V>
913913
V bitwise_and_neon(V const& lhs, V const& rhs)
914914
{
915-
constexpr neon_dispatcher::binary dispatcher =
915+
const neon_dispatcher::binary dispatcher =
916916
{
917917
std::make_tuple(wrap::vandq_u8, wrap::vandq_s8, wrap::vandq_u16, wrap::vandq_s16,
918918
wrap::vandq_u32, wrap::vandq_s32, wrap::vandq_u64, wrap::vandq_s64,
@@ -953,7 +953,7 @@ namespace xsimd
953953
template <class V>
954954
V bitwise_or_neon(V const& lhs, V const& rhs)
955955
{
956-
constexpr neon_dispatcher::binary dispatcher =
956+
const neon_dispatcher::binary dispatcher =
957957
{
958958
std::make_tuple(wrap::vorrq_u8, wrap::vorrq_s8, wrap::vorrq_u16, wrap::vorrq_s16,
959959
wrap::vorrq_u32, wrap::vorrq_s32, wrap::vorrq_u64, wrap::vorrq_s64,
@@ -994,7 +994,7 @@ namespace xsimd
994994
template <class V>
995995
V bitwise_xor_neon(V const& lhs, V const& rhs)
996996
{
997-
constexpr neon_dispatcher::binary dispatcher =
997+
const neon_dispatcher::binary dispatcher =
998998
{
999999
std::make_tuple(wrap::veorq_u8, wrap::veorq_s8, wrap::veorq_u16, wrap::veorq_s16,
10001000
wrap::veorq_u32, wrap::veorq_s32, wrap::veorq_u64, wrap::veorq_s64,
@@ -1054,7 +1054,7 @@ namespace xsimd
10541054
template <class V>
10551055
V bitwise_not_neon(V const& arg)
10561056
{
1057-
constexpr neon_dispatcher::unary dispatcher =
1057+
const neon_dispatcher::unary dispatcher =
10581058
{
10591059
std::make_tuple(wrap::vmvnq_u8, wrap::vmvnq_s8, wrap::vmvnq_u16, wrap::vmvnq_s16,
10601060
wrap::vmvnq_u32, wrap::vmvnq_s32,
@@ -1095,7 +1095,7 @@ namespace xsimd
10951095
template <class V>
10961096
V bitwise_andnot_neon(V const& lhs, V const& rhs)
10971097
{
1098-
constexpr detail::neon_dispatcher::binary dispatcher =
1098+
const detail::neon_dispatcher::binary dispatcher =
10991099
{
11001100
std::make_tuple(wrap::vbicq_u8, wrap::vbicq_s8, wrap::vbicq_u16, wrap::vbicq_s16,
11011101
wrap::vbicq_u32, wrap::vbicq_s32, wrap::vbicq_u64, wrap::vbicq_s64,
@@ -1130,7 +1130,7 @@ namespace xsimd
11301130
batch<T, A> min(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
11311131
{
11321132
using register_type = typename batch<T, A>::register_type;
1133-
constexpr detail::excluding_int64_dispatcher::binary dispatcher =
1133+
const detail::excluding_int64_dispatcher::binary dispatcher =
11341134
{
11351135
std::make_tuple(wrap::vminq_u8, wrap::vminq_s8, wrap::vminq_u16, wrap::vminq_s16,
11361136
wrap::vminq_u32, wrap::vminq_s32, wrap::vminq_f32)
@@ -1155,7 +1155,7 @@ namespace xsimd
11551155
batch<T, A> max(batch<T, A> const& lhs, batch<T, A> const& rhs, requires_arch<neon>)
11561156
{
11571157
using register_type = typename batch<T, A>::register_type;
1158-
constexpr detail::excluding_int64_dispatcher::binary dispatcher =
1158+
const detail::excluding_int64_dispatcher::binary dispatcher =
11591159
{
11601160
std::make_tuple(wrap::vmaxq_u8, wrap::vmaxq_s8, wrap::vmaxq_u16, wrap::vmaxq_s16,
11611161
wrap::vmaxq_u32, wrap::vmaxq_s32, wrap::vmaxq_f32)
@@ -1202,7 +1202,7 @@ namespace xsimd
12021202
batch<T, A> abs(batch<T, A> const& arg, requires_arch<neon>)
12031203
{
12041204
using register_type = typename batch<T, A>::register_type;
1205-
constexpr detail::excluding_int64_dispatcher::unary dispatcher =
1205+
const detail::excluding_int64_dispatcher::unary dispatcher =
12061206
{
12071207
std::make_tuple(detail::abs_u8, wrap::vabsq_s8, detail::abs_u16, wrap::vabsq_s16,
12081208
detail::abs_u32, wrap::vabsq_s32, wrap::vabsq_f32)
@@ -1389,7 +1389,7 @@ namespace xsimd
13891389
{
13901390
using bool_register_type = typename batch_bool<T, A>::register_type;
13911391
using register_type = typename batch<T, A>::register_type;
1392-
constexpr detail::neon_select_dispatcher dispatcher =
1392+
const detail::neon_select_dispatcher dispatcher =
13931393
{
13941394
std::make_tuple(wrap::vbslq_u8, wrap::vbslq_s8, wrap::vbslq_u16, wrap::vbslq_s16,
13951395
wrap::vbslq_u32, wrap::vbslq_s32, wrap::vbslq_u64, wrap::vbslq_s64,
@@ -2171,7 +2171,7 @@ namespace xsimd
21712171
};
21722172

21732173
template <class R, class... T>
2174-
constexpr bitwise_caster_impl<R, T...> make_bitwise_caster_impl(R (*...arg)(T))
2174+
const bitwise_caster_impl<R, T...> make_bitwise_caster_impl(R (*...arg)(T))
21752175
{
21762176
return {std::make_tuple(arg...)};
21772177
}
@@ -2210,7 +2210,7 @@ namespace xsimd
22102210
template <class A, class T, class R>
22112211
batch<R, A> bitwise_cast(batch<T, A> const& arg, batch<R, A> const&, requires_arch<neon>)
22122212
{
2213-
constexpr detail::neon_bitwise_caster caster = {
2213+
const detail::neon_bitwise_caster caster = {
22142214
std::make_tuple(
22152215
detail::make_bitwise_caster_impl(wrap::vreinterpretq_u8_u8, wrap::vreinterpretq_u8_s8, wrap::vreinterpretq_u8_u16, wrap::vreinterpretq_u8_s16,
22162216
wrap::vreinterpretq_u8_u32, wrap::vreinterpretq_u8_s32, wrap::vreinterpretq_u8_u64, wrap::vreinterpretq_u8_s64,

0 commit comments

Comments
 (0)