diff options
Diffstat (limited to 'source/slang/slang-emit-metal.cpp')
| -rw-r--r-- | source/slang/slang-emit-metal.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/slang/slang-emit-metal.cpp b/source/slang/slang-emit-metal.cpp index 0a5506776..d38c3de9b 100644 --- a/source/slang/slang-emit-metal.cpp +++ b/source/slang/slang-emit-metal.cpp @@ -253,6 +253,24 @@ bool MetalSourceEmitter::tryEmitInstStmtImpl(IRInst* inst) case kIROp_discard: m_writer->emit("discard_fragment();\n"); return true; + case kIROp_MetalAtomicCast: + { + auto oldValName = getName(inst); + auto op0 = inst->getOperand(0); + + m_writer->emit("atomic_"); + emitType(op0->getDataType()); + m_writer->emit(" "); + m_writer->emit(oldValName); + m_writer->emit(" = "); + + m_writer->emit("((atomic_"); + emitType(op0->getDataType()); + m_writer->emit(")("); + emitOperand(op0, getInfo(EmitOp::General)); + m_writer->emit("));\n"); + return true; + } } return false; } |
