aco/tests: Fix p_startpgm definitions to registers

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36345>
This commit is contained in:
Daniel Schürmann
2025-07-28 12:25:11 +02:00
committed by Marge Bot
parent 779ea64c7c
commit caa2c22d8b
7 changed files with 67 additions and 80 deletions
+7 -3
View File
@@ -5,14 +5,14 @@
*/
#include "helpers.h"
#include "aco_ir.h"
#include "common/amd_family.h"
#include "common/nir/ac_nir.h"
#include "vk_format.h"
#include <llvm-c/Target.h>
#include <mutex>
#include <sstream>
#include <stdio.h>
using namespace aco;
@@ -112,11 +112,15 @@ setup_cs(const char* input_spec, enum amd_gfx_level gfx_level, enum radeon_famil
input_spec++;
}
PhysReg sgpr_reg{0};
PhysReg vgpr_reg{256};
aco_ptr<Instruction> startpgm{
create_instruction(aco_opcode::p_startpgm, Format::PSEUDO, 0, input_classes.size())};
for (unsigned i = 0; i < input_classes.size(); i++) {
inputs[i] = bld.tmp(input_classes[i]);
startpgm->definitions[i] = Definition(inputs[i]);
PhysReg& reg = input_classes[i].type() == RegType::sgpr ? sgpr_reg : vgpr_reg;
startpgm->definitions[i] = Definition(inputs[i], reg);
reg = reg.advance(input_classes[i].size() * 4);
}
bld.insert(std::move(startpgm));
}
+1 -1
View File
@@ -9,7 +9,7 @@ using namespace aco;
BEGIN_TEST(builder.v_mul_imm)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
@@ -9,7 +9,7 @@
using namespace aco;
BEGIN_TEST(lower_subdword.simple_extract)
//>> v1: %a, v2: %b = p_startpgm
//>> v1: %a:v[0], v2: %b:v[1-2] = p_startpgm
if (!setup_cs("v1 v2", GFX6))
return;
@@ -38,7 +38,7 @@ BEGIN_TEST(lower_subdword.simple_extract)
END_TEST
BEGIN_TEST(lower_subdword.simple_split)
//>> v1: %a, v2: %b = p_startpgm
//>> v1: %a:v[0], v2: %b:v[1-2] = p_startpgm
if (!setup_cs("v1 v2", GFX6))
return;
@@ -70,7 +70,7 @@ BEGIN_TEST(lower_subdword.simple_split)
END_TEST
BEGIN_TEST(lower_subdword.simple_create)
//>> v1: %b, v1: %w, v1: %tb, s1: %sd, v1: %vd = p_startpgm
//>> v1: %b:v[0], v1: %w:v[1], v1: %tb:v[2], s1: %sd:s[0], v1: %vd:v[3] = p_startpgm
if (!setup_cs("v1b v2b v3b s1 v1 ", GFX6))
return;
@@ -112,7 +112,7 @@ BEGIN_TEST(lower_subdword.simple_create)
END_TEST
BEGIN_TEST(lower_subdword.create_const_undef)
//>> v1: %b, v1: %w = p_startpgm
//>> v1: %b:v[0], v1: %w:v[1] = p_startpgm
if (!setup_cs("v1b v2b", GFX6))
return;
+33 -33
View File
@@ -9,7 +9,7 @@ using namespace aco;
BEGIN_TEST(optimize.neg)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
@@ -70,7 +70,7 @@ BEGIN_TEST(optimize.neg)
END_TEST
BEGIN_TEST(optimize.output_modifiers)
//>> v1: %a, v1: %b = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1] = p_startpgm
if (!setup_cs("v1 v1", GFX9))
return;
@@ -256,7 +256,7 @@ END_TEST
BEGIN_TEST(optimize.add_lshl)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> s1: %a, v1: %b = p_startpgm
//>> s1: %a:s[0], v1: %b:v[0] = p_startpgm
if (!setup_cs("s1 v1", (amd_gfx_level)i))
continue;
@@ -342,7 +342,7 @@ END_TEST
BEGIN_TEST(optimize.bcnt)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, s1: %b = p_startpgm
//>> v1: %a:v[0], s1: %b:s[0] = p_startpgm
if (!setup_cs("v1 s1", (amd_gfx_level)i))
continue;
@@ -429,7 +429,7 @@ BEGIN_TEST(optimize.clamp)
aco_print_operand(&cfg.ub, output);
fprintf(output, "\n");
//>> v1: %a, v1: %b, v1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2] = p_startpgm
//! v1: %res0 = @med3 @ub, @lb, %a
//! p_unit_test 0, %res0
@@ -497,7 +497,7 @@ BEGIN_TEST(optimize.clamp)
END_TEST
BEGIN_TEST(optimize.add3)
//>> v1: %a, v1: %b, v1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2] = p_startpgm
if (!setup_cs("v1 v1 v1", GFX9))
return;
@@ -526,7 +526,7 @@ END_TEST
BEGIN_TEST(optimize.minmax)
for (unsigned i = GFX10_3; i <= GFX11; i++) {
//>> v1: %a, v1: %b, v1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2] = p_startpgm
if (!setup_cs("v1 v1 v1", (amd_gfx_level)i))
continue;
@@ -590,7 +590,7 @@ END_TEST
BEGIN_TEST(optimize.mad_32_24)
for (unsigned i = GFX8; i <= GFX9; i++) {
//>> v1: %a, v1: %b, v1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2] = p_startpgm
if (!setup_cs("v1 v1 v1", (amd_gfx_level)i))
continue;
@@ -611,7 +611,7 @@ END_TEST
BEGIN_TEST(optimize.add_lshlrev)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0] = p_startpgm
if (!setup_cs("v1 v1 s1", (amd_gfx_level)i))
continue;
@@ -749,7 +749,7 @@ BEGIN_TEST(optimize.denorm_propagation)
fprintf(output, "can_propagate: %u\n", can_propagate);
//! src, dest, op: $src $dest $op
//! can_propagate: #can_propagate
//>> v1: %a, s2: %b = p_startpgm
//>> v1: %a:v[0], s2: %b:s[0-1] = p_startpgm
//; patterns = {'cndmask': 'v1: %{} = v_cndmask_b32 0, {}, %b',
//; 'min': 'v1: %{} = v_min_f32 0, {}',
@@ -799,7 +799,7 @@ BEGIN_TEST(optimize.denorm_propagation)
END_TEST
BEGIN_TEST(optimizer.dpp)
//>> v1: %a, v1: %b, s2: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s2: %c:s[0-1], s1: %d:s[2] = p_startpgm
if (!setup_cs("v1 v1 s2 s1", GFX10_3))
return;
@@ -909,7 +909,7 @@ BEGIN_TEST(optimizer.dpp)
END_TEST
BEGIN_TEST(optimize.dpp_prop)
//>> v1: %a, s1: %b = p_startpgm
//>> v1: %a:v[0], s1: %b:s[0] = p_startpgm
if (!setup_cs("v1 s1", GFX10))
return;
@@ -954,7 +954,7 @@ BEGIN_TEST(optimize.dpp_prop)
END_TEST
BEGIN_TEST(optimize.casts)
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %a16:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", GFX10_3))
return;
@@ -1027,7 +1027,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.input_conv.basic)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %a16:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", (amd_gfx_level)i))
continue;
@@ -1062,7 +1062,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.input_conv.precision)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %a16:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", (amd_gfx_level)i))
continue;
@@ -1117,7 +1117,7 @@ BEGIN_TEST(optimize.mad_mix.input_conv.modifiers)
for (unsigned i = GFX9; i <= GFX11; i++) {
if (i == GFX10_3)
continue;
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %a16:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", (amd_gfx_level)i))
continue;
@@ -1219,7 +1219,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.output_conv.basic)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v1: %b, v1: %c, v2b: %a16, v2b: %b16 = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2], v2b: %a16:v[3][0:16], v2b: %b16:v[4][0:16] = p_startpgm
if (!setup_cs("v1 v1 v1 v2b v2b", (amd_gfx_level)i))
continue;
@@ -1261,7 +1261,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.output_conv.precision)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v2b: %a16 = p_startpgm
//>> v2b: %a16:v[0][0:16] = p_startpgm
if (!setup_cs("v2b", (amd_gfx_level)i))
continue;
@@ -1285,7 +1285,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.output_conv.modifiers)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v1: %b, v2b: %a16, v2b: %b16 = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v2b: %a16:v[2][0:16], v2b: %b16:v[3][0:16] = p_startpgm
if (!setup_cs("v1 v1 v2b v2b", (amd_gfx_level)i))
continue;
@@ -1334,7 +1334,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.fma.basic)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v1: %b, v1: %c, v2b: %a16, v2b: %c16 = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2], v2b: %a16:v[3][0:16], v2b: %c16:v[4][0:16] = p_startpgm
if (!setup_cs("v1 v1 v1 v2b v2b", (amd_gfx_level)i))
continue;
@@ -1389,7 +1389,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.fma.precision)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v1: %b, v1: %c, v2b: %a16, v2b: %b16 = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2], v2b: %a16:v[3][0:16], v2b: %c16:v[4][0:16] = p_startpgm
if (!setup_cs("v1 v1 v1 v2b v2b", (amd_gfx_level)i))
continue;
@@ -1451,7 +1451,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.clamp)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %b:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", (amd_gfx_level)i))
continue;
@@ -1478,7 +1478,7 @@ END_TEST
BEGIN_TEST(optimize.mad_mix.cast)
for (unsigned i = GFX9; i <= GFX10; i++) {
//>> v1: %a, v2b: %a16 = p_startpgm
//>> v1: %a:v[0], v2b: %b:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", (amd_gfx_level)i))
continue;
@@ -1564,7 +1564,7 @@ BEGIN_TEST(optimize.vop3p_constants)
//; for i in range(36):
//; insert_pattern('Expected for %u: $_ / #expected%u' % (i, i))
//>> v1: %a = p_startpgm
//>> v1: %a:v[0] = p_startpgm
if (!setup_cs("v1", GFX10_3, CHIP_UNKNOWN, variant))
continue;
@@ -1667,7 +1667,7 @@ BEGIN_TEST(optimize.fmamix_two_literals)
* at least one uncombined use.
*/
for (unsigned i = GFX10; i <= GFX10_3; i++) {
//>> v1: %a, v1: %b = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1] = p_startpgm
if (!setup_cs("v1 v1", (amd_gfx_level)i))
continue;
@@ -1780,7 +1780,7 @@ END_TEST
BEGIN_TEST(optimize.fma_opsel)
/* TODO make these work before GFX11 using SDWA. */
for (unsigned i = GFX11; i <= GFX11; i++) {
//>> v2b: %a, v2b: %b, v1: %c, v1: %d, v1: %e = p_startpgm
//>> v2b: %a:v[0][0:16], v2b: %b:v[1][0:16], v1: %c:v[2], v1: %d:v[3], v1: %e:v[4] = p_startpgm
if (!setup_cs("v2b v2b v1 v1 v1", (amd_gfx_level)i))
continue;
@@ -1810,7 +1810,7 @@ BEGIN_TEST(optimize.fma_opsel)
END_TEST
BEGIN_TEST(optimize.dpp_opsel)
//>> v1: %a, v1: %b = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1] = p_startpgm
if (!setup_cs("v1 v1", GFX11))
return;
@@ -1837,7 +1837,7 @@ BEGIN_TEST(optimize.dpp_opsel)
END_TEST
BEGIN_TEST(optimize.apply_sgpr_swap_opsel)
//>> v1: %a, s1: %b = p_startpgm
//>> v1: %a:v[0], s1: %b:s[0] = p_startpgm
if (!setup_cs("v1 s1", GFX11))
return;
@@ -1861,7 +1861,7 @@ END_TEST
BEGIN_TEST(optimize.max3_opsel)
/* TODO make these work before GFX11 using SDWA. */
for (unsigned i = GFX11; i <= GFX11; i++) {
//>> v1: %a, v1: %b, v2b: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v2b: %c:v[2][0:16] = p_startpgm
if (!setup_cs("v1 v1 v2b", GFX11))
continue;
@@ -1882,7 +1882,7 @@ BEGIN_TEST(optimize.max3_opsel)
END_TEST
BEGIN_TEST(optimize.neg_mul_opsel)
//>> v1: %a, v2b: %b = p_startpgm
//>> v1: %a:v[0], v2b: %b:v[1][0:16] = p_startpgm
if (!setup_cs("v1 v2b", GFX11))
return;
@@ -1903,7 +1903,7 @@ BEGIN_TEST(optimize.neg_mul_opsel)
END_TEST
BEGIN_TEST(optimize.vinterp_inreg_output_modifiers)
//>> v1: %a, v1: %b, v1: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], v1: %c:v[2] = p_startpgm
if (!setup_cs("v1 v1 v1", GFX11))
return;
@@ -1944,7 +1944,7 @@ BEGIN_TEST(optimize.vinterp_inreg_output_modifiers)
END_TEST
BEGIN_TEST(optimize.s_pack)
//>> s1: %a, s1: %b, s1: %c = p_startpgm
//>> s1: %a:s[0], s1: %b:s[1], s1: %c:s[2] = p_startpgm
if (!setup_cs("s1 s1 s1", GFX11))
return;
@@ -2035,7 +2035,7 @@ BEGIN_TEST(optimizer.trans_inline_constant)
END_TEST
BEGIN_TEST(optimizer.trans_no_omod)
//>> s1: %a = p_startpgm
//>> s1: %a:s[0] = p_startpgm
if (!setup_cs("s1", GFX12))
return;
@@ -17,10 +17,6 @@ BEGIN_TEST(optimizer_postRA.vcmp)
ASSERTED bool setup_ok = setup_cs("v1", GFX8);
assert(setup_ok);
auto& startpgm = bld.instructions->at(0);
assert(startpgm->opcode == aco_opcode::p_startpgm);
startpgm->definitions[0].setFixed(reg_v0);
Temp v_in = inputs[0];
{
@@ -134,10 +130,14 @@ BEGIN_TEST(optimizer_postRA.vcmp)
END_TEST
BEGIN_TEST(optimizer_postRA.scc_nocmp_opt)
//>> s1: %a, s2: %y, s1: %z = p_startpgm
//>> s1: %a:s[0], s2: %y:s[4-5], s1: %z:s[6] = p_startpgm
ASSERTED bool setup_ok = setup_cs("s1 s2 s1", GFX6);
assert(setup_ok);
bld.instructions->at(0)->definitions[0].setFixed(PhysReg(0));
bld.instructions->at(0)->definitions[1].setFixed(PhysReg(4));
bld.instructions->at(0)->definitions[2].setFixed(PhysReg(6));
PhysReg reg_s0{0};
PhysReg reg_s2{2};
PhysReg reg_s3{3};
@@ -327,8 +327,6 @@ BEGIN_TEST(optimizer_postRA.dpp)
if (!setup_cs("v1 v1 s2 s2", GFX10_3))
return;
bld.instructions->at(0)->definitions[0].setFixed(PhysReg(256));
bld.instructions->at(0)->definitions[1].setFixed(PhysReg(257));
bld.instructions->at(0)->definitions[2].setFixed(vcc);
bld.instructions->at(0)->definitions[3].setFixed(PhysReg(0));
@@ -466,9 +464,6 @@ BEGIN_TEST(optimizer_postRA.dpp_across_exec)
if (!setup_cs("v1 v1", gfx))
continue;
bld.instructions->at(0)->definitions[0].setFixed(PhysReg(256));
bld.instructions->at(0)->definitions[1].setFixed(PhysReg(257));
PhysReg reg_v2(258);
Operand a(inputs[0], PhysReg(256));
Operand b(inputs[1], PhysReg(257));
@@ -493,9 +488,6 @@ BEGIN_TEST(optimizer_postRA.dpp_vcmpx)
if (!setup_cs("v1 v1", GFX11))
return;
bld.instructions->at(0)->definitions[0].setFixed(PhysReg(256));
bld.instructions->at(0)->definitions[1].setFixed(PhysReg(257));
PhysReg reg_v2(258);
Operand a(inputs[0], PhysReg(256));
Operand b(inputs[1], PhysReg(257));
@@ -516,10 +508,6 @@ BEGIN_TEST(optimizer_postRA.dpp_across_cf)
return;
aco_ptr<Instruction>& startpgm = bld.instructions->at(0);
startpgm->definitions[0].setFixed(PhysReg(256));
startpgm->definitions[1].setFixed(PhysReg(257));
startpgm->definitions[2].setFixed(PhysReg(258));
startpgm->definitions[3].setFixed(PhysReg(259));
startpgm->definitions[4].setFixed(PhysReg(0));
startpgm->definitions[5].setFixed(PhysReg(4));
@@ -682,11 +670,6 @@ BEGIN_TEST(optimizer_postRA.dpp_across_cf_linear_clobber)
if (!setup_cs("v1 v1 s2", GFX10_3))
return;
aco_ptr<Instruction>& startpgm = bld.instructions->at(0);
startpgm->definitions[0].setFixed(PhysReg(256));
startpgm->definitions[1].setFixed(PhysReg(257));
startpgm->definitions[2].setFixed(PhysReg(0));
Operand a(inputs[0], PhysReg(256)); /* source for DPP */
Operand b(inputs[1], PhysReg(257)); /* source for fadd */
Operand c(inputs[2], PhysReg(0)); /* condition */
@@ -19,7 +19,7 @@ BEGIN_TEST(setup_reduce_temp.divergent_if_phi)
* ... = phi ...
*/
// TODO: fix the RA validator to spot this
//>> s2: %_, v1: %a = p_startpgm
//>> s2: %_:s[0-1], v1: %a:v[0] = p_startpgm
if (!setup_cs("s2 v1", GFX9))
return;
+16 -16
View File
@@ -10,7 +10,7 @@ using namespace aco;
BEGIN_TEST(validate.sdwa.allow)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -32,7 +32,7 @@ END_TEST
BEGIN_TEST(validate.sdwa.support)
for (unsigned i = GFX7; i <= GFX11; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -48,7 +48,7 @@ END_TEST
BEGIN_TEST(validate.sdwa.operands)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %vgpr0, v1: %vgp1, s1: %sgpr0, s1: %sgpr1 = p_startpgm
//>> v1: %vgpr0:v[0], v1: %vgpr1:v[1], s1: %sgpr0:s[0], s1: %sgpr1:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -77,7 +77,7 @@ END_TEST
BEGIN_TEST(validate.sdwa.vopc)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %vgpr0, v1: %vgp1, s1: %sgpr0, s1: %sgpr1 = p_startpgm
//>> v1: %vgpr0:v[0], v1: %vgpr1:v[1], s1: %sgpr0:s[0], s1: %sgpr1:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -100,7 +100,7 @@ END_TEST
BEGIN_TEST(validate.sdwa.omod)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %vgpr0, v1: %vgp1, s1: %sgpr0, s1: %sgpr1 = p_startpgm
//>> v1: %vgpr0:v[0], v1: %vgpr1:v[1], s1: %sgpr0:s[0], s1: %sgpr1:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -116,7 +116,7 @@ END_TEST
BEGIN_TEST(validate.sdwa.vcc)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %vgpr0, v1: %vgpr1, s2: %sgpr0 = p_startpgm
//>> v1: %vgpr0:v[0], v1: %vgpr1:v[1], s2: %sgpr0:s[0-1] = p_startpgm
if (!setup_cs("v1 v1 s2", (amd_gfx_level)i))
continue;
//>> Validation results:
@@ -140,7 +140,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.extract)
for (unsigned i = GFX7; i <= GFX10; i++) {
for (unsigned is_signed = 0; is_signed <= 1; is_signed++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i, CHIP_UNKNOWN,
is_signed ? "_signed" : "_unsigned"))
continue;
@@ -265,7 +265,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.extract_modifiers)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
@@ -318,7 +318,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.extract.sgpr)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
@@ -362,7 +362,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.from_vop3)
for (unsigned i = GFX8; i <= GFX10; i++) {
//>> v1: %a, v1: %b, s1: %c, s1: %d = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s1: %c:s[0], s1: %d:s[1] = p_startpgm
if (!setup_cs("v1 v1 s1 s1", (amd_gfx_level)i))
continue;
@@ -410,7 +410,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.insert)
for (unsigned i = GFX7; i <= GFX10; i++) {
//>> v1: %a, v1: %b = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1] = p_startpgm
if (!setup_cs("v1 v1", (amd_gfx_level)i))
continue;
@@ -506,7 +506,7 @@ END_TEST
BEGIN_TEST(optimize.sdwa.insert_modifiers)
for (unsigned i = GFX8; i <= GFX9; i++) {
//>> v1: %a = p_startpgm
//>> v1: %a:v[0] = p_startpgm
if (!setup_cs("v1", (amd_gfx_level)i))
continue;
@@ -559,7 +559,7 @@ BEGIN_TEST(optimize.sdwa.insert_modifiers)
END_TEST
BEGIN_TEST(optimize.sdwa.special_case_valu)
//>> v1: %a, s1: %b = p_startpgm
//>> v1: %a:v[0], s1: %b:s[0] = p_startpgm
if (!setup_cs("v1 s1", GFX10_3))
return;
@@ -636,7 +636,7 @@ BEGIN_TEST(optimize.sdwa.special_case_valu)
END_TEST
BEGIN_TEST(optimize.sdwa.extract_sgpr_limits)
//>> s1: %a = p_startpgm
//>> s1: %a:s[0] = p_startpgm
if (!setup_cs("s1", GFX8))
return;
@@ -660,7 +660,7 @@ BEGIN_TEST(optimize.sdwa.extract_sgpr_limits)
END_TEST
BEGIN_TEST(optimize.sdwa.subdword_extract)
//>> v1: %a, v1: %b, s2: %c = p_startpgm
//>> v1: %a:v[0], v1: %b:v[1], s2: %c:s[0-1] = p_startpgm
if (!setup_cs("v1 v1 s2", GFX10_3))
return;
@@ -717,7 +717,7 @@ BEGIN_TEST(optimize.sdwa.subdword_extract)
END_TEST
BEGIN_TEST(optimize.sdwa.extract_vector)
//>> v1: %a = p_startpgm
//>> v1: %a:v[0] = p_startpgm
if (!setup_cs("v1", GFX10_3))
return;