summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-parser.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-01-07 22:26:31 -0800
committerGitHub <noreply@github.com>2025-01-07 22:26:31 -0800
commitc43f6fa55aca23365c86c6ec1737d42be74d9d3e (patch)
tree2c49bc1dbd12ae5f46d682a3f240465931471060 /source/slang/slang-parser.cpp
parent1a56f58fdd0c704e6dc0fad0f0ec33a25a35e60b (diff)
Lower varying parameters as pointers instead of SSA values. (#5919)
* Add executable test on matrix-typed vertex input. * Fix emit logic of matrix layout qualifier. * Pass fragment shader varying input by constref to allow EvaluateAttributeAtCentroid etc. to be implemented correctly.
Diffstat (limited to 'source/slang/slang-parser.cpp')
-rw-r--r--source/slang/slang-parser.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index 22491c848..c275a868b 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -7531,12 +7531,6 @@ static IRFloatingPointValue _foldFloatPrefixOp(TokenType tokenType, IRFloatingPo
static std::optional<SPIRVAsmOperand> parseSPIRVAsmOperand(Parser* parser)
{
- const auto slangIdentOperand = [&](auto flavor)
- {
- auto token = parser->tokenReader.peekToken();
- return SPIRVAsmOperand{flavor, token, parseAtomicExpr(parser)};
- };
-
const auto slangTypeExprOperand = [&](auto flavor)
{
auto tok = parser->tokenReader.peekToken();
@@ -7673,12 +7667,13 @@ static std::optional<SPIRVAsmOperand> parseSPIRVAsmOperand(Parser* parser)
// A &foo variable reference (for the address of foo)
else if (AdvanceIf(parser, TokenType::OpBitAnd))
{
- return slangIdentOperand(SPIRVAsmOperand::SlangValueAddr);
+ Expr* expr = parsePostfixExpr(parser);
+ return SPIRVAsmOperand{SPIRVAsmOperand::SlangValueAddr, Token{}, expr};
}
// A $foo variable
else if (AdvanceIf(parser, TokenType::Dollar))
{
- Expr* expr = parseAtomicExpr(parser);
+ Expr* expr = parsePostfixExpr(parser);
return SPIRVAsmOperand{SPIRVAsmOperand::SlangValue, Token{}, expr};
}
// A $$foo type