mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 20:00:10 +01:00
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>
63 lines
1.5 KiB
C++
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);
|
|
}
|