Shader_IR: Implement FLO instruction.

This commit is contained in:
Fernando Sahmkow 2019-11-12 10:07:22 -04:00 committed by FernandoS27
parent 95137a04e1
commit f3d1b370aa
5 changed files with 35 additions and 0 deletions

View file

@ -130,6 +130,24 @@ u32 ShaderIR::DecodeArithmeticInteger(NodeBlock& bb, u32 pc) {
SetRegister(bb, instr.gpr0, value);
break;
}
case OpCode::Id::FLO_R:
case OpCode::Id::FLO_C:
case OpCode::Id::FLO_IMM: {
Node value;
if (instr.flo.invert) {
op_b = Operation(OperationCode::IBitwiseNot, NO_PRECISE, op_b);
}
if (instr.flo.is_signed) {
value = Operation(OperationCode::IBitMSB, NO_PRECISE, op_b);
} else {
value = Operation(OperationCode::UBitMSB, NO_PRECISE, op_b);
}
if (instr.flo.sh) {
value = Operation(OperationCode::UBitwiseXor, NO_PRECISE, value, Immediate(31));
}
SetRegister(bb, instr.gpr0, value);
break;
}
case OpCode::Id::SEL_C:
case OpCode::Id::SEL_R:
case OpCode::Id::SEL_IMM: {