diff options
author | FernandoS27 <fsahmkow27@gmail.com> | 2021-04-16 23:52:58 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:28 +0200 |
commit | f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67 (patch) | |
tree | ffd531d2a81f9e48369c7f362e11e224f437fd5c /src/shader_recompiler/frontend | |
parent | shader: Fix Phi node types (diff) | |
download | yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar.gz yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar.bz2 yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar.lz yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar.xz yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.tar.zst yuzu-f18a6dd1bdaffda4c3e771af3cf7cf41919ebd67.zip |
Diffstat (limited to 'src/shader_recompiler/frontend')
4 files changed, 8 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp index aebe7200f..c3e8d0681 100644 --- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp +++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp @@ -379,6 +379,10 @@ U1 IREmitter::IsHelperInvocation() { return Inst<U1>(Opcode::IsHelperInvocation); } +F32 IREmitter::YDirection() { + return Inst<F32>(Opcode::YDirection); +} + U32 IREmitter::LaneId() { return Inst<U32>(Opcode::LaneId); } diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h index b9d051b43..7e67f5e30 100644 --- a/src/shader_recompiler/frontend/ir/ir_emitter.h +++ b/src/shader_recompiler/frontend/ir/ir_emitter.h @@ -102,6 +102,7 @@ public: [[nodiscard]] U32 InvocationId(); [[nodiscard]] U32 SampleId(); [[nodiscard]] U1 IsHelperInvocation(); + [[nodiscard]] F32 YDirection(); [[nodiscard]] U32 LaneId(); diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc index 1cfc2a943..269de8ca5 100644 --- a/src/shader_recompiler/frontend/ir/opcodes.inc +++ b/src/shader_recompiler/frontend/ir/opcodes.inc @@ -65,6 +65,7 @@ OPCODE(LocalInvocationId, U32x3, OPCODE(InvocationId, U32, ) OPCODE(SampleId, U32, ) OPCODE(IsHelperInvocation, U1, ) +OPCODE(YDirection, F32, ) // Undefined OPCODE(UndefU1, U1, ) diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp index 660b84c20..b0baff74b 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/move_special_register.cpp @@ -150,6 +150,8 @@ enum class SpecialRegister : u64 { return ir.SubgroupGtMask(); case SpecialRegister::SR_GEMASK: return ir.SubgroupGeMask(); + case SpecialRegister::SR_Y_DIRECTION: + return ir.BitCast<IR::U32>(ir.YDirection()); default: throw NotImplementedException("S2R special register {}", special_register); } |