Skip to content

Commit b60dad3

Browse files
authored
Add Features.MVP and Features.All to binaryen.js (#2148)
This adds `Features.MVP` and `Features.All` to binaryen.js and make test cases use it.
1 parent 4b05489 commit b60dad3

8 files changed

Lines changed: 27 additions & 16 deletions

File tree

build-js.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,15 @@ export_function "_BinaryenExternalMemory"
231231
export_function "_BinaryenExternalGlobal"
232232

233233
# Features
234+
export_function "_BinaryenFeatureMVP"
234235
export_function "_BinaryenFeatureAtomics"
235236
export_function "_BinaryenFeatureBulkMemory"
236237
export_function "_BinaryenFeatureMutableGlobals"
237238
export_function "_BinaryenFeatureNontrappingFPToInt"
238239
export_function "_BinaryenFeatureSignExt"
239240
export_function "_BinaryenFeatureSIMD128"
240241
export_function "_BinaryenFeatureExceptionHandling"
242+
export_function "_BinaryenFeatureAll"
241243

242244
# Literals
243245
export_function "_BinaryenLiteralInt32"

src/binaryen-c.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,9 @@ BinaryenExternalKind BinaryenExternalGlobal(void) {
371371

372372
// Features
373373

374+
BinaryenFeatures BinaryenFeatureMVP(void) {
375+
return static_cast<BinaryenFeatures>(FeatureSet::Feature::MVP);
376+
}
374377
BinaryenFeatures BinaryenFeatureAtomics(void) {
375378
return static_cast<BinaryenFeatures>(FeatureSet::Feature::Atomics);
376379
}
@@ -392,6 +395,9 @@ BinaryenFeatures BinaryenFeatureSIMD128(void) {
392395
BinaryenFeatures BinaryenFeatureExceptionHandling(void) {
393396
return static_cast<BinaryenFeatures>(FeatureSet::Feature::ExceptionHandling);
394397
}
398+
BinaryenFeatures BinaryenFeatureAll(void) {
399+
return static_cast<BinaryenFeatures>(FeatureSet::Feature::All);
400+
}
395401

396402
// Modules
397403

src/binaryen-c.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,15 @@ BinaryenExternalKind BinaryenExternalGlobal(void);
142142

143143
typedef uint32_t BinaryenFeatures;
144144

145+
BinaryenFeatures BinaryenFeatureMVP(void);
145146
BinaryenFeatures BinaryenFeatureAtomics(void);
146147
BinaryenFeatures BinaryenFeatureBulkMemory(void);
147148
BinaryenFeatures BinaryenFeatureMutableGlobals(void);
148149
BinaryenFeatures BinaryenFeatureNontrappingFPToInt(void);
149150
BinaryenFeatures BinaryenFeatureSignExt(void);
150151
BinaryenFeatures BinaryenFeatureSIMD128(void);
151152
BinaryenFeatures BinaryenFeatureExceptionHandling(void);
153+
BinaryenFeatures BinaryenFeatureAll(void);
152154

153155
// Modules
154156
//

src/js/binaryen.js-post.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,15 @@ Module['ExternalGlobal'] = Module['_BinaryenExternalGlobal']();
8787

8888
// Features
8989
Module['Features'] = {
90+
'MVP': Module['_BinaryenFeatureMVP'](),
9091
'Atomics': Module['_BinaryenFeatureAtomics'](),
9192
'BulkMemory': Module['_BinaryenFeatureBulkMemory'](),
9293
'MutableGlobals': Module['_BinaryenFeatureMutableGlobals'](),
9394
'NontrappingFPToInt': Module['_BinaryenFeatureNontrappingFPToInt'](),
9495
'SignExt': Module['_BinaryenFeatureSignExt'](),
9596
'SIMD128': Module['_BinaryenFeatureSIMD128'](),
9697
'ExceptionHandling': Module['_BinaryenFeatureExceptionHandling'](),
98+
'All': Module['_BinaryenFeatureAll']()
9799
};
98100

99101
// Operations

test/binaryen.js/kitchen-sink.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,15 @@ function test_types() {
6363
}
6464

6565
function test_features() {
66+
console.log("Binaryen.Features.MVP: " + Binaryen.Features.MVP);
6667
console.log("Binaryen.Features.Atomics: " + Binaryen.Features.Atomics);
6768
console.log("Binaryen.Features.BulkMemory: " + Binaryen.Features.BulkMemory);
6869
console.log("Binaryen.Features.MutableGlobals: " + Binaryen.Features.MutableGlobals);
6970
console.log("Binaryen.Features.NontrappingFPToInt: " + Binaryen.Features.NontrappingFPToInt);
7071
console.log("Binaryen.Features.SignExt: " + Binaryen.Features.SignExt);
7172
console.log("Binaryen.Features.SIMD128: " + Binaryen.Features.SIMD128);
7273
console.log("Binaryen.Features.ExceptionHandling: " + Binaryen.Features.ExceptionHandling);
74+
console.log("Binaryen.Features.All: " + Binaryen.Features.All);
7375
}
7476

7577
function test_ids() {
@@ -464,13 +466,7 @@ function test_core() {
464466
// A bunch of our code needs drop, auto-add it
465467
module.autoDrop();
466468

467-
var features =
468-
Binaryen.Features.Atomics |
469-
Binaryen.Features.BulkMemory |
470-
Binaryen.Features.NontrappingFPToInt |
471-
Binaryen.Features.SignExt |
472-
Binaryen.Features.SIMD128;
473-
469+
var features = Binaryen.Features.All;
474470
module.setFeatures(features);
475471
assert(module.getFeatures() == features);
476472

@@ -759,6 +755,9 @@ function test_parsing() {
759755

760756
// create a module and write it to text
761757
module = new Binaryen.Module();
758+
759+
module.setFeatures(Binaryen.Features.All);
760+
762761
var iii = module.addFunctionType("iii", Binaryen.i32, [ Binaryen.i32, Binaryen.i32 ]);
763762
var x = module.local.get(0, Binaryen.i32),
764763
y = module.local.get(1, Binaryen.i32);

test/binaryen.js/kitchen-sink.js.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ BinaryenTypeVec128: 5
77
BinaryenTypeExceptRef: 6
88
BinaryenTypeUnreachable: 7
99
BinaryenTypeAuto: -1
10+
Binaryen.Features.MVP: 0
1011
Binaryen.Features.Atomics: 1
1112
Binaryen.Features.BulkMemory: 16
1213
Binaryen.Features.MutableGlobals: 2
1314
Binaryen.Features.NontrappingFPToInt: 4
1415
Binaryen.Features.SignExt: 32
1516
Binaryen.Features.SIMD128: 8
1617
Binaryen.Features.ExceptionHandling: 64
18+
Binaryen.Features.All: 127
1719
BinaryenInvalidId: 0
1820
BinaryenBlockId: 1
1921
BinaryenIfId: 2
@@ -3390,7 +3392,7 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5}
33903392
functionTypes[3] = BinaryenAddFunctionType(the_module, NULL, 0, paramTypes, 0);
33913393
}
33923394
BinaryenModuleAutoDrop(the_module);
3393-
BinaryenModuleSetFeatures(the_module, 61);
3395+
BinaryenModuleSetFeatures(the_module, 127);
33943396
BinaryenModuleGetFeatures(the_module);
33953397
BinaryenModuleValidate(the_module);
33963398
BinaryenModulePrint(the_module);

test/example/c-api-kitchen-sink.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,15 @@ void test_types() {
161161
}
162162

163163
void test_features() {
164+
printf("BinaryenFeatureMVP: %d\n", BinaryenFeatureMVP());
164165
printf("BinaryenFeatureAtomics: %d\n", BinaryenFeatureAtomics());
165166
printf("BinaryenFeatureBulkMemory: %d\n", BinaryenFeatureBulkMemory());
166167
printf("BinaryenFeatureMutableGlobals: %d\n", BinaryenFeatureMutableGlobals());
167168
printf("BinaryenFeatureNontrappingFPToInt: %d\n", BinaryenFeatureNontrappingFPToInt());
168169
printf("BinaryenFeatureSignExt: %d\n", BinaryenFeatureSignExt());
169170
printf("BinaryenFeatureSIMD128: %d\n", BinaryenFeatureSIMD128());
170171
printf("BinaryenFeatureExceptionHandling: %d\n", BinaryenFeatureExceptionHandling());
172+
printf("BinaryenFeatureAll: %d\n", BinaryenFeatureAll());
171173
}
172174

173175
void test_core() {
@@ -521,13 +523,7 @@ void test_core() {
521523
// A bunch of our code needs drop(), auto-add it
522524
BinaryenModuleAutoDrop(module);
523525

524-
BinaryenFeatures features =
525-
BinaryenFeatureAtomics() |
526-
BinaryenFeatureBulkMemory() |
527-
BinaryenFeatureNontrappingFPToInt() |
528-
BinaryenFeatureSignExt() |
529-
BinaryenFeatureSIMD128();
530-
526+
BinaryenFeatures features = BinaryenFeatureAll();
531527
BinaryenModuleSetFeatures(module, features);
532528
assert(BinaryenModuleGetFeatures(module) == features);
533529

test/example/c-api-kitchen-sink.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ BinaryenTypeVec128: 5
77
BinaryenTypeExceptRef: 6
88
BinaryenTypeUnreachable: 7
99
BinaryenTypeAuto: -1
10+
BinaryenFeatureMVP: 0
1011
BinaryenFeatureAtomics: 1
1112
BinaryenFeatureBulkMemory: 16
1213
BinaryenFeatureMutableGlobals: 2
1314
BinaryenFeatureNontrappingFPToInt: 4
1415
BinaryenFeatureSignExt: 32
1516
BinaryenFeatureSIMD128: 8
1617
BinaryenFeatureExceptionHandling: 64
18+
BinaryenFeatureAll: 127
1719
(f32.neg
1820
(f32.const -33.61199951171875)
1921
)
@@ -3341,7 +3343,7 @@ int main() {
33413343
functionTypes[3] = BinaryenAddFunctionType(the_module, NULL, 0, paramTypes, 0);
33423344
}
33433345
BinaryenModuleAutoDrop(the_module);
3344-
BinaryenModuleSetFeatures(the_module, 61);
3346+
BinaryenModuleSetFeatures(the_module, 127);
33453347
BinaryenModuleGetFeatures(the_module);
33463348
BinaryenModuleValidate(the_module);
33473349
BinaryenModulePrint(the_module);

0 commit comments

Comments
 (0)