mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
aco/tests: Add post-RA optimizer testcase for partially overwritten VCC.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18488>
This commit is contained in:
parent
c4fa00f751
commit
d7cd49d54b
1 changed files with 18 additions and 0 deletions
|
|
@ -75,6 +75,24 @@ BEGIN_TEST(optimizer_postRA.vcmp)
|
|||
|
||||
//; del b, c, d, e, f
|
||||
|
||||
{
|
||||
/* When part of VCC is overwritten inbetween, don't optimize. */
|
||||
|
||||
//! s2: %b:vcc = v_cmp_eq_u32 0, %a:v[0]
|
||||
//! s2: %c:s[0-1], s1: %d:scc = s_and_b64 %b:vcc, %x:exec
|
||||
//! s1: %f:s[107] = s_mov_b32 0
|
||||
//! s2: %e:s[2-3] = p_cbranch_z %d:scc
|
||||
//! p_unit_test 1, %e:s[2-3], %f:vcc
|
||||
auto vcmp = bld.vopc(aco_opcode::v_cmp_eq_u32, bld.def(bld.lm, vcc), Operand::zero(),
|
||||
Operand(v_in, reg_v0));
|
||||
auto sand = bld.sop2(Builder::s_and, bld.def(bld.lm, reg_s0), bld.def(s1, scc), bld.vcc(vcmp), Operand(exec, bld.lm));
|
||||
auto ovrwr = bld.sop1(aco_opcode::s_mov_b32, bld.def(s1, vcc_hi), Operand::zero());
|
||||
auto br = bld.branch(aco_opcode::p_cbranch_z, bld.def(s2, reg_s2), bld.scc(sand.def(1).getTemp()));
|
||||
writeout(1, Operand(br, reg_s2), Operand(ovrwr, vcc));
|
||||
}
|
||||
|
||||
//; del b, c, d, e, f
|
||||
|
||||
{
|
||||
/* When the result of VOPC goes to an SGPR pair other than VCC, don't optimize */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue