summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-lower-buffer-element-type.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-08-23 05:49:33 -0700
committerGitHub <noreply@github.com>2023-08-23 20:49:33 +0800
commit6437c38e0a3c2c1daf36cb5e543dc0b467fa4b15 (patch)
treec117b964ada397d9cac01ff4759bcd16d35c7e20 /source/slang/slang-ir-lower-buffer-element-type.cpp
parentcdd5e6666f98903d61118ada5cba51424fd1577c (diff)
Lower all ByteAddressBuffer uses for SPIRV. (#3143)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-lower-buffer-element-type.cpp')
-rw-r--r--source/slang/slang-ir-lower-buffer-element-type.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/slang/slang-ir-lower-buffer-element-type.cpp b/source/slang/slang-ir-lower-buffer-element-type.cpp
index 0472e44df..909ffea83 100644
--- a/source/slang/slang-ir-lower-buffer-element-type.cpp
+++ b/source/slang/slang-ir-lower-buffer-element-type.cpp
@@ -500,6 +500,7 @@ namespace Slang
case kIROp_StructuredBufferLoadStatus:
case kIROp_RWStructuredBufferLoad:
case kIROp_RWStructuredBufferLoadStatus:
+ case kIROp_StructuredBufferConsume:
{
IRCloneEnv cloneEnv = {};
builder.setInsertBefore(user);
@@ -512,6 +513,7 @@ namespace Slang
}
case kIROp_Store:
case kIROp_RWStructuredBufferStore:
+ case kIROp_StructuredBufferAppend:
{
// Use must be the dest operand of the store inst.
if (use != user->getOperands() + 0)
@@ -524,6 +526,8 @@ namespace Slang
store->val.set(packedVal);
else if (auto sbStore = as<IRRWStructuredBufferStore>(user))
sbStore->setOperand(2, packedVal);
+ else if (auto sbAppend = as<IRStructuredBufferAppend>(user))
+ sbAppend->setOperand(1, packedVal);
else
SLANG_UNREACHABLE("unhandled store type");
break;
@@ -565,6 +569,8 @@ namespace Slang
case kIROp_RWStructuredBufferGetElementPtr:
ptrValsWorkList.add(user);
break;
+ case kIROp_StructuredBufferGetDimensions:
+ break;
default:
SLANG_UNREACHABLE("unhandled inst of a buffer/pointer value that needs storage lowering.");
break;