mesa/src/intel/compiler/test_opt_combine_constants.cpp
Caio Oliveira 7ae638c0fe brw: Add brw_builder::uniform()
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34355>
2025-04-04 23:07:21 +00:00

63 lines
1.5 KiB
C++

/*
* Copyright (c) 2024 Intel Corporation
* SPDX-License-Identifier: MIT
*/
#include "test_helpers.h"
#include "brw_builder.h"
class CombineConstantsTest : public brw_shader_pass_test {};
TEST_F(CombineConstantsTest, Simple)
{
brw_builder bld = make_shader(MESA_SHADER_COMPUTE);
brw_builder exp = make_shader(MESA_SHADER_COMPUTE);
brw_reg r = brw_vec8_grf(1, 0);
brw_reg imm_a = brw_imm_d(1);
brw_reg imm_b = brw_imm_d(2);
bld.SEL(r, imm_a, imm_b);
EXPECT_PROGRESS(brw_opt_combine_constants, bld);
brw_reg tmp = component(exp.vgrf(BRW_TYPE_D), 0);
exp.uniform().MOV(tmp, imm_a);
exp .SEL(r, tmp, imm_b);
EXPECT_SHADERS_MATCH(bld, exp);
}
TEST_F(CombineConstantsTest, DoContainingDo)
{
brw_builder bld = make_shader(MESA_SHADER_COMPUTE);
brw_builder exp = make_shader(MESA_SHADER_COMPUTE);
brw_reg r1 = brw_vec8_grf(1, 0);
brw_reg r2 = brw_vec8_grf(2, 0);
brw_reg imm_a = brw_imm_d(1);
brw_reg imm_b = brw_imm_d(2);
bld.DO();
bld.DO();
bld.SEL(r1, imm_a, imm_b);
bld.WHILE();
bld.WHILE();
bld.SEL(r2, imm_a, imm_b);
EXPECT_PROGRESS(brw_opt_combine_constants, bld);
/* Explicit emit the expected FLOW instruction. */
exp.emit(BRW_OPCODE_DO);
brw_reg tmp = component(exp.vgrf(BRW_TYPE_D), 0);
exp.uniform().MOV(tmp, imm_a);
exp.emit(SHADER_OPCODE_FLOW);
exp.DO();
exp.SEL(r1, tmp, imm_b);
exp.WHILE();
exp.WHILE();
exp.SEL(r2, tmp, imm_b);
EXPECT_SHADERS_MATCH(bld, exp);
}