aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/Targets/WebAssembly.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Basic/Targets/WebAssembly.cpp')
-rw-r--r--clang/lib/Basic/Targets/WebAssembly.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets/WebAssembly.cpp b/clang/lib/Basic/Targets/WebAssembly.cpp
index d9d01bc..85e550a 100644
--- a/clang/lib/Basic/Targets/WebAssembly.cpp
+++ b/clang/lib/Basic/Targets/WebAssembly.cpp
@@ -31,7 +31,7 @@ static constexpr Builtin::Info BuiltinInfo[] = {
};
static constexpr llvm::StringLiteral ValidCPUNames[] = {
- {"mvp"}, {"bleeding-edge"}, {"generic"}};
+ {"mvp"}, {"bleeding-edge"}, {"generic"}, {"lime"}};
StringRef WebAssemblyTargetInfo::getABI() const { return ABI; }
@@ -167,6 +167,17 @@ bool WebAssemblyTargetInfo::initFeatureMap(
Features["reference-types"] = true;
Features["sign-ext"] = true;
};
+ auto addLime1Features = [&]() {
+ // Lime1:
+ // <https://github.com/WebAssembly/tool-conventions/blob/main/Lime.md#lime1>
+ Features["bulk-memory-opt"] = true;
+ Features["call-indirect-overlong"] = true;
+ Features["extended-const"] = true;
+ Features["multivalue"] = true;
+ Features["mutable-globals"] = true;
+ Features["nontrapping-fptoint"] = true;
+ Features["sign-ext"] = true;
+ };
auto addBleedingEdgeFeatures = [&]() {
addGenericFeatures();
Features["atomics"] = true;
@@ -180,6 +191,8 @@ bool WebAssemblyTargetInfo::initFeatureMap(
};
if (CPU == "generic") {
addGenericFeatures();
+ } else if (CPU == "lime1") {
+ addLime1Features();
} else if (CPU == "bleeding-edge") {
addBleedingEdgeFeatures();
}