diff options
| author | Yong He <yonghe@outlook.com> | 2024-01-25 14:54:46 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-25 14:54:46 -0800 |
| commit | 64804ce0bec66a428f8784b5deb139535909c242 (patch) | |
| tree | 6ec6e095cf443ec61002bd1d408518226c7d5d4a /source | |
| parent | 7ae8f684c863b520139acdb34788a34b93608a1e (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.slang | 4 | ||||
| -rw-r--r-- | source/slang/slang-ir-spirv-legalize.cpp | 6 |
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); |
