summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-02-02 18:57:22 +0100
committerGitHub <noreply@github.com>2022-02-02 18:57:22 +0100
commit09400e4f4e34d1feed9314cee734107eb40442c2 (patch)
treeec77b4867a832ae3df18707cc53da7cd9a5a9987 /src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
parentMerge pull request #7807 from german77/moar-buttons (diff)
parentemit_glsl_atomic: Implement 32x2 fallback atomic ops (diff)
downloadyuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar.gz
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar.bz2
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar.lz
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar.xz
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.tar.zst
yuzu-09400e4f4e34d1feed9314cee734107eb40442c2.zip
Diffstat (limited to 'src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp')
-rw-r--r--src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp b/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
index e80d3d1d9..c2654cd9b 100644
--- a/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
+++ b/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
@@ -199,6 +199,26 @@ void Lower(IR::Block& block, IR::Inst& inst) {
return ShiftRightLogical64To32(block, inst);
case IR::Opcode::ShiftRightArithmetic64:
return ShiftRightArithmetic64To32(block, inst);
+ case IR::Opcode::SharedAtomicExchange64:
+ return inst.ReplaceOpcode(IR::Opcode::SharedAtomicExchange32x2);
+ case IR::Opcode::GlobalAtomicIAdd64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicIAdd32x2);
+ case IR::Opcode::GlobalAtomicSMin64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicSMin32x2);
+ case IR::Opcode::GlobalAtomicUMin64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicUMin32x2);
+ case IR::Opcode::GlobalAtomicSMax64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicSMax32x2);
+ case IR::Opcode::GlobalAtomicUMax64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicUMax32x2);
+ case IR::Opcode::GlobalAtomicAnd64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicAnd32x2);
+ case IR::Opcode::GlobalAtomicOr64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicOr32x2);
+ case IR::Opcode::GlobalAtomicXor64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicXor32x2);
+ case IR::Opcode::GlobalAtomicExchange64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicExchange32x2);
default:
break;
}