|
|
@ -41,6 +41,14 @@ u32 ShaderIR::DecodeArithmeticInteger(BasicBlock& bb, u32 pc) {
|
|
|
|
SetRegister(bb, instr.gpr0, Operation(OperationCode::IAdd, PRECISE, op_a, op_b));
|
|
|
|
SetRegister(bb, instr.gpr0, Operation(OperationCode::IAdd, PRECISE, op_a, op_b));
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
case OpCode::Id::SEL_C:
|
|
|
|
|
|
|
|
case OpCode::Id::SEL_R:
|
|
|
|
|
|
|
|
case OpCode::Id::SEL_IMM: {
|
|
|
|
|
|
|
|
const Node condition = GetPredicate(instr.sel.pred, instr.sel.neg_pred != 0);
|
|
|
|
|
|
|
|
const Node value = Operation(OperationCode::Select, PRECISE, condition, op_a, op_b);
|
|
|
|
|
|
|
|
SetRegister(bb, instr.gpr0, value);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
UNIMPLEMENTED_MSG("Unhandled ArithmeticInteger instruction: {}", opcode->get().GetName());
|
|
|
|
UNIMPLEMENTED_MSG("Unhandled ArithmeticInteger instruction: {}", opcode->get().GetName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|