Skip to content

Commit ac0d5d2

Browse files
jan-wassenbergcopybara-github
authored andcommitted
release fix: workaround for RVV clang. Refs #2602
PiperOrigin-RevId: 794908984
1 parent a9b1ee9 commit ac0d5d2

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

hwy/tests/memory_test.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
// Ensure incompatibilities with Windows macros (e.g. #define StoreFence) are
1717
// detected. Must come before Highway headers.
1818
#include "hwy/base.h"
19+
#include "hwy/nanobenchmark.h"
1920
#include "hwy/tests/test_util.h"
2021
#if HWY_OS_WIN
2122
#ifndef NOMINMAX
@@ -537,25 +538,26 @@ class TestStoreN {
537538

538539
const size_t lplb = HWY_MAX(N / 4, lpb);
539540
for (size_t i = HWY_MAX(lpb * 2, lplb); i <= N * 2; i += lplb) {
540-
size_t max_num_of_lanes_to_store = i + (11 & (lpb - 1));
541+
size_t max_lanes_to_store =
542+
i + (11 & (lpb - 1)) + static_cast<size_t>(hwy::Unpredictable1() - 1);
541543

542-
const Vec<D> v = IotaForSpecial(d, max_num_of_lanes_to_store + 1);
544+
const Vec<D> v = IotaForSpecial(d, max_lanes_to_store + 1);
543545
const Vec<D> v_expected =
544-
IfThenElse(FirstN(d, max_num_of_lanes_to_store), v, v_neg_fill_val);
546+
IfThenElse(FirstN(d, max_lanes_to_store), v, v_neg_fill_val);
545547

546548
Store(v_expected, d, expected.get() + buf_offset);
547549
Store(v_neg_fill_val, d, actual.get() + buf_offset);
548-
StoreN(v, d, actual.get() + buf_offset, max_num_of_lanes_to_store);
550+
StoreN(v, d, actual.get() + buf_offset, max_lanes_to_store);
549551

550552
// Clang arm7 workaround; requires these to be non-const.
551-
PreventElision(max_num_of_lanes_to_store);
553+
PreventElision(max_lanes_to_store);
552554
PreventElision(buf_size);
553555

554556
HWY_ASSERT_ARRAY_EQ(expected.get(), actual.get(), buf_size);
555557

556558
StoreU(v_expected, d, expected.get() + buf_offset + 3);
557559
StoreU(v_neg_fill_val, d, actual.get() + buf_offset + 3);
558-
StoreN(v, d, actual.get() + buf_offset + 3, max_num_of_lanes_to_store);
560+
StoreN(v, d, actual.get() + buf_offset + 3, max_lanes_to_store);
559561
HWY_ASSERT_ARRAY_EQ(expected.get(), actual.get(), buf_size);
560562
}
561563
}

0 commit comments

Comments
 (0)