summaryrefslogtreecommitdiff
path: root/src/wasm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm.h')
-rw-r--r--src/wasm.h44
1 files changed, 1 insertions, 43 deletions
diff --git a/src/wasm.h b/src/wasm.h
index 258ed0f35..ab9d7c816 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -35,52 +35,10 @@
#include "mixed_arena.h"
#include "support/name.h"
#include "wasm-type.h"
+#include "wasm-features.h"
namespace wasm {
-struct FeatureSet {
- enum Feature : uint32_t {
- MVP = 0,
- Atomics = 1 << 0,
- MutableGlobals = 1 << 1,
- TruncSat = 1 << 2,
- SIMD = 1 << 3,
- BulkMemory = 1 << 4,
- SignExt = 1 << 5,
- All = Atomics | MutableGlobals | TruncSat | SIMD | BulkMemory | SignExt
- };
-
- FeatureSet() : features(MVP) {}
- FeatureSet(uint32_t features) : features(features) {}
-
- bool isMVP() const { return features == MVP; }
- bool has(Feature f) const { return (features & f) == f; }
- bool hasAtomics() const { return features & Atomics; }
- bool hasMutableGlobals() const { return features & MutableGlobals; }
- bool hasTruncSat() const { return features & TruncSat; }
- bool hasSIMD() const { return features & SIMD; }
- bool hasBulkMemory() const { return features & BulkMemory; }
- bool hasSignExt() const { return features & SignExt; }
- bool hasAll() const { return features & All; }
-
- void makeMVP() { features = MVP; }
- void set(Feature f, bool v = true) { features = v ? (features | f) : (features & ~f); }
- void setAtomics(bool v = true) { set(Atomics, v); }
- void setMutableGlobals(bool v = true) { set(MutableGlobals, v); }
- void setTruncSat(bool v = true) { set(TruncSat, v); }
- void setSIMD(bool v = true) { set(SIMD, v); }
- void setBulkMemory(bool v = true) { set(BulkMemory, v); }
- void setSignExt(bool v = true) { set(SignExt, v); }
- void setAll(bool v = true) { features = v ? All : MVP; }
-
- bool operator<=(const FeatureSet& other) {
- return !(features & ~other.features);
- }
-
-private:
- uint32_t features;
-};
-
// An index in a wasm module
typedef uint32_t Index;