aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp b/src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp
index 6bb6486eb92..6b5da430622 100644
--- a/src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp
@@ -485,11 +485,11 @@ bool AssemblyFromShaderLegacyImpl::emit_export(const ExportInstruction & exi)
bool AssemblyFromShaderLegacyImpl::emit_if_start(const IfInstruction & if_instr)
{
- assert(m_bc->chip_class == EVERGREEN);
-
bool needs_workaround = false;
int elems = m_callstack.push(FC_PUSH_VPM);
+ if (m_bc->chip_class == CAYMAN && m_bc->stack.loop > 1)
+ needs_workaround = true;
if (m_bc->family != CHIP_HEMLOCK &&
m_bc->family != CHIP_CYPRESS &&
m_bc->family != CHIP_JUNIPER) {