diff options
-rw-r--r-- | src/binaryen-c.cpp | 2 | ||||
-rw-r--r-- | src/binaryen-c.h | 3 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 8 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js | 2 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 20 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 10 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 10 |
7 files changed, 54 insertions, 1 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index d348a4d5d..45201d919 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -687,6 +687,8 @@ BinaryenOp BinaryenLoadExtSVec32x2ToVecI64x2(void) { BinaryenOp BinaryenLoadExtUVec32x2ToVecI64x2(void) { return LoadExtUVec32x2ToVecI64x2; } +BinaryenOp BinaryenLoad32Zero(void) { return Load32Zero; } +BinaryenOp BinaryenLoad64Zero(void) { return Load64Zero; } BinaryenOp BinaryenNarrowSVecI16x8ToVecI8x16(void) { return NarrowSVecI16x8ToVecI8x16; } diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 217ed96db..da14af22e 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -558,7 +558,8 @@ BINARYEN_API BinaryenOp BinaryenLoadExtSVec16x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenLoadExtUVec16x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenLoadExtSVec32x2ToVecI64x2(void); BINARYEN_API BinaryenOp BinaryenLoadExtUVec32x2ToVecI64x2(void); -// TODO: Add Load{32,64}Zero to C and JS APIs once merged to proposal +BINARYEN_API BinaryenOp BinaryenLoad32Zero(void); +BINARYEN_API BinaryenOp BinaryenLoad64Zero(void); BINARYEN_API BinaryenOp BinaryenNarrowSVecI16x8ToVecI8x16(void); BINARYEN_API BinaryenOp BinaryenNarrowUVecI16x8ToVecI8x16(void); BINARYEN_API BinaryenOp BinaryenNarrowSVecI32x4ToVecI16x8(void); diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 907068059..cfd37e9db 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -490,6 +490,8 @@ function initializeConstants() { 'LoadExtUVec16x4ToVecI32x4', 'LoadExtSVec32x2ToVecI64x2', 'LoadExtUVec32x2ToVecI64x2', + 'Load32Zero', + 'Load64Zero', 'NarrowSVecI16x8ToVecI8x16', 'NarrowUVecI16x8ToVecI8x16', 'NarrowSVecI32x4ToVecI16x8', @@ -1490,6 +1492,12 @@ function wrapModule(module, self = {}) { 'load32x2_u'(offset, align, ptr) { return Module['_BinaryenSIMDLoad'](module, Module['LoadExtUVec32x2ToVecI64x2'], offset, align, ptr); }, + 'load32_zero'(offset, align, ptr) { + return Module['_BinaryenSIMDLoad'](module, Module['Load32Zero'], offset, align, ptr); + }, + 'load64_zero'(offset, align, ptr) { + return Module['_BinaryenSIMDLoad'](module, Module['Load64Zero'], offset, align, ptr); + }, 'store'(offset, align, ptr, value) { return Module['_BinaryenStore'](module, 16, offset, align, ptr, value, Module['v128']); }, diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index 78fa53e22..76193b0bf 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -515,6 +515,8 @@ function test_core() { module.v128.load16x4_u(0, 8, module.i32.const(128)), module.v128.load32x2_s(0, 8, module.i32.const(128)), module.v128.load32x2_u(0, 8, module.i32.const(128)), + module.v128.load32_zero(0, 4, module.i32.const(128)), + module.v128.load64_zero(0, 8, module.i32.const(128)), // Other SIMD module.i8x16.shuffle(module.v128.const(v128_bytes), module.v128.const(v128_bytes), v128_bytes), module.v128.bitselect(module.v128.const(v128_bytes), module.v128.const(v128_bytes), module.v128.const(v128_bytes)), diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 51db40ade..c835fe299 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -1802,6 +1802,16 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} ) ) (drop + (v128.load32_zero + (i32.const 128) + ) + ) + (drop + (v128.load64_zero + (i32.const 128) + ) + ) + (drop (i8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -3804,6 +3814,16 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} ) ) (drop + (v128.load32_zero + (i32.const 128) + ) + ) + (drop + (v128.load64_zero + (i32.const 128) + ) + ) + (drop (i8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index da4eeccca..bbffb1ea2 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -675,6 +675,16 @@ void test_core() { 0, 8, makeInt32(module, 128)), + BinaryenSIMDLoad(module, + BinaryenLoad32Zero(), + 0, + 4, + makeInt32(module, 128)), + BinaryenSIMDLoad(module, + BinaryenLoad64Zero(), + 0, + 8, + makeInt32(module, 128)), // Other SIMD makeSIMDShuffle(module), makeSIMDTernary(module, BinaryenBitselectVec128()), diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index 40fc10ef3..16dde8c00 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -1712,6 +1712,16 @@ BinaryenFeatureAll: 8191 ) ) (drop + (v128.load32_zero + (i32.const 128) + ) + ) + (drop + (v128.load64_zero + (i32.const 128) + ) + ) + (drop (i8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) |