summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-01-25 14:54:46 -0800
committerGitHub <noreply@github.com>2024-01-25 14:54:46 -0800
commit64804ce0bec66a428f8784b5deb139535909c242 (patch)
tree6ec6e095cf443ec61002bd1d408518226c7d5d4a /source
parent7ae8f684c863b520139acdb34788a34b93608a1e (diff)
Fix spirv legalization generating duplicate array types. (#3517)
* Fix spirv legalization generating duplicate array types. * Fix intrinsics. * Update CI build config. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang4
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp6
2 files changed, 3 insertions, 7 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 44d5fbe83..565babc39 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -3040,7 +3040,7 @@ bool all(vector<T,N> x)
}
else
{
- let zero = __default<T>();
+ let zero = __default<vector<T,N>>();
return spirv_asm
{
OpFUnordNotEqual $$vector<bool,N> %castResult $x $zero;
@@ -3154,7 +3154,7 @@ bool any(vector<T, N> x)
}
else
{
- let zero = __default<T>();
+ let zero = __default<vector<T,N>>();
return spirv_asm
{
OpFUnordNotEqual $$vector<bool,N> %castResult $x $zero;
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp
index 81bec8aa7..681fb36b1 100644
--- a/source/slang/slang-ir-spirv-legalize.cpp
+++ b/source/slang/slang-ir-spirv-legalize.cpp
@@ -627,11 +627,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
auto innerElementType = innerType;
if (arrayType)
{
- Array<IRInst*, 2> arrayTypeArgs;
- arrayTypeArgs.add(innerType);
- if (arraySize)
- arrayTypeArgs.add(arraySize);
- innerType = (IRType*)builder.emitIntrinsicInst(builder.getTypeKind(), arrayType->getOp(), (UInt)arrayTypeArgs.getCount(), arrayTypeArgs.getBuffer());
+ innerType = (IRType*)builder.getArrayTypeBase(arrayType->getOp(), innerType, arraySize);
if (!arraySize)
{
builder.addRequireSPIRVDescriptorIndexingExtensionDecoration(inst);