summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlon Zakai (kripken) <alonzakai@gmail.com>2017-02-13 14:15:48 -0800
committerAlon Zakai (kripken) <alonzakai@gmail.com>2017-02-16 22:45:39 -0800
commit04d38f6f881b16a014c47e897a4590d76ec548ff (patch)
treeb83569be07ccb148331da81591a1f5fde7ecbfaa /test
parentf05efb982f8472c1dd6beb0e8dbc8afc73e82fcb (diff)
downloadbinaryen-04d38f6f881b16a014c47e897a4590d76ec548ff.tar.gz
binaryen-04d38f6f881b16a014c47e897a4590d76ec548ff.tar.bz2
binaryen-04d38f6f881b16a014c47e897a4590d76ec548ff.zip
remove unneeded masks using getMaxBits
Diffstat (limited to 'test')
-rw-r--r--test/emcc_hello_world.fromasm20
-rw-r--r--test/emcc_hello_world.fromasm.imprecise20
-rw-r--r--test/passes/optimize-instructions.txt54
-rw-r--r--test/passes/optimize-instructions.wast66
4 files changed, 134 insertions, 26 deletions
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index 78f0460fa..88db1c1ce 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -1941,14 +1941,11 @@
(i32.load8_u
(get_local $2)
)
- (i32.and
- (tee_local $1
- (i32.and
- (get_local $1)
- (i32.const 255)
- )
+ (tee_local $1
+ (i32.and
+ (get_local $1)
+ (i32.const 255)
)
- (i32.const 255)
)
)
(block
@@ -9393,13 +9390,10 @@
(i32.shl
(get_local $8)
(i32.xor
- (i32.and
- (tee_local $6
- (i32.eqz
- (get_local $9)
- )
+ (tee_local $6
+ (i32.eqz
+ (get_local $9)
)
- (i32.const 1)
)
(i32.const 1)
)
diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise
index ba1a50ca7..5ed229e6f 100644
--- a/test/emcc_hello_world.fromasm.imprecise
+++ b/test/emcc_hello_world.fromasm.imprecise
@@ -1938,14 +1938,11 @@
(i32.load8_u
(get_local $2)
)
- (i32.and
- (tee_local $1
- (i32.and
- (get_local $1)
- (i32.const 255)
- )
+ (tee_local $1
+ (i32.and
+ (get_local $1)
+ (i32.const 255)
)
- (i32.const 255)
)
)
(block
@@ -9330,13 +9327,10 @@
(i32.shl
(get_local $8)
(i32.xor
- (i32.and
- (tee_local $6
- (i32.eqz
- (get_local $9)
- )
+ (tee_local $6
+ (i32.eqz
+ (get_local $9)
)
- (i32.const 1)
)
(i32.const 1)
)
diff --git a/test/passes/optimize-instructions.txt b/test/passes/optimize-instructions.txt
index 3b4718f6a..31dceaf60 100644
--- a/test/passes/optimize-instructions.txt
+++ b/test/passes/optimize-instructions.txt
@@ -1290,4 +1290,58 @@
)
)
)
+ (func $mask-bits (type $4) (param $0 i32) (param $1 i32)
+ (drop
+ (tee_local $0
+ (i32.const 127)
+ )
+ )
+ (drop
+ (tee_local $0
+ (i32.const 128)
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 254)
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 1279)
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 1290)
+ )
+ )
+ (drop
+ (tee_local $0
+ (i32.const 128)
+ )
+ )
+ (drop
+ (tee_local $0
+ (i32.const 128)
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 127)
+ )
+ )
+ )
)
diff --git a/test/passes/optimize-instructions.wast b/test/passes/optimize-instructions.wast
index f8c93d03c..c305ccbbb 100644
--- a/test/passes/optimize-instructions.wast
+++ b/test/passes/optimize-instructions.wast
@@ -1625,4 +1625,70 @@
)
)
)
+ (func $mask-bits (param $0 i32) (param $1 i32)
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 127) ;; 7 bits
+ )
+ (i32.const 255) ;; mask 8, so we don't need this
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128) ;; 8 bits
+ )
+ (i32.const 255) ;; mask 8, so we don't need this
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 254) ;; improper mask, small
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 1279) ;; improper mask, large
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 1290) ;; improper mask, large
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 4095) ;; proper mask, huge
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 511) ;; proper mask, large
+ )
+ )
+ (drop
+ (i32.and
+ (tee_local $0
+ (i32.const 128)
+ )
+ (i32.const 127) ;; proper mask, just too small
+ )
+ )
+ )
)