From 64804ce0bec66a428f8784b5deb139535909c242 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 25 Jan 2024 14:54:46 -0800 Subject: 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 --- source/slang/hlsl.meta.slang | 4 ++-- source/slang/slang-ir-spirv-legalize.cpp | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'source') 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 x) } else { - let zero = __default(); + let zero = __default>(); return spirv_asm { OpFUnordNotEqual $$vector %castResult $x $zero; @@ -3154,7 +3154,7 @@ bool any(vector x) } else { - let zero = __default(); + let zero = __default>(); return spirv_asm { OpFUnordNotEqual $$vector %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 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); -- cgit v1.2.3