mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
brw: Add a few basic tests for register coalesce
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34253>
This commit is contained in:
parent
22c399320b
commit
cfc4067b0e
2 changed files with 87 additions and 0 deletions
|
|
@ -218,6 +218,7 @@ if with_tests
|
|||
'test_opt_combine_constants.cpp',
|
||||
'test_opt_copy_propagation.cpp',
|
||||
'test_opt_cse.cpp',
|
||||
'test_opt_register_coalesce.cpp',
|
||||
'test_opt_saturate_propagation.cpp',
|
||||
'test_simd_selection.cpp',
|
||||
'test_vf_float_conversions.cpp',
|
||||
|
|
|
|||
86
src/intel/compiler/test_opt_register_coalesce.cpp
Normal file
86
src/intel/compiler/test_opt_register_coalesce.cpp
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* Copyright © 2025 Intel Corporation
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "test_helpers.h"
|
||||
#include "brw_builder.h"
|
||||
|
||||
class RegisterCoalesceTest : public brw_shader_pass_test {};
|
||||
|
||||
TEST_F(RegisterCoalesceTest, BasicMov)
|
||||
{
|
||||
brw_builder bld = make_shader();
|
||||
brw_builder exp = make_shader();
|
||||
|
||||
brw_reg a = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg b = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg c = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg i = brw_imm_f(42.0);
|
||||
|
||||
brw_reg x = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg y = vgrf(bld, exp, BRW_TYPE_F);
|
||||
|
||||
bld.ADD(x, a, b);
|
||||
bld.MOV(y, x);
|
||||
bld.MUL(c, y, i);
|
||||
|
||||
EXPECT_PROGRESS(brw_opt_register_coalesce, bld);
|
||||
|
||||
exp.ADD(x, a, b);
|
||||
exp.MUL(c, x, i);
|
||||
|
||||
EXPECT_SHADERS_MATCH(bld, exp);
|
||||
}
|
||||
|
||||
TEST_F(RegisterCoalesceTest, RegistersInterfere)
|
||||
{
|
||||
brw_builder bld = make_shader();
|
||||
|
||||
brw_reg a = vgrf(bld, BRW_TYPE_F);
|
||||
brw_reg b = vgrf(bld, BRW_TYPE_F);
|
||||
brw_reg c = vgrf(bld, BRW_TYPE_F);
|
||||
brw_reg d = vgrf(bld, BRW_TYPE_F);
|
||||
brw_reg i = brw_imm_f(42.0);
|
||||
|
||||
brw_reg x = vgrf(bld, BRW_TYPE_F);
|
||||
brw_reg y = vgrf(bld, BRW_TYPE_F);
|
||||
|
||||
bld.ADD(x, a, b);
|
||||
bld.MOV(y, x);
|
||||
bld.ADD(x, x, x);
|
||||
bld.MUL(c, y, i);
|
||||
bld.ADD(d, y, y);
|
||||
|
||||
EXPECT_NO_PROGRESS(brw_opt_register_coalesce, bld);
|
||||
}
|
||||
|
||||
TEST_F(RegisterCoalesceTest, InterfereButContainEachOther)
|
||||
{
|
||||
brw_builder bld = make_shader();
|
||||
brw_builder exp = make_shader();
|
||||
|
||||
brw_reg a = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg b = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg c = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg d = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg e = vgrf(bld, exp, BRW_TYPE_F);
|
||||
|
||||
brw_reg x = vgrf(bld, exp, BRW_TYPE_F);
|
||||
brw_reg y = vgrf(bld, exp, BRW_TYPE_F);
|
||||
|
||||
bld.MUL(x, a, b);
|
||||
bld.ADD(c, x, x);
|
||||
bld.ADD(d, x, x);
|
||||
bld.MOV(y, x);
|
||||
bld.ADD(e, x, y);
|
||||
|
||||
EXPECT_PROGRESS(brw_opt_register_coalesce, bld);
|
||||
|
||||
exp.MUL(x, a, b);
|
||||
exp.ADD(c, x, x);
|
||||
exp.ADD(d, x, x);
|
||||
exp.ADD(e, x, x);
|
||||
|
||||
EXPECT_SHADERS_MATCH(bld, exp);
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue