diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-06 16:14:13 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 18:42:14 -0700 |
commit | c2072c3f7c96eed6abbc7901c181bec92e3b9ced (patch) | |
tree | 4e76eeb402646a57c2c4fd60776f8d23f1ec53fe /test | |
parent | 779c2a20af50c351fb725b785a0ed6932143280d (diff) | |
download | binaryen-c2072c3f7c96eed6abbc7901c181bec92e3b9ced.tar.gz binaryen-c2072c3f7c96eed6abbc7901c181bec92e3b9ced.tar.bz2 binaryen-c2072c3f7c96eed6abbc7901c181bec92e3b9ced.zip |
optimize loads+shifts into signed loads
Diffstat (limited to 'test')
-rw-r--r-- | test/emcc_hello_world.fromasm | 284 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm.imprecise | 284 | ||||
-rw-r--r-- | test/unit.asm.js | 12 | ||||
-rw-r--r-- | test/unit.fromasm | 66 | ||||
-rw-r--r-- | test/unit.fromasm.imprecise | 66 | ||||
-rw-r--r-- | test/unit.fromasm.imprecise.no-opts | 90 | ||||
-rw-r--r-- | test/unit.fromasm.no-opts | 90 |
7 files changed, 464 insertions, 428 deletions
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm index 10da1e436..15b9aa473 100644 --- a/test/emcc_hello_world.fromasm +++ b/test/emcc_hello_world.fromasm @@ -467,14 +467,8 @@ ) ) (if - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $2) ) (set_local $2 (get_local $0) @@ -1415,14 +1409,8 @@ ) (if (i32.lt_s - (i32.shr_s - (i32.shl - (i32.load8_s offset=74 - (get_local $0) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=74 + (get_local $0) ) (i32.const 1) ) @@ -1697,14 +1685,8 @@ (block $label$break$L10 (if (i32.gt_s - (i32.shr_s - (i32.shl - (i32.load8_s offset=75 - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=75 + (get_local $2) ) (i32.const -1) ) @@ -1729,22 +1711,16 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s + (i32.load8_s + (i32.add + (get_local $0) + (tee_local $4 (i32.add - (get_local $0) - (tee_local $4 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) + (get_local $3) + (i32.const -1) ) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const 10) ) @@ -1840,19 +1816,13 @@ (i32.or (i32.add (tee_local $1 - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 74) - ) - ) + (i32.load8_s + (tee_local $2 + (i32.add + (get_local $0) + (i32.const 74) ) - (i32.const 24) ) - (i32.const 24) ) ) (i32.const 255) @@ -2189,14 +2159,8 @@ (block $while-out$1 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $2) ) (i32.shr_s (i32.shl @@ -2320,14 +2284,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $5) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $5) ) (i32.shr_s (i32.shl @@ -2476,14 +2434,8 @@ (block $while-out$7 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.shr_s (i32.shl @@ -3066,14 +3018,8 @@ ) (if (i32.ne - (i32.shr_s - (i32.shl - (i32.load8_s offset=1 - (get_local $54) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=1 + (get_local $54) ) (i32.const 37) ) @@ -3095,19 +3041,13 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $54) - (i32.const 2) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $54) + (i32.const 2) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const 37) ) @@ -3211,14 +3151,8 @@ (get_local $5) (tee_local $7 (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $41) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=2 + (get_local $41) ) (i32.const 36) ) @@ -3370,19 +3304,13 @@ (i32.lt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $6 + (i32.add + (get_local $9) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3391,14 +3319,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=2 + (get_local $9) ) (i32.const 36) ) @@ -3419,14 +3341,8 @@ (get_local $3) (i32.shl (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $6) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $6) ) (i32.const -48) ) @@ -3601,19 +3517,13 @@ (i32.ge_u (tee_local $6 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $1) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3663,14 +3573,8 @@ (block $label$break$L46 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.const 46) ) @@ -3743,19 +3647,13 @@ (i32.ge_u (tee_local $6 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $1) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3779,19 +3677,13 @@ (i32.lt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 2) - ) - ) + (i32.load8_s + (tee_local $6 + (i32.add + (get_local $9) + (i32.const 2) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3800,14 +3692,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=3 - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=3 + (get_local $9) ) (i32.const 36) ) @@ -3828,14 +3714,8 @@ (get_local $3) (i32.shl (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $6) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $6) ) (i32.const -48) ) @@ -3921,14 +3801,8 @@ (i32.gt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $11) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $11) ) (i32.const -65) ) @@ -4143,14 +4017,8 @@ (i32.eq (i32.and (tee_local $1 - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $11) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $11) ) ) (i32.const 15) @@ -5023,14 +4891,8 @@ (get_local $30) ) (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.const 45) ) @@ -6182,14 +6044,8 @@ (br_if $do-once$90 (get_local $14) (i32.ne - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $39) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $39) ) (i32.const 45) ) diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise index bcdebdd99..9d70778d5 100644 --- a/test/emcc_hello_world.fromasm.imprecise +++ b/test/emcc_hello_world.fromasm.imprecise @@ -460,14 +460,8 @@ ) ) (if - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $2) ) (set_local $2 (get_local $0) @@ -1408,14 +1402,8 @@ ) (if (i32.lt_s - (i32.shr_s - (i32.shl - (i32.load8_s offset=74 - (get_local $0) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=74 + (get_local $0) ) (i32.const 1) ) @@ -1690,14 +1678,8 @@ (block $label$break$L10 (if (i32.gt_s - (i32.shr_s - (i32.shl - (i32.load8_s offset=75 - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=75 + (get_local $2) ) (i32.const -1) ) @@ -1722,22 +1704,16 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s + (i32.load8_s + (i32.add + (get_local $0) + (tee_local $4 (i32.add - (get_local $0) - (tee_local $4 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) + (get_local $3) + (i32.const -1) ) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const 10) ) @@ -1833,19 +1809,13 @@ (i32.or (i32.add (tee_local $1 - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 74) - ) - ) + (i32.load8_s + (tee_local $2 + (i32.add + (get_local $0) + (i32.const 74) ) - (i32.const 24) ) - (i32.const 24) ) ) (i32.const 255) @@ -2182,14 +2152,8 @@ (block $while-out$1 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $2) ) (i32.shr_s (i32.shl @@ -2313,14 +2277,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $5) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $5) ) (i32.shr_s (i32.shl @@ -2469,14 +2427,8 @@ (block $while-out$7 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.shr_s (i32.shl @@ -3059,14 +3011,8 @@ ) (if (i32.ne - (i32.shr_s - (i32.shl - (i32.load8_s offset=1 - (get_local $54) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=1 + (get_local $54) ) (i32.const 37) ) @@ -3088,19 +3034,13 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $54) - (i32.const 2) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $54) + (i32.const 2) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const 37) ) @@ -3204,14 +3144,8 @@ (get_local $5) (tee_local $7 (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $41) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=2 + (get_local $41) ) (i32.const 36) ) @@ -3363,19 +3297,13 @@ (i32.lt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $6 + (i32.add + (get_local $9) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3384,14 +3312,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=2 + (get_local $9) ) (i32.const 36) ) @@ -3412,14 +3334,8 @@ (get_local $3) (i32.shl (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $6) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $6) ) (i32.const -48) ) @@ -3594,19 +3510,13 @@ (i32.ge_u (tee_local $6 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $1) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3656,14 +3566,8 @@ (block $label$break$L46 (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.const 46) ) @@ -3736,19 +3640,13 @@ (i32.ge_u (tee_local $6 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) + (i32.load8_s + (tee_local $1 + (i32.add + (get_local $1) + (i32.const 1) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3772,19 +3670,13 @@ (i32.lt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 2) - ) - ) + (i32.load8_s + (tee_local $6 + (i32.add + (get_local $9) + (i32.const 2) ) - (i32.const 24) ) - (i32.const 24) ) (i32.const -48) ) @@ -3793,14 +3685,8 @@ ) (if (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=3 - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s offset=3 + (get_local $9) ) (i32.const 36) ) @@ -3821,14 +3707,8 @@ (get_local $3) (i32.shl (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $6) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $6) ) (i32.const -48) ) @@ -3914,14 +3794,8 @@ (i32.gt_u (tee_local $1 (i32.add - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $11) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $11) ) (i32.const -65) ) @@ -4136,14 +4010,8 @@ (i32.eq (i32.and (tee_local $1 - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $11) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $11) ) ) (i32.const 15) @@ -5016,14 +4884,8 @@ (get_local $30) ) (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $9) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $9) ) (i32.const 45) ) @@ -6175,14 +6037,8 @@ (br_if $do-once$90 (get_local $14) (i32.ne - (i32.shr_s - (i32.shl - (i32.load8_s - (get_local $39) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.load8_s + (get_local $39) ) (i32.const 45) ) diff --git a/test/unit.asm.js b/test/unit.asm.js index e76ae1ef9..a25e60721 100644 --- a/test/unit.asm.js +++ b/test/unit.asm.js @@ -330,6 +330,18 @@ function asm(global, env, buffer) { y = 3 ? +abort(7) : 4.5; } + function loadSigned(x) { + x = x | 0; + loadSigned(HEAP8[x >> 0] << 24 >> 24); + loadSigned(HEAPU8[x >> 0] << 24 >> 24); + loadSigned(HEAP16[x >> 1] << 16 >> 16); + loadSigned(HEAPU16[x >> 1] << 16 >> 16); + loadSigned(HEAP8[x >> 0] << 24 >> 16); + loadSigned(HEAPU8[x >> 0] << 16 >> 24); + loadSigned(HEAP16[x >> 1] << 16 >> 24); + loadSigned(HEAPU16[x >> 1] << 24 >> 16); + } + function z() { } function w() { diff --git a/test/unit.fromasm b/test/unit.fromasm index 33dd153af..bafc17f3f 100644 --- a/test/unit.fromasm +++ b/test/unit.fromasm @@ -616,4 +616,70 @@ ) ) ) + (func $loadSigned (param $0 i32) + (call $loadSigned + (i32.load8_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load8_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load16_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load16_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $0) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $0) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $0) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $0) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + ) ) diff --git a/test/unit.fromasm.imprecise b/test/unit.fromasm.imprecise index 35b8b1768..cdaca7e10 100644 --- a/test/unit.fromasm.imprecise +++ b/test/unit.fromasm.imprecise @@ -597,4 +597,70 @@ ) ) ) + (func $loadSigned (param $0 i32) + (call $loadSigned + (i32.load8_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load8_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load16_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.load16_s + (get_local $0) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $0) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $0) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $0) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $0) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + ) ) diff --git a/test/unit.fromasm.imprecise.no-opts b/test/unit.fromasm.imprecise.no-opts index c41075df0..244ef7cd8 100644 --- a/test/unit.fromasm.imprecise.no-opts +++ b/test/unit.fromasm.imprecise.no-opts @@ -1001,6 +1001,96 @@ ) ) ) + (func $loadSigned (param $x i32) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + ) (func $z (nop) ) diff --git a/test/unit.fromasm.no-opts b/test/unit.fromasm.no-opts index 2162d9ed7..1c0e87f6a 100644 --- a/test/unit.fromasm.no-opts +++ b/test/unit.fromasm.no-opts @@ -1007,6 +1007,96 @@ ) ) ) + (func $loadSigned (param $x i32) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_s + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load8_u + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_s + (get_local $x) + ) + (i32.const 16) + ) + (i32.const 24) + ) + ) + (call $loadSigned + (i32.shr_s + (i32.shl + (i32.load16_u + (get_local $x) + ) + (i32.const 24) + ) + (i32.const 16) + ) + ) + ) (func $z (nop) ) |