summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-modifier.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-02-13 10:38:14 -0800
committerGitHub <noreply@github.com>2023-02-13 10:38:14 -0800
commit4dbc74a953ae1b34ce64a4eaef3aa7feb73663b9 (patch)
tree82b099c1074a0361b0db6a72e96f71d3b8e3b574 /source/slang/slang-check-modifier.cpp
parent57af2c1c2fccb221fa54fd92415f424b1d7e5beb (diff)
Add Loop Unrolling Pass. (#2644)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-check-modifier.cpp')
-rw-r--r--source/slang/slang-check-modifier.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/source/slang/slang-check-modifier.cpp b/source/slang/slang-check-modifier.cpp
index 9f3e79978..520d85971 100644
--- a/source/slang/slang-check-modifier.cpp
+++ b/source/slang/slang-check-modifier.cpp
@@ -507,15 +507,29 @@ namespace Slang
// as 1 arg if nothing is specified)
SLANG_ASSERT(attr->args.getCount() == 1);
}
+ else if (auto forceUnrollAttr = as<ForceUnrollAttribute>(attr))
+ {
+ if (forceUnrollAttr->args.getCount() < 1)
+ {
+ getSink()->diagnose(attr, Diagnostics::notEnoughArguments, attr->args.getCount(), 1);
+ }
+ auto cint = checkConstantIntVal(attr->args[0]);
+ if (cint)
+ forceUnrollAttr->maxIterations = (int32_t)cint->value;
+ }
else if (auto maxItersAttrs = as<MaxItersAttribute>(attr))
{
- if (auto cint = checkConstantIntVal(attr->args[0]))
+ if (attr->args.getCount() < 1)
{
- maxItersAttrs->value = (int32_t) cint->value;
+ getSink()->diagnose(attr, Diagnostics::notEnoughArguments, attr->args.getCount(), 1);
}
else
{
- getSink()->diagnose(attr, Diagnostics::notEnoughArguments, attr->args.getCount(), 1);
+ auto cint = checkConstantIntVal(attr->args[0]);
+ if (cint)
+ {
+ maxItersAttrs->value = (int32_t) cint->value;
+ }
}
}
else if (auto userDefAttr = as<UserDefinedAttribute>(attr))