From 728146b2fc9129bd40bcb7cf0432b97ac65a0842 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 26 Mar 2023 22:01:57 +0200 Subject: [PATCH] aco: add test for min/max combining with opsel Reviewed-by: Rhys Perry Part-of: --- src/amd/compiler/tests/test_optimizer.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/amd/compiler/tests/test_optimizer.cpp b/src/amd/compiler/tests/test_optimizer.cpp index 2be2732fd93..187e39d304a 100644 --- a/src/amd/compiler/tests/test_optimizer.cpp +++ b/src/amd/compiler/tests/test_optimizer.cpp @@ -2095,3 +2095,26 @@ BEGIN_TEST(optimize.combine_comparison_ordering_opsel) finish_opt_test(); END_TEST + +BEGIN_TEST(optimize.max3_opsel) + /* TODO make these work before GFX11 using SDWA. */ + for (unsigned i = GFX11; i <= GFX11; i++) { + //>> v1: %a, v1: %b, v2b: %c = p_startpgm + if (!setup_cs("v1 v1 v2b", GFX11)) + continue; + + Temp a = inputs[0]; + Temp b = inputs[1]; + Temp c = inputs[2]; + + Temp a_hi = bld.pseudo(aco_opcode::p_extract_vector, bld.def(v2b), a, Operand::c32(1)); + Temp b_hi = bld.pseudo(aco_opcode::p_extract_vector, bld.def(v2b), b, Operand::c32(1)); + + //! v2b: %res0 = v_max3_f16 hi(%a), %c, hi(%b) + //! p_unit_test 0, %res0 + writeout(0, bld.vop2(aco_opcode::v_max_f16, bld.def(v2b), + bld.vop2(aco_opcode::v_max_f16, bld.def(v2b), a_hi, c), b_hi)); + + finish_opt_test(); + } +END_TEST