diff options
| author | gingerBill <bill@gingerbill.org> | 2022-05-30 14:53:12 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-05-30 14:53:12 +0100 |
| commit | f3aefbc4434b92fc3fda74c942c953b08dd18a62 (patch) | |
| tree | d13281680a7cd14ce92630cb9d3a49c984b2a888 /src/checker.cpp | |
| parent | cef022539ebd41a4a80707f1a702e09e6748ade0 (diff) | |
`@(require_target_feature=<string>)` `@(enable_target_feature=<string>)`
require_target_feature - required by the target micro-architecture
enable_target_feature - will be enabled for the specified procedure only
Diffstat (limited to 'src/checker.cpp')
| -rw-r--r-- | src/checker.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/checker.cpp b/src/checker.cpp index 8afc6eb14..874839ece 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3207,6 +3207,22 @@ DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } } return true; + } else if (name == "require_target_feature") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_String) { + ac->require_target_feature = ev.value_string; + } else { + error(elem, "Expected a string value for '%.*s'", LIT(name)); + } + return true; + } else if (name == "enable_target_feature") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_String) { + ac->enable_target_feature = ev.value_string; + } else { + error(elem, "Expected a string value for '%.*s'", LIT(name)); + } + return true; } return false; } |