From 1fd7b2296d8360c245a0c732e7f842876533f92a Mon Sep 17 00:00:00 2001 From: Mukund Keshava Date: Fri, 16 May 2025 21:00:53 +0530 Subject: Fix RWStructuredBuffer emission (#7139) Fixes #7127 --- source/slang/slang-emit-cpp.cpp | 3 ++- tests/cuda/compile-to-cuda.slang | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/source/slang/slang-emit-cpp.cpp b/source/slang/slang-emit-cpp.cpp index bfc021677..6f97a11da 100644 --- a/source/slang/slang-emit-cpp.cpp +++ b/source/slang/slang-emit-cpp.cpp @@ -1547,9 +1547,10 @@ bool CPPSourceEmitter::tryEmitInstExprImpl(IRInst* inst, const EmitOpInfo& inOut auto base = inst->getOperand(0); auto outerPrec = getInfo(EmitOp::General); emitOperand(base, outerPrec); + m_writer->emit(")"); m_writer->emit("["); emitOperand(inst->getOperand(1), EmitOpInfo()); - m_writer->emit("]))"); + m_writer->emit("])"); return true; } case kIROp_swizzle: diff --git a/tests/cuda/compile-to-cuda.slang b/tests/cuda/compile-to-cuda.slang index d7399d469..f383bbd22 100644 --- a/tests/cuda/compile-to-cuda.slang +++ b/tests/cuda/compile-to-cuda.slang @@ -2,14 +2,23 @@ //DISABLE_TEST(compute):COMPARE_COMPUTE:-cpu -compute //TEST(compute):COMPARE_COMPUTE:-cuda -compute -//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer +//TEST_INPUT:ubuffer(data=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer RWStructuredBuffer outputBuffer : register(u0); +[shader("compute")] [numthreads(4, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) { - int tid = int(dispatchThreadID.x); - + int tid = int(dispatchThreadID.x); + for(;;) + { + if(outputBuffer[0] == 1) + { + // This is just a statement to trigger bug #7127 + outputBuffer[0] = tid; + break; + } + } outputBuffer[tid * 4] = tid; outputBuffer[tid * 4 + 1] = tid + 1; outputBuffer[tid * 4 + 2] = tid + 2; -- cgit v1.2.3