forked from ShuriZma/suyu
1
0
Fork 0

ShaderGen: Implemented the KIL instruction, which is equivalent to 'discard'.

This commit is contained in:
Subv 2018-04-20 09:17:39 -05:00
parent c3a8ea76f1
commit 17a0ef1e1e
1 changed files with 7 additions and 1 deletions

View File

@ -566,10 +566,16 @@ private:
default: { default: {
switch (instr.opcode.EffectiveOpCode()) { switch (instr.opcode.EffectiveOpCode()) {
case OpCode::Id::EXIT: { case OpCode::Id::EXIT: {
ASSERT_MSG(instr.pred.pred_index == static_cast<u64>(Pred::UnusedIndex),
"Predicated exits not implemented");
shader.AddLine("return true;"); shader.AddLine("return true;");
offset = PROGRAM_END - 1; offset = PROGRAM_END - 1;
break; break;
} }
case OpCode::Id::KIL: {
shader.AddLine("discard;");
break;
}
case OpCode::Id::IPA: { case OpCode::Id::IPA: {
const auto& attribute = instr.attribute.fmt28; const auto& attribute = instr.attribute.fmt28;
std::string dest = GetRegister(instr.gpr0); std::string dest = GetRegister(instr.gpr0);
@ -589,7 +595,7 @@ private:
} }
// Close the predicate condition scope. // Close the predicate condition scope.
if (instr.pred != Pred::UnusedIndex) { if (instr.pred.pred_index != static_cast<u64>(Pred::UnusedIndex)) {
--shader.scope; --shader.scope;
shader.AddLine('}'); shader.AddLine('}');
} }