diff --git a/embed/bcw2/bcw2.wasm b/embed/bcw2/bcw2.wasm index 6ab07ca..18e8397 100755 Binary files a/embed/bcw2/bcw2.wasm and b/embed/bcw2/bcw2.wasm differ diff --git a/embed/bcw2/build.sh b/embed/bcw2/build.sh index b4d2971..a7276b3 100755 --- a/embed/bcw2/build.sh +++ b/embed/bcw2/build.sh @@ -62,8 +62,9 @@ cd ~- $(awk '{print "-Wl,--export="$0}' ../exports.txt) "$BINARYEN/wasm-ctor-eval" -g -c _initialize bcw2.wasm -o bcw2.tmp -"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ - bcw2.tmp -o bcw2.wasm --low-memory-unused \ +"$BINARYEN/wasm-opt" -g bcw2.tmp -o bcw2.wasm \ + --low-memory-unused --gufa --generate-global-effects --converge -O3 \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue \ No newline at end of file + --enable-reference-types --enable-multivalue \ + --strip --strip-producers \ No newline at end of file diff --git a/embed/build.sh b/embed/build.sh index e078c10..85a9e4d 100755 --- a/embed/build.sh +++ b/embed/build.sh @@ -27,8 +27,9 @@ trap 'rm -f sqlite3.tmp' EXIT $(awk '{print "-Wl,--export="$0}' exports.txt) "$BINARYEN/wasm-ctor-eval" -g -c _initialize sqlite3.wasm -o sqlite3.tmp -"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ - sqlite3.tmp -o sqlite3.wasm --low-memory-unused \ +"$BINARYEN/wasm-opt" -g sqlite3.tmp -o sqlite3.wasm \ + --low-memory-unused --gufa --generate-global-effects --converge -O3 \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue \ No newline at end of file + --enable-reference-types --enable-multivalue \ + --strip --strip-producers \ No newline at end of file diff --git a/embed/sqlite3.wasm b/embed/sqlite3.wasm index f8c8f5f..e44b2cc 100755 Binary files a/embed/sqlite3.wasm and b/embed/sqlite3.wasm differ diff --git a/sqlite3/libc/build.sh b/sqlite3/libc/build.sh index 794ca77..c53fddd 100755 --- a/sqlite3/libc/build.sh +++ b/sqlite3/libc/build.sh @@ -43,10 +43,11 @@ EOF -Wl,--export=qsort "$BINARYEN/wasm-ctor-eval" -g -c _initialize libc.wasm -o libc.tmp -"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ - libc.tmp -o libc.wasm \ +"$BINARYEN/wasm-opt" -g libc.tmp -o libc.wasm \ + --low-memory-unused --generate-global-effects --converge -O3 \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue + --enable-reference-types --enable-multivalue \ + --strip --strip-debug --strip-producers "$BINARYEN/wasm-dis" -o libc.wat libc.wasm \ No newline at end of file diff --git a/sqlite3/libc/libc.wasm b/sqlite3/libc/libc.wasm index 688e814..1ea2ef6 100755 Binary files a/sqlite3/libc/libc.wasm and b/sqlite3/libc/libc.wasm differ diff --git a/sqlite3/libc/libc.wat b/sqlite3/libc/libc.wat index e8a2510..ca44de0 100644 --- a/sqlite3/libc/libc.wat +++ b/sqlite3/libc/libc.wat @@ -57,7 +57,7 @@ (i32.const 15) ) ) - (local.set $9 + (local.set $8 (i32.and (local.get $2) (i32.const -16) @@ -76,50 +76,47 @@ ) ) (loop $label5 - (local.set $6 + (local.set $7 (i32.eq (local.get $1) (i32.const 2) ) ) (local.set $18 - (i32.le_u - (i32.add - (local.get $0) - (i32.mul - (i32.add - (local.tee $13 - (select - (i32.const 1) - (local.tee $1 - (i32.wrap_i64 - (i64.div_u - (i64.sub - (i64.mul - (i64.extend_i32_u - (local.get $1) - ) - (i64.const 5) + (i32.add + (local.get $0) + (i32.mul + (local.get $2) + (i32.add + (local.tee $13 + (select + (i32.const 1) + (local.tee $1 + (i32.wrap_i64 + (i64.div_u + (i64.sub + (i64.mul + (i64.extend_i32_u + (local.get $1) ) - (i64.const 1) + (i64.const 5) ) - (i64.const 11) + (i64.const 1) ) + (i64.const 11) ) ) - (local.get $6) ) + (local.get $7) ) - (i32.const 1) ) - (local.get $2) + (i32.const 1) ) ) - (local.get $0) ) ) - (local.set $11 - (local.tee $10 + (local.set $10 + (local.tee $9 (i32.mul (local.get $2) (local.get $13) @@ -130,31 +127,31 @@ (block $block (br_if $block (i32.gt_u - (local.tee $5 + (local.tee $4 (i32.sub - (local.get $11) (local.get $10) + (local.get $9) ) ) - (local.get $11) + (local.get $10) ) ) (loop $label3 (br_if $block (i32.le_s (call_indirect $0 (type $0) - (local.tee $4 + (local.tee $5 (i32.add (local.get $0) - (local.tee $12 - (local.get $5) + (local.tee $11 + (local.get $4) ) ) ) - (local.tee $5 + (local.tee $4 (i32.add - (local.get $4) - (local.get $10) + (local.get $5) + (local.get $9) ) ) (local.get $3) @@ -170,84 +167,88 @@ ) (br_if $block1 (i32.and - (i32.eqz - (local.get $18) - ) (i32.lt_u - (local.get $5) + (local.get $4) (i32.add - (local.get $12) + (local.get $11) (local.get $16) ) ) + (i32.gt_u + (i32.add + (local.get $11) + (local.get $18) + ) + (local.get $5) + ) ) ) - (local.set $5 - (i32.add - (local.get $5) - (local.get $9) - ) - ) - (local.set $7 + (local.set $4 (i32.add (local.get $4) - (local.get $9) + (local.get $8) ) ) (local.set $6 - (local.get $9) + (i32.add + (local.get $5) + (local.get $8) + ) + ) + (local.set $7 + (local.get $8) ) (loop $label (local.set $20 (v128.load align=1 - (local.get $4) + (local.get $5) ) ) (v128.store align=1 - (local.get $4) + (local.get $5) (v128.load align=1 - (local.tee $8 + (local.tee $12 (i32.add - (local.get $4) - (local.get $10) + (local.get $5) + (local.get $9) ) ) ) ) (v128.store align=1 - (local.get $8) + (local.get $12) (local.get $20) ) - (local.set $4 + (local.set $5 (i32.add - (local.get $4) + (local.get $5) (i32.const 16) ) ) (br_if $label - (local.tee $6 + (local.tee $7 (i32.sub - (local.get $6) + (local.get $7) (i32.const 16) ) ) ) ) - (local.set $6 + (local.set $7 (local.get $15) ) (br_if $block2 (i32.eq (local.get $2) - (local.get $9) + (local.get $8) ) ) (br $block3) ) - (local.set $7 - (local.get $4) - ) (local.set $6 + (local.get $5) + ) + (local.set $7 (local.get $2) ) ) @@ -256,56 +257,56 @@ (block (result i32) (local.set $scratch (i32.sub - (local.get $6) + (local.get $7) (i32.const 1) ) ) (if - (local.tee $4 + (local.tee $5 (i32.and - (local.get $6) + (local.get $7) (i32.const 3) ) ) (then - (local.set $6 + (local.set $7 (i32.and - (local.get $6) + (local.get $7) (i32.const -4) ) ) (loop $label1 (local.set $19 (i32.load8_u - (local.get $7) + (local.get $6) ) ) (i32.store8 - (local.get $7) + (local.get $6) (i32.load8_u - (local.get $5) + (local.get $4) ) ) (i32.store8 - (local.get $5) + (local.get $4) (local.get $19) ) - (local.set $5 + (local.set $4 (i32.add - (local.get $5) + (local.get $4) (i32.const 1) ) ) - (local.set $7 + (local.set $6 (i32.add - (local.get $7) + (local.get $6) (i32.const 1) ) ) (br_if $label1 - (local.tee $4 + (local.tee $5 (i32.sub - (local.get $4) + (local.get $5) (i32.const 1) ) ) @@ -319,112 +320,82 @@ ) ) (loop $label2 - (local.set $4 + (local.set $5 (i32.load8_u - (local.get $7) + (local.get $6) ) ) (i32.store8 - (local.get $7) + (local.get $6) (i32.load8_u - (local.get $5) + (local.get $4) ) ) (i32.store8 + (local.get $4) (local.get $5) - (local.get $4) ) - (local.set $8 - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $7) - (i32.const 1) - ) - ) + (local.set $5 + (i32.load8_u offset=1 + (local.get $6) ) ) - (i32.store8 - (local.get $4) - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) + (i32.store8 offset=1 + (local.get $6) + (i32.load8_u offset=1 + (local.get $4) ) ) - (i32.store8 + (i32.store8 offset=1 (local.get $4) - (local.get $8) + (local.get $5) ) - (local.set $8 - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $7) - (i32.const 2) - ) - ) + (local.set $5 + (i32.load8_u offset=2 + (local.get $6) ) ) - (i32.store8 - (local.get $4) - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 2) - ) - ) + (i32.store8 offset=2 + (local.get $6) + (i32.load8_u offset=2 + (local.get $4) ) ) - (i32.store8 + (i32.store8 offset=2 (local.get $4) - (local.get $8) + (local.get $5) ) - (local.set $8 - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $7) - (i32.const 3) - ) - ) + (local.set $5 + (i32.load8_u offset=3 + (local.get $6) ) ) - (i32.store8 - (local.get $4) - (i32.load8_u - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 3) - ) - ) + (i32.store8 offset=3 + (local.get $6) + (i32.load8_u offset=3 + (local.get $4) ) ) - (i32.store8 + (i32.store8 offset=3 (local.get $4) - (local.get $8) + (local.get $5) ) - (local.set $7 + (local.set $6 (i32.add - (local.get $7) + (local.get $6) (i32.const 4) ) ) - (local.set $5 + (local.set $4 (i32.add - (local.get $5) + (local.get $4) (i32.const 4) ) ) (br_if $label2 - (local.tee $6 + (local.tee $7 (i32.sub - (local.get $6) + (local.get $7) (i32.const 4) ) ) @@ -433,23 +404,23 @@ ) (br_if $label3 (i32.le_u - (local.tee $5 + (local.tee $4 (i32.sub - (local.get $12) - (local.get $10) + (local.get $11) + (local.get $9) ) ) - (local.get $12) + (local.get $11) ) ) ) ) (br_if $label4 (i32.lt_u - (local.tee $11 + (local.tee $10 (i32.add (local.get $2) - (local.get $11) + (local.get $10) ) ) (local.get $14) @@ -467,18 +438,28 @@ ) ) (func $memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (memory.fill - (local.get $0) - (local.get $1) + (if (local.get $2) + (then + (memory.fill + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) ) (local.get $0) ) (func $memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (memory.copy - (local.get $0) - (local.get $1) + (if (local.get $2) + (then + (memory.copy + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) ) (local.get $0) ) @@ -1182,18 +1163,18 @@ ) ) (func $strspn (param $0 i32) (param $1 i32) (result i32) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + (local $7 v128) + (local $8 v128) + (local $9 v128) + (local $10 v128) (if (i32.eqz - (local.tee $7 + (local.tee $3 (i32.load8_u (local.get $1) ) @@ -1205,13 +1186,13 @@ ) ) ) - (local.set $6 + (local.set $2 (i32.and (local.get $0) (i32.const -16) ) ) - (local.set $9 + (local.set $5 (i32.and (local.get $0) (i32.const 15) @@ -1231,14 +1212,14 @@ (loop $label (v128.store (i32.const 4064) - (local.get $4) + (local.get $9) ) (i32.store8 - (local.tee $10 + (local.tee $6 (i32.or - (local.tee $8 + (local.tee $4 (i32.and - (local.get $7) + (local.get $3) (i32.const 15) ) ) @@ -1247,13 +1228,13 @@ ) (i32.or (i32.load8_u - (local.get $10) + (local.get $6) ) (i32.shl (i32.const 1) - (local.tee $7 + (local.tee $3 (i32.shr_u - (local.get $7) + (local.get $3) (i32.const 4) ) ) @@ -1262,39 +1243,39 @@ ) (v128.store (i32.const 4080) - (local.get $3) + (local.get $7) ) (i32.store8 - (local.tee $8 + (local.tee $4 (i32.or - (local.get $8) + (local.get $4) (i32.const 4080) ) ) (i32.or (i32.load8_u - (local.get $8) + (local.get $4) ) (i32.shl (i32.const 1) (i32.sub - (local.get $7) + (local.get $3) (i32.const 8) ) ) ) ) - (local.set $7 + (local.set $3 (i32.load8_u (local.get $1) ) ) - (local.set $4 + (local.set $9 (v128.load (i32.const 4064) ) ) - (local.set $3 + (local.set $7 (v128.load (i32.const 4080) ) @@ -1306,49 +1287,44 @@ ) ) (br_if $label - (local.get $7) + (local.get $3) ) ) (block $block (if (i32.eqz (i8x16.all_true - (local.tee $2 - (i8x16.eq - (v128.and - (v128.or - (i8x16.swizzle - (local.get $3) - (v128.xor - (local.tee $5 - (v128.and - (local.tee $2 - (v128.load - (local.get $6) - ) + (local.tee $8 + (v128.and + (v128.or + (i8x16.swizzle + (local.get $7) + (v128.xor + (local.tee $10 + (v128.and + (local.tee $8 + (v128.load + (local.get $2) ) - (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) + (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) - (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) - ) - (i8x16.swizzle - (local.get $4) - (local.get $5) + (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) ) - (local.tee $2 - (i8x16.swizzle - (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) - (i8x16.shr_u - (local.get $2) - (i32.const 4) - ) - ) + (i8x16.swizzle + (local.get $9) + (local.get $10) + ) + ) + (i8x16.swizzle + (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) + (i8x16.shr_u + (local.get $8) + (i32.const 4) ) ) - (local.get $2) ) ) ) @@ -1357,15 +1333,15 @@ (br_if $block (local.tee $1 (i32.and - (i32.xor - (i8x16.bitmask - (local.get $2) + (i8x16.bitmask + (i8x16.eq + (local.get $8) + (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ) - (i32.const 65535) ) (i32.shl (i32.const -1) - (local.get $9) + (local.get $5) ) ) ) @@ -1375,58 +1351,53 @@ (loop $label1 (br_if $label1 (i8x16.all_true - (local.tee $2 - (i8x16.eq - (v128.and - (v128.or - (i8x16.swizzle - (local.get $3) - (v128.xor - (local.tee $5 - (v128.and - (local.tee $2 - (v128.load - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 16) - ) + (local.tee $8 + (v128.and + (v128.or + (i8x16.swizzle + (local.get $7) + (v128.xor + (local.tee $10 + (v128.and + (local.tee $8 + (v128.load + (local.tee $2 + (i32.add + (local.get $2) + (i32.const 16) ) ) ) - (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) + (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) - (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) - ) - (i8x16.swizzle - (local.get $4) - (local.get $5) + (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) ) - (local.tee $2 - (i8x16.swizzle - (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) - (i8x16.shr_u - (local.get $2) - (i32.const 4) - ) - ) + (i8x16.swizzle + (local.get $9) + (local.get $10) + ) + ) + (i8x16.swizzle + (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) + (i8x16.shr_u + (local.get $8) + (i32.const 4) ) ) - (local.get $2) ) ) ) ) ) (local.set $1 - (i32.xor - (i8x16.bitmask - (local.get $2) + (i8x16.bitmask + (i8x16.eq + (local.get $8) + (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ) - (i32.const 65535) ) ) ) @@ -1436,7 +1407,7 @@ (local.get $1) ) (i32.sub - (local.get $6) + (local.get $2) (local.get $0) ) ) @@ -1447,14 +1418,14 @@ (if (i32.eqz (i8x16.all_true - (local.tee $3 + (local.tee $7 (i8x16.eq (v128.load - (local.get $6) + (local.get $2) ) - (local.tee $4 + (local.tee $9 (i8x16.splat - (local.get $7) + (local.get $3) ) ) ) @@ -1467,13 +1438,13 @@ (i32.and (i32.xor (i8x16.bitmask - (local.get $3) + (local.get $7) ) (i32.const 65535) ) (i32.shl (i32.const -1) - (local.get $9) + (local.get $5) ) ) ) @@ -1483,17 +1454,17 @@ (loop $label2 (br_if $label2 (i8x16.all_true - (local.tee $3 + (local.tee $7 (i8x16.eq (v128.load - (local.tee $6 + (local.tee $2 (i32.add - (local.get $6) + (local.get $2) (i32.const 16) ) ) ) - (local.get $4) + (local.get $9) ) ) ) @@ -1502,7 +1473,7 @@ (local.set $1 (i32.xor (i8x16.bitmask - (local.get $3) + (local.get $7) ) (i32.const 65535) ) @@ -1513,23 +1484,23 @@ (local.get $1) ) (i32.sub - (local.get $6) + (local.get $2) (local.get $0) ) ) ) (func $strcspn (param $0 i32) (param $1 i32) (result i32) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 v128) + (local $7 v128) + (local $8 v128) + (local $9 v128) (block $block (if - (local.tee $7 + (local.tee $3 (i32.load8_u (local.get $1) ) @@ -1545,12 +1516,12 @@ (block $block1 (if (v128.any_true - (local.tee $3 + (local.tee $6 (v128.or (i8x16.eq - (local.tee $4 + (local.tee $7 (v128.load - (local.tee $6 + (local.tee $2 (i32.and (local.get $0) (i32.const -16) @@ -1561,10 +1532,10 @@ (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ) (i8x16.eq - (local.get $4) - (local.tee $4 + (local.get $7) + (local.tee $7 (i8x16.splat - (local.get $7) + (local.get $3) ) ) ) @@ -1576,7 +1547,7 @@ (local.tee $1 (i32.and (i8x16.bitmask - (local.get $3) + (local.get $6) ) (i32.shl (i32.const -1) @@ -1594,14 +1565,14 @@ (br_if $label (i32.eqz (v128.any_true - (local.tee $3 + (local.tee $6 (v128.or (i8x16.eq - (local.tee $3 + (local.tee $6 (v128.load - (local.tee $6 + (local.tee $2 (i32.add - (local.get $6) + (local.get $2) (i32.const 16) ) ) @@ -1610,8 +1581,8 @@ (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ) (i8x16.eq - (local.get $3) - (local.get $4) + (local.get $6) + (local.get $7) ) ) ) @@ -1621,7 +1592,7 @@ ) (local.set $1 (i8x16.bitmask - (local.get $3) + (local.get $6) ) ) ) @@ -1631,13 +1602,13 @@ (local.get $1) ) (i32.sub - (local.get $6) + (local.get $2) (local.get $0) ) ) ) ) - (local.set $8 + (local.set $4 (i32.and (local.get $0) (i32.const 15) @@ -1646,13 +1617,13 @@ (loop $label1 (v128.store (i32.const 4080) - (local.get $4) + (local.get $7) ) (i32.store8 (i32.or - (local.tee $7 + (local.tee $3 (i32.and - (local.tee $6 + (local.tee $2 (i32.load8_u (local.get $1) ) @@ -1665,16 +1636,16 @@ (i32.or (i32.load8_u (i32.or - (local.get $7) + (local.get $3) (i32.const 4080) ) ) (i32.shl (i32.const 1) (i32.sub - (local.tee $9 + (local.tee $5 (i32.shr_u - (local.get $6) + (local.get $2) (i32.const 4) ) ) @@ -1685,22 +1656,22 @@ ) (v128.store (i32.const 4064) - (local.get $3) + (local.get $6) ) (i32.store8 - (local.tee $7 + (local.tee $3 (i32.or - (local.get $7) + (local.get $3) (i32.const 4064) ) ) (i32.or (i32.load8_u - (local.get $7) + (local.get $3) ) (i32.shl (i32.const 1) - (local.get $9) + (local.get $5) ) ) ) @@ -1710,64 +1681,59 @@ (i32.const 1) ) ) - (local.set $4 + (local.set $7 (v128.load (i32.const 4080) ) ) - (local.set $3 + (local.set $6 (v128.load (i32.const 4064) ) ) (br_if $label1 - (local.get $6) + (local.get $2) ) ) (block $block2 (if (v128.any_true - (local.tee $2 - (i8x16.eq - (v128.and - (v128.or - (i8x16.swizzle - (local.get $4) - (v128.xor - (local.tee $5 - (v128.and - (local.tee $2 - (v128.load - (local.tee $6 - (i32.and - (local.get $0) - (i32.const -16) - ) + (local.tee $8 + (v128.and + (v128.or + (i8x16.swizzle + (local.get $7) + (v128.xor + (local.tee $9 + (v128.and + (local.tee $8 + (v128.load + (local.tee $2 + (i32.and + (local.get $0) + (i32.const -16) ) ) ) - (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) + (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) - (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) - ) - (i8x16.swizzle - (local.get $3) - (local.get $5) + (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) ) - (local.tee $2 - (i8x16.swizzle - (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) - (i8x16.shr_u - (local.get $2) - (i32.const 4) - ) - ) + (i8x16.swizzle + (local.get $6) + (local.get $9) + ) + ) + (i8x16.swizzle + (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) + (i8x16.shr_u + (local.get $8) + (i32.const 4) ) ) - (local.get $2) ) ) ) @@ -1775,12 +1741,18 @@ (br_if $block2 (local.tee $1 (i32.and - (i8x16.bitmask - (local.get $2) + (i32.xor + (i8x16.bitmask + (i8x16.eq + (local.get $8) + (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) + ) + ) + (i32.const 65535) ) (i32.shl (i32.const -1) - (local.get $8) + (local.get $4) ) ) ) @@ -1791,47 +1763,42 @@ (br_if $label2 (i32.eqz (v128.any_true - (local.tee $2 - (i8x16.eq - (v128.and - (v128.or - (i8x16.swizzle - (local.get $4) - (v128.xor - (local.tee $5 - (v128.and - (local.tee $2 - (v128.load - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 16) - ) + (local.tee $8 + (v128.and + (v128.or + (i8x16.swizzle + (local.get $7) + (v128.xor + (local.tee $9 + (v128.and + (local.tee $8 + (v128.load + (local.tee $2 + (i32.add + (local.get $2) + (i32.const 16) ) ) ) - (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) + (v128.const i32x4 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f 0x8f8f8f8f) ) - (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) - ) - (i8x16.swizzle - (local.get $3) - (local.get $5) + (v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080) ) ) - (local.tee $2 - (i8x16.swizzle - (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) - (i8x16.shr_u - (local.get $2) - (i32.const 4) - ) - ) + (i8x16.swizzle + (local.get $6) + (local.get $9) + ) + ) + (i8x16.swizzle + (v128.const i32x4 0x08040201 0x80402010 0x08040201 0x80402010) + (i8x16.shr_u + (local.get $8) + (i32.const 4) ) ) - (local.get $2) ) ) ) @@ -1839,8 +1806,14 @@ ) ) (local.set $1 - (i8x16.bitmask - (local.get $2) + (i32.xor + (i8x16.bitmask + (i8x16.eq + (local.get $8) + (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) + ) + ) + (i32.const 65535) ) ) ) @@ -1849,11 +1822,11 @@ (local.get $1) ) (i32.sub - (local.get $6) + (local.get $2) (local.get $0) ) ) ) - ;; features section: mutable-globals, nontrapping-float-to-int, simd, bulk-memory, sign-ext, reference-types, multivalue, bulk-memory-opt + ;; features section: mutable-globals, nontrapping-float-to-int, simd, bulk-memory, sign-ext, reference-types, multivalue, extended-const, bulk-memory-opt, call-indirect-overlong ) diff --git a/sqlite3/tools.sh b/sqlite3/tools.sh index 149fb77..2615dfd 100755 --- a/sqlite3/tools.sh +++ b/sqlite3/tools.sh @@ -27,7 +27,7 @@ elif [[ "$OSTYPE" == "darwin"* ]]; then fi WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-27/wasi-sdk-27.0-$WASI_SDK.tar.gz" -BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-$BINARYEN.tar.gz" +BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_124/binaryen-version_124-$BINARYEN.tar.gz" # Download tools mkdir -p "$ROOT/tools" diff --git a/util/sql3util/wasm/build.sh b/util/sql3util/wasm/build.sh index 3310e90..e3f9034 100755 --- a/util/sql3util/wasm/build.sh +++ b/util/sql3util/wasm/build.sh @@ -24,8 +24,9 @@ trap 'rm -f sql3parse_table.tmp' EXIT -Wl,--export=sql3parse_table "$BINARYEN/wasm-ctor-eval" -c _initialize sql3parse_table.wasm -o sql3parse_table.tmp -"$BINARYEN/wasm-opt" --strip --strip-debug --strip-producers -c -Oz \ - sql3parse_table.tmp -o sql3parse_table.wasm --low-memory-unused \ +"$BINARYEN/wasm-opt" sql3parse_table.tmp -o sql3parse_table.wasm \ + --low-memory-unused --gufa --generate-global-effects --converge -Oz \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue \ No newline at end of file + --enable-reference-types --enable-multivalue \ + --strip --strip-debug --strip-producers \ No newline at end of file diff --git a/util/sql3util/wasm/sql3parse_table.wasm b/util/sql3util/wasm/sql3parse_table.wasm index 996541e..824a7bf 100755 Binary files a/util/sql3util/wasm/sql3parse_table.wasm and b/util/sql3util/wasm/sql3parse_table.wasm differ diff --git a/vfs/tests/mptest/wasm/build.sh b/vfs/tests/mptest/wasm/build.sh index 03ee45a..5edefea 100755 --- a/vfs/tests/mptest/wasm/build.sh +++ b/vfs/tests/mptest/wasm/build.sh @@ -26,9 +26,10 @@ WASI_SDK="$ROOT/tools/wasi-sdk/bin" -D_WASI_EMULATED_GETPID -lwasi-emulated-getpid \ $(awk '{print "-Wl,--export="$0}' exports.txt) -"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ - mptest.wasm -o mptest.tmp --low-memory-unused \ +"$BINARYEN/wasm-opt" -g mptest.wasm -o mptest.tmp \ + --low-memory-unused --gufa --generate-global-effects --converge -O3 \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue + --enable-reference-types --enable-multivalue \ + --strip --strip-producers mv mptest.tmp mptest.wasm \ No newline at end of file diff --git a/vfs/tests/mptest/wasm/mptest.wasm b/vfs/tests/mptest/wasm/mptest.wasm index e032dd1..f6de181 100644 Binary files a/vfs/tests/mptest/wasm/mptest.wasm and b/vfs/tests/mptest/wasm/mptest.wasm differ diff --git a/vfs/tests/speedtest1/wasm/build.sh b/vfs/tests/speedtest1/wasm/build.sh index 39e1c49..2fd1743 100755 --- a/vfs/tests/speedtest1/wasm/build.sh +++ b/vfs/tests/speedtest1/wasm/build.sh @@ -21,9 +21,10 @@ WASI_SDK="$ROOT/tools/wasi-sdk/bin" -DSQLITE_CUSTOM_INCLUDE=sqlite_opt.h \ $(awk '{print "-Wl,--export="$0}' exports.txt) -"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ - speedtest1.wasm -o speedtest1.tmp --low-memory-unused \ +"$BINARYEN/wasm-opt" -g speedtest1.wasm -o speedtest1.tmp \ + --low-memory-unused --gufa --generate-global-effects --converge -O3 \ --enable-mutable-globals --enable-nontrapping-float-to-int \ --enable-simd --enable-bulk-memory --enable-sign-ext \ - --enable-reference-types --enable-multivalue + --enable-reference-types --enable-multivalue \ + --strip --strip-producers mv speedtest1.tmp speedtest1.wasm \ No newline at end of file diff --git a/vfs/tests/speedtest1/wasm/speedtest1.wasm b/vfs/tests/speedtest1/wasm/speedtest1.wasm index 55d61b0..58cf522 100644 Binary files a/vfs/tests/speedtest1/wasm/speedtest1.wasm and b/vfs/tests/speedtest1/wasm/speedtest1.wasm differ