aco/tests: add regalloc.scratch_sgpr.create_vector
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12172>
This commit is contained in:
parent
f41200d289
commit
b1e4794f0f
|
@ -169,7 +169,7 @@ void finish_opt_test()
|
|||
aco_print_program(program.get(), output);
|
||||
}
|
||||
|
||||
void finish_ra_test(ra_test_policy policy)
|
||||
void finish_ra_test(ra_test_policy policy, bool lower)
|
||||
{
|
||||
finish_program(program.get());
|
||||
if (!aco::validate_ir(program.get())) {
|
||||
|
@ -186,6 +186,11 @@ void finish_ra_test(ra_test_policy policy)
|
|||
return;
|
||||
}
|
||||
|
||||
if (lower) {
|
||||
aco::ssa_elimination(program.get());
|
||||
aco::lower_to_hw_instr(program.get());
|
||||
}
|
||||
|
||||
aco_print_program(program.get(), output);
|
||||
}
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ bool setup_cs(const char *input_spec, enum chip_class chip_class,
|
|||
void finish_program(aco::Program *program);
|
||||
void finish_validator_test();
|
||||
void finish_opt_test();
|
||||
void finish_ra_test(aco::ra_test_policy);
|
||||
void finish_ra_test(aco::ra_test_policy, bool lower=false);
|
||||
void finish_optimizer_postRA_test();
|
||||
void finish_to_hw_instr_test();
|
||||
void finish_insert_nops_test();
|
||||
|
|
|
@ -147,3 +147,40 @@ BEGIN_TEST(regalloc.precolor.vector.collect)
|
|||
|
||||
finish_ra_test(ra_test_policy());
|
||||
END_TEST
|
||||
|
||||
BEGIN_TEST(regalloc.scratch_sgpr.create_vector)
|
||||
if (!setup_cs("v1 s1", GFX7))
|
||||
return;
|
||||
|
||||
Temp tmp = bld.pseudo(aco_opcode::p_extract_vector, bld.def(v1b), inputs[0], Operand::zero());
|
||||
|
||||
//>> v3b: %0:v[0][0:24] = v_and_b32 0xffffff, %0:v[0][0:24]
|
||||
//! s1: %0:s[1] = s_mov_b32 0x1000001
|
||||
//! v1: %0:v[0] = v_mul_lo_u32 %0:s[1], %_:v[0][0:8]
|
||||
bld.pseudo(aco_opcode::p_create_vector, bld.def(v1), Operand(v3b), Operand(tmp));
|
||||
|
||||
//! p_unit_test %_:s[0]
|
||||
//! s_endpgm
|
||||
bld.pseudo(aco_opcode::p_unit_test, inputs[1]);
|
||||
|
||||
finish_ra_test(ra_test_policy(), true);
|
||||
END_TEST
|
||||
|
||||
BEGIN_TEST(regalloc.scratch_sgpr.create_vector_sgpr_operand)
|
||||
if (!setup_cs("v2 s1", GFX7))
|
||||
return;
|
||||
|
||||
Temp tmp = bld.pseudo(aco_opcode::p_extract_vector, bld.def(v1b), inputs[0], Operand::c32(4u));
|
||||
|
||||
//>> v1: %0:v[0] = v_mov_b32 %_:s[0]
|
||||
//! v3b: %0:v[1][0:24] = v_and_b32 0xffffff, %0:v[1][0:24]
|
||||
//! s1: %0:s[1] = s_mov_b32 0x1000001
|
||||
//! v1: %0:v[1] = v_mul_lo_u32 %0:s[1], %_:v[1][0:8]
|
||||
bld.pseudo(aco_opcode::p_create_vector, bld.def(v2), inputs[1], Operand(v3b), Operand(tmp));
|
||||
|
||||
//! p_unit_test %_:s[0]
|
||||
//! s_endpgm
|
||||
bld.pseudo(aco_opcode::p_unit_test, inputs[1]);
|
||||
|
||||
finish_ra_test(ra_test_policy(), true);
|
||||
END_TEST
|
||||
|
|
Loading…
Reference in New Issue