@@ -74,6 +74,7 @@ namespace eve::detail
74
74
else
75
75
{
76
76
constexpr auto use_avx2 = current_api >= avx2;
77
+ constexpr auto use_avx = current_api >= avx;
77
78
constexpr auto use_sse4_1 = current_api >= sse4_1;
78
79
constexpr auto lt = []<typename E>(E ev, E fv) { return as_logical_t <E>(ev < fv); };
79
80
@@ -84,17 +85,18 @@ namespace eve::detail
84
85
return bit_cast ((bit_cast (lhs, as (sm)) - sm) < (bit_cast (rhs, as (sm)) - sm), as<l_t >{});
85
86
};
86
87
87
- if constexpr (use_avx2 && c == category::int64x4) return _mm256_cmpgt_epi64 (b, a);
88
- else if constexpr (use_avx2 && c == category::uint64x4) return unsigned_cmp (a, b);
89
- else if constexpr (use_avx2 && c == category::int32x8) return _mm256_cmpgt_epi32 (b, a);
90
- else if constexpr (use_avx2 && c == category::uint32x8) return eve::min (a, b) != b;
91
- else if constexpr (use_avx2 && c == category::int16x16) return _mm256_cmpgt_epi16 (b, a);
92
- else if constexpr (use_avx2 && c == category::uint16x16) return eve::min (a, b) != b;
93
- else if constexpr (use_avx2 && c == category::int8x32) return _mm256_cmpgt_epi8 (b, a);
94
- else if constexpr (use_avx2 && c == category::uint8x32) return eve::min (a, b) != b;
95
- else if constexpr (c == category::int32x4) return _mm_cmplt_epi32 (a, b);
96
- else if constexpr (c == category::int16x8) return _mm_cmplt_epi16 (a, b);
97
- else if constexpr (c == category::int8x16) return _mm_cmplt_epi8 (a, b);
88
+ if constexpr (use_avx2 && c == category::int64x4) return _mm256_cmpgt_epi64 (b, a);
89
+ else if constexpr (use_avx2 && c == category::uint64x4) return unsigned_cmp (a, b);
90
+ else if constexpr (use_avx2 && c == category::int32x8) return _mm256_cmpgt_epi32 (b, a);
91
+ else if constexpr (use_avx2 && c == category::uint32x8) return eve::min (a, b) != b;
92
+ else if constexpr (use_avx2 && c == category::int16x16) return _mm256_cmpgt_epi16 (b, a);
93
+ else if constexpr (use_avx2 && c == category::uint16x16) return eve::min (a, b) != b;
94
+ else if constexpr (use_avx2 && c == category::int8x32) return _mm256_cmpgt_epi8 (b, a);
95
+ else if constexpr (use_avx2 && c == category::uint8x32) return eve::min (a, b) != b;
96
+ else if constexpr (use_avx && ((sizeof (T) * N::value) == 32 )) return aggregate (is_less, a, b);
97
+ else if constexpr (c == category::int32x4) return _mm_cmplt_epi32 (a, b);
98
+ else if constexpr (c == category::int16x8) return _mm_cmplt_epi16 (a, b);
99
+ else if constexpr (c == category::int8x16) return _mm_cmplt_epi8 (a, b);
98
100
else if constexpr (c == category::uint32x4)
99
101
{
100
102
if constexpr (use_sse4_1) return eve::min (a, b) != b;
0 commit comments