diff options
| author | Ronan <ro.cailleau@gmail.com> | 2025-10-08 11:19:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-08 09:19:13 +0000 |
| commit | 1300678a36bf8d7081647aef3e2a37dbd496aaf5 (patch) | |
| tree | 01c7cbf78aefccd9de9e9e2f56e77c1d145765a9 /source/slang | |
| parent | 54e1d02715747ee81585bfd23e96a1f4956dbf66 (diff) | |
`ExprLoweringVisitorBase::getDefaultVal(Type*)` use `MakeVector/MatrixFromScalar` (#8512)
- Allows using `Vector/Matrix` type with yet unresolved dimensions
- Simpler implementation and in-line with default `Array`
- Added `test/bugs/gh-8512.slang`
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-lower-to-ir.cpp | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp index d3f7d4e4c..c4492cfbb 100644 --- a/source/slang/slang-lower-to-ir.cpp +++ b/source/slang/slang-lower-to-ir.cpp @@ -4948,34 +4948,17 @@ struct ExprLoweringVisitorBase : public ExprVisitor<Derived, LoweredValInfo> } else if (auto vectorType = as<VectorExpressionType>(type)) { - UInt elementCount = (UInt)getIntVal(vectorType->getElementCount()); - auto irDefaultValue = getSimpleVal(context, getDefaultVal(vectorType->getElementType())); - - List<IRInst*> args; - for (UInt ee = 0; ee < elementCount; ++ee) - { - args.add(irDefaultValue); - } return LoweredValInfo::simple( - getBuilder()->emitMakeVector(irType, args.getCount(), args.getBuffer())); + getBuilder()->emitMakeVectorFromScalar(irType, irDefaultValue)); } else if (auto matrixType = as<MatrixExpressionType>(type)) { - UInt rowCount = (UInt)getIntVal(matrixType->getRowCount()); - - auto rowType = matrixType->getRowType(); - - auto irDefaultValue = getSimpleVal(context, getDefaultVal(rowType)); - - List<IRInst*> args; - for (UInt rr = 0; rr < rowCount; ++rr) - { - args.add(irDefaultValue); - } + auto irDefaultValue = + getSimpleVal(context, getDefaultVal(matrixType->getElementType())); return LoweredValInfo::simple( - getBuilder()->emitMakeMatrix(irType, args.getCount(), args.getBuffer())); + getBuilder()->emitMakeMatrixFromScalar(irType, irDefaultValue)); } else if (auto arrayType = as<ArrayExpressionType>(type)) { |
