diff options
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index f4aa900db..8759ea9d4 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -3285,6 +3285,19 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex return nullptr; } + SpvInst* emitMakeUInt64(SpvInstParent* parent, IRInst* inst) + { + IRBuilder builder(inst); + builder.setInsertBefore(inst); + auto vec = emitOpCompositeConstruct( + parent, + nullptr, + builder.getVectorType(builder.getUIntType(), 2), + inst->getOperand(0), + inst->getOperand(1)); + return emitOpBitcast(parent, inst, inst->getDataType(), vec); + } + // The instructions that appear inside the basic blocks of // functions are what we will call "local" instructions. // @@ -3391,6 +3404,9 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex case kIROp_BitCast: result = emitOpBitcast(parent, inst, inst->getDataType(), inst->getOperand(0)); break; + case kIROp_MakeUInt64: + result = emitMakeUInt64(parent, inst); + break; case kIROp_Add: case kIROp_Sub: case kIROp_Mul: |
