summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/decode/other.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-05-24 06:33:06 +0200
committerGitHub <noreply@github.com>2020-05-24 06:33:06 +0200
commit487dd051706247771e1733b0671a417f63b7f532 (patch)
treed46d5180df6d6f31eeef73bb906b10fe155c8fbd /src/video_core/shader/decode/other.cpp
parentMerge pull request #3975 from ReinUsesLisp/fast-bufcache (diff)
parentshader/other: Implement thread comparisons (NV_shader_thread_group) (diff)
downloadyuzu-487dd051706247771e1733b0671a417f63b7f532.tar
yuzu-487dd051706247771e1733b0671a417f63b7f532.tar.gz
yuzu-487dd051706247771e1733b0671a417f63b7f532.tar.bz2
yuzu-487dd051706247771e1733b0671a417f63b7f532.tar.lz
yuzu-487dd051706247771e1733b0671a417f63b7f532.tar.xz
yuzu-487dd051706247771e1733b0671a417f63b7f532.tar.zst
yuzu-487dd051706247771e1733b0671a417f63b7f532.zip
Diffstat (limited to 'src/video_core/shader/decode/other.cpp')
-rw-r--r--src/video_core/shader/decode/other.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp
index d4f95b18c..399a455c4 100644
--- a/src/video_core/shader/decode/other.cpp
+++ b/src/video_core/shader/decode/other.cpp
@@ -109,6 +109,27 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) {
return Operation(OperationCode::WorkGroupIdY);
case SystemVariable::CtaIdZ:
return Operation(OperationCode::WorkGroupIdZ);
+ case SystemVariable::EqMask:
+ case SystemVariable::LtMask:
+ case SystemVariable::LeMask:
+ case SystemVariable::GtMask:
+ case SystemVariable::GeMask:
+ uses_warps = true;
+ switch (instr.sys20) {
+ case SystemVariable::EqMask:
+ return Operation(OperationCode::ThreadEqMask);
+ case SystemVariable::LtMask:
+ return Operation(OperationCode::ThreadLtMask);
+ case SystemVariable::LeMask:
+ return Operation(OperationCode::ThreadLeMask);
+ case SystemVariable::GtMask:
+ return Operation(OperationCode::ThreadGtMask);
+ case SystemVariable::GeMask:
+ return Operation(OperationCode::ThreadGeMask);
+ default:
+ UNREACHABLE();
+ return Immediate(0u);
+ }
default:
UNIMPLEMENTED_MSG("Unhandled system move: {}",
static_cast<u32>(instr.sys20.Value()));