We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent d4b8109 commit 2e6c1b1Copy full SHA for 2e6c1b1
Vc/sse/detail.h
@@ -764,9 +764,9 @@ Vc_INTRINSIC schar max(__m128i a, schar) {
764
return std::max(schar(_mm_cvtsi128_si32(a) >> 8), schar(_mm_cvtsi128_si32(a)));
765
}
766
Vc_INTRINSIC uchar max(__m128i a, uchar) {
767
- a = max(a, _mm_shuffle_epi32(a, _MM_SHUFFLE(1, 0, 3, 2)), schar());
768
- a = max(a, _mm_shufflelo_epi16(a, _MM_SHUFFLE(1, 0, 3, 2)), schar());
769
- a = max(a, _mm_shufflelo_epi16(a, _MM_SHUFFLE(1, 1, 1, 1)), schar());
+ a = max(a, _mm_shuffle_epi32(a, _MM_SHUFFLE(1, 0, 3, 2)), uchar());
+ a = max(a, _mm_shufflelo_epi16(a, _MM_SHUFFLE(1, 0, 3, 2)), uchar());
+ a = max(a, _mm_shufflelo_epi16(a, _MM_SHUFFLE(1, 1, 1, 1)), uchar());
770
return std::max((_mm_cvtsi128_si32(a) >> 8) & 0xff, _mm_cvtsi128_si32(a) & 0xff);
771
772
tests/arithmetics.cpp
@@ -472,6 +472,13 @@ TEST_TYPES(Vec, testMax, AllVectors)
472
473
474
475
+// Tests issue: https://github.com/VcDevel/Vc/issues/349
476
+TEST(Vec, maxChar) {
477
+ uint8_t a[64]{0, 10, 250};
478
+ COMPARE(Vc::schar_v((signed char*)a).max() == 10);
479
+ COMPARE(Vc::char_v(a).max() == 250);
480
+}
481
+
482
// testProduct{{{1
483
TEST_TYPES(Vec, testProduct, AllVectors)
484
{
0 commit comments