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 --- .github/workflows/windows-selfhosted.yml | 2 +- source/slang/hlsl.meta.slang | 4 ++-- source/slang/slang-ir-spirv-legalize.cpp | 6 +----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/windows-selfhosted.yml b/.github/workflows/windows-selfhosted.yml index f726db8b6..2c82a2fa8 100644 --- a/.github/workflows/windows-selfhosted.yml +++ b/.github/workflows/windows-selfhosted.yml @@ -36,7 +36,7 @@ jobs: .\make-slang-tag-version.bat - MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -property:WindowsTargetPlatformVersion=10.0.19041.0 -maxcpucount:12 + MSBuild.exe slang.sln -v:m -m -property:Configuration=${{matrix.configuration}} -property:Platform=${{matrix.platform}} -maxcpucount:12 - name: test-spirv-direct run: | $ErrorActionPreference = "SilentlyContinue" 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