r600/sfn: allocate pinned registers as SSA
authorGert Wollny <gert.wollny@collabora.com>
Thu, 8 Dec 2022 10:44:56 +0000 (11:44 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 9 Dec 2022 08:26:31 +0000 (08:26 +0000)
Don't allocate the helper_invocation register as pinned, because it is
not an SSA value.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20205>

src/gallium/drivers/r600/sfn/sfn_shader_fs.cpp
src/gallium/drivers/r600/sfn/sfn_valuefactory.cpp

index 6e71cf7..82dbfbf 100644 (file)
@@ -256,7 +256,7 @@ FragmentShader::do_allocate_reserved_registers()
    }
 
    if (m_sv_values.test(es_helper_invocation)) {
-      m_helper_invocation = value_factory().allocate_pinned_register(next_register++, 0);
+      m_helper_invocation = value_factory().temp_register(0, false);
    }
 
    return next_register;
index de38efc..e19479e 100644 (file)
@@ -149,6 +149,7 @@ ValueFactory::allocate_pinned_register(int sel, int chan)
 
    auto reg = new Register(sel, chan, pin_fully);
    reg->set_flag(Register::pin_start);
+   reg->set_flag(Register::ssa);
    m_pinned_registers.push_back(reg);
    return reg;
 }
@@ -162,6 +163,7 @@ ValueFactory::allocate_pinned_vec4(int sel, bool is_ssa)
    RegisterVec4 retval(sel, is_ssa, {0, 1, 2, 3}, pin_fully);
    for (int i = 0; i < 4; ++i) {
       retval[i]->set_flag(Register::pin_start);
+      retval[i]->set_flag(Register::ssa);
       m_pinned_registers.push_back(retval[i]);
    }
    return retval;