summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2022-01-29 20:06:03 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2022-01-30 01:56:02 +0100
commit90a0506d564ce0ce44ad8ab662f035c21fc03e71 (patch)
tree787c3f7a82675c97a7cb1d40010695f81eb2c2b2 /src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
parentshaders: Add U64->U32x2 Atomic fallback functions (diff)
downloadyuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar.gz
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar.bz2
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar.lz
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar.xz
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.tar.zst
yuzu-90a0506d564ce0ce44ad8ab662f035c21fc03e71.zip
Diffstat (limited to '')
-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;
}