From b76d6725e27c97968229355a8b2ed8c0aeabd38d Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:12:06 -0600 Subject: [PATCH] nouveau/mme: nouveau/mme: Add builder tests for SLL and SRL Part-of: --- src/nouveau/mme/tests/mme_builder_test.cpp | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/nouveau/mme/tests/mme_builder_test.cpp b/src/nouveau/mme/tests/mme_builder_test.cpp index e7c616e48d2..90367d0254b 100644 --- a/src/nouveau/mme/tests/mme_builder_test.cpp +++ b/src/nouveau/mme/tests/mme_builder_test.cpp @@ -185,6 +185,35 @@ TEST_F(mme_builder_test, sub_imm) } } +TEST_F(mme_builder_test, sll_srl) +{ + static const uint32_t x = 0xac406fe1; + + for (auto sim : sims) { + mme_builder b; + mme_builder_init(&b, sim->devinfo); + + mme_value xv = mme_load(&b); + mme_value yv = mme_load(&b); + + sim->mme_store_data(&b, 0, mme_sll(&b, xv, yv)); + sim->mme_store_data(&b, 1, mme_srl(&b, xv, yv)); + + auto macro = mme_builder_finish_vec(&b); + + /* Fermi can't shift by 0 */ + for (uint32_t i = 1; i < 31; i++) { + std::vector params; + params.push_back(x); + params.push_back(i); + + sim->run_macro(macro, params); + ASSERT_EQ(sim->data[0], x << i); + ASSERT_EQ(sim->data[1], x >> i); + } + } +} + TEST_F(mme_builder_test, merge) { static const struct {