From 677ec2e323f99b20a97d730a3a7fb4a26c25702b Mon Sep 17 00:00:00 2001 From: gregory Date: Fri, 16 Dec 2022 08:58:48 -0800 Subject: [PATCH 1/3] Test fix for atomic load/store --- SYCL/ESIMD/lsc/atomic_smoke.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/SYCL/ESIMD/lsc/atomic_smoke.cpp b/SYCL/ESIMD/lsc/atomic_smoke.cpp index 50e9148c9b..44e4cd926a 100644 --- a/SYCL/ESIMD/lsc/atomic_smoke.cpp +++ b/SYCL/ESIMD/lsc/atomic_smoke.cpp @@ -344,6 +344,32 @@ template struct ImplDec { // processed. constexpr float FPDELTA = 0.5f; +template struct ImplLoad { + static constexpr AtomicOp atomic_op = AtomicOp::load; + static constexpr int n_args = 0; + + static T init(int i, const Config &cfg) { return (T)(i + FPDELTA); } + + static T gold(int i, const Config &cfg) { + T gold = init(i, cfg); + return gold; + } +}; + +template struct ImplStore { + static constexpr AtomicOp atomic_op = AtomicOp::store; + static constexpr int n_args = 1; + + static T init(int i, const Config &cfg) { return 0; } + + static T gold(int i, const Config &cfg) { + T gold = is_updated(i, N, cfg) ? (T)(i + FPDELTA) : init(i, cfg); + return gold; + } + + static T arg0(int i) { return (T)(i + FPDELTA); } +}; + template struct ImplAdd { static constexpr C atomic_op = Op; static constexpr int n_args = 1; @@ -576,6 +602,12 @@ int main(void) { passed &= test(q, cfg); #endif // USE_DWORD_ATOMICS #endif // CMPXCHG_TEST + + // Check load/store operations + passed &= test_int_types<8, ImplLoad>(q, cfg); + passed &= test_int_types<8, ImplStore>(q, cfg); + passed &= test(q, cfg); + // TODO: check double other vector lengths in LSC mode. std::cout << (passed ? "Passed\n" : "FAILED\n"); From 3378d3be5df7e578b51a8ed3c2d6c560b11c980d Mon Sep 17 00:00:00 2001 From: gregory Date: Fri, 16 Dec 2022 09:26:56 -0800 Subject: [PATCH 2/3] fix broken test --- SYCL/ESIMD/lsc/atomic_smoke.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SYCL/ESIMD/lsc/atomic_smoke.cpp b/SYCL/ESIMD/lsc/atomic_smoke.cpp index 44e4cd926a..e05aa5e9e5 100644 --- a/SYCL/ESIMD/lsc/atomic_smoke.cpp +++ b/SYCL/ESIMD/lsc/atomic_smoke.cpp @@ -359,15 +359,16 @@ template struct ImplLoad { template struct ImplStore { static constexpr AtomicOp atomic_op = AtomicOp::store; static constexpr int n_args = 1; + static constexpr T base = (T)(2 + FPDELTA); static T init(int i, const Config &cfg) { return 0; } static T gold(int i, const Config &cfg) { - T gold = is_updated(i, N, cfg) ? (T)(i + FPDELTA) : init(i, cfg); + T gold = is_updated(i, N, cfg) ? base : init(i, cfg); return gold; } - static T arg0(int i) { return (T)(i + FPDELTA); } + static T arg0(int i) { return base; } }; template struct ImplAdd { From cea52c1386583d41fccc951c3eb1ce642e7c617e Mon Sep 17 00:00:00 2001 From: gregory Date: Thu, 5 Jan 2023 21:16:37 -0800 Subject: [PATCH 3/3] Fix test failures --- SYCL/ESIMD/lsc/atomic_smoke.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SYCL/ESIMD/lsc/atomic_smoke.cpp b/SYCL/ESIMD/lsc/atomic_smoke.cpp index e05aa5e9e5..eef3742f1c 100644 --- a/SYCL/ESIMD/lsc/atomic_smoke.cpp +++ b/SYCL/ESIMD/lsc/atomic_smoke.cpp @@ -604,11 +604,12 @@ int main(void) { #endif // USE_DWORD_ATOMICS #endif // CMPXCHG_TEST +#ifndef USE_DWORD_ATOMICS // Check load/store operations passed &= test_int_types<8, ImplLoad>(q, cfg); passed &= test_int_types<8, ImplStore>(q, cfg); passed &= test(q, cfg); - +#endif // USE_DWORD_ATOMICS // TODO: check double other vector lengths in LSC mode. std::cout << (passed ? "Passed\n" : "FAILED\n");