mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-18 03:17:56 -05:00
shader_ir/warp: Implement FSWZADD
This commit is contained in:
@ -94,6 +94,15 @@ u32 ShaderIR::DecodeWarp(NodeBlock& bb, u32 pc) {
|
||||
Operation(OperationCode::ShuffleIndexed, GetRegister(instr.gpr8), src_thread_id));
|
||||
break;
|
||||
}
|
||||
case OpCode::Id::FSWZADD: {
|
||||
UNIMPLEMENTED_IF(instr.fswzadd.ndv);
|
||||
|
||||
Node op_a = GetRegister(instr.gpr8);
|
||||
Node op_b = GetRegister(instr.gpr20);
|
||||
Node mask = Immediate(static_cast<u32>(instr.fswzadd.swizzle));
|
||||
SetRegister(bb, instr.gpr0, Operation(OperationCode::FSwizzleAdd, op_a, op_b, mask));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
UNIMPLEMENTED_MSG("Unhandled warp instruction: {}", opcode->get().GetName());
|
||||
break;
|
||||
|
@ -47,6 +47,7 @@ enum class OperationCode {
|
||||
FTrunc, /// (MetaArithmetic, float a) -> float
|
||||
FCastInteger, /// (MetaArithmetic, int a) -> float
|
||||
FCastUInteger, /// (MetaArithmetic, uint a) -> float
|
||||
FSwizzleAdd, /// (float a, float b, uint mask) -> float
|
||||
|
||||
IAdd, /// (MetaArithmetic, int a, int b) -> int
|
||||
IMul, /// (MetaArithmetic, int a, int b) -> int
|
||||
|
Reference in New Issue
Block a user