summaryrefslogtreecommitdiff
path: root/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt
diff options
context:
space:
mode:
authorMax Graey <maxgraey@gmail.com>2020-08-24 18:30:33 +0300
committerGitHub <noreply@github.com>2020-08-24 08:30:33 -0700
commitd2e2521e55120465549ddbccc4660ff98e929008 (patch)
treeb03bad00edbc3ffa06e28be227d14816d657d4ed /test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt
parent33ccea3bdcb82f638c888b36bb779291d04568f3 (diff)
downloadbinaryen-d2e2521e55120465549ddbccc4660ff98e929008.tar.gz
binaryen-d2e2521e55120465549ddbccc4660ff98e929008.tar.bz2
binaryen-d2e2521e55120465549ddbccc4660ff98e929008.zip
memory.copy: use nop reductions only for ignoreImplicitTraps (#3074)
According to changes in spec: WebAssembly/bulk-memory-operations#124 WebAssembly/bulk-memory-operations#145 we unfortunately can't fold to nop even for memory.copy(x, y, 0). So this PR revert all reductions to nop but do this only under ignoreImplicitTraps flag
Diffstat (limited to 'test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt')
-rw-r--r--test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt381
1 files changed, 381 insertions, 0 deletions
diff --git a/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt b/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt
new file mode 100644
index 000000000..ee14c6e61
--- /dev/null
+++ b/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt
@@ -0,0 +1,381 @@
+(module
+ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
+ (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
+ (type $none_=>_f64 (func (result f64)))
+ (memory $0 0)
+ (func $conditionals (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local.set $0
+ (i32.const 0)
+ )
+ (loop $while-in
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in6
+ (local.set $6
+ (i32.add
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ (local.set $0
+ (if (result i32)
+ (if (result i32)
+ (i32.rem_s
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (local.tee $7
+ (i32.add
+ (local.get $0)
+ (i32.const 2)
+ )
+ )
+ )
+ (i32.const 17)
+ )
+ (i32.const 5)
+ )
+ (i32.eqz
+ (i32.rem_u
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.const 11)
+ )
+ (i32.const 3)
+ )
+ )
+ (i32.const 1)
+ )
+ (local.get $7)
+ (local.get $6)
+ )
+ )
+ (br_if $while-in6
+ (i32.lt_s
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (br_if $while-in
+ (i32.ne
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (i32.const 27000)
+ )
+ )
+ )
+ (return
+ (local.get $5)
+ )
+ )
+ (func $side-effect (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local.set $0
+ (i32.const 0)
+ )
+ (loop $while-in
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in6
+ (local.set $6
+ (i32.add
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ (local.set $0
+ (if (result i32)
+ (i32.or
+ (i32.eqz
+ (i32.rem_s
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (local.tee $7
+ (local.get $0)
+ )
+ )
+ (i32.const 17)
+ )
+ (i32.const 5)
+ )
+ )
+ (i32.eqz
+ (i32.rem_u
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (local.get $0)
+ )
+ (unreachable)
+ )
+ (i32.const 3)
+ )
+ )
+ )
+ (local.get $7)
+ (local.get $6)
+ )
+ )
+ (br_if $while-in6
+ (i32.lt_s
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (br_if $while-in
+ (i32.ne
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (i32.const 27000)
+ )
+ )
+ )
+ (return
+ (local.get $5)
+ )
+ )
+ (func $flip (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local.set $0
+ (i32.const 0)
+ )
+ (loop $while-in
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in6
+ (local.set $6
+ (i32.add
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ (local.set $0
+ (if (result i32)
+ (if (result i32)
+ (i32.rem_u
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.const 100)
+ )
+ (i32.const 3)
+ )
+ (i32.eqz
+ (i32.rem_s
+ (i32.add
+ (i32.mul
+ (local.get $0)
+ (i32.eqz
+ (local.get $0)
+ )
+ )
+ (i32.const 17)
+ )
+ (i32.const 5)
+ )
+ )
+ (i32.const 1)
+ )
+ (local.get $7)
+ (local.get $6)
+ )
+ )
+ (br_if $while-in6
+ (i32.lt_s
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (br_if $while-in
+ (i32.ne
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (i32.const 27000)
+ )
+ )
+ )
+ (return
+ (local.get $5)
+ )
+ )
+ (func $invalidate-conditionalizeExpensiveOnBitwise (param $0 i32) (param $1 i32) (result i32)
+ (if
+ (i32.eqz
+ (i32.and
+ (i32.lt_s
+ (i32.and
+ (i32.shr_s
+ (i32.shl
+ (i32.add
+ (local.get $1)
+ (i32.const -1)
+ )
+ (i32.const 24)
+ )
+ (i32.const 24)
+ )
+ (i32.const 255)
+ )
+ (i32.const 3)
+ )
+ (i32.ne
+ (local.tee $1
+ (i32.const 0)
+ )
+ (i32.const 0)
+ )
+ )
+ )
+ (return
+ (local.get $0)
+ )
+ )
+ (return
+ (local.get $1)
+ )
+ )
+ (func $invalidate-conditionalizeExpensiveOnBitwise-ok (param $0 i32) (param $1 i32) (result i32)
+ (if
+ (i32.eqz
+ (if (result i32)
+ (local.tee $1
+ (i32.const 0)
+ )
+ (i32.lt_s
+ (i32.and
+ (i32.shr_s
+ (i32.shl
+ (i32.add
+ (local.get $0)
+ (i32.const -1)
+ )
+ (i32.const 24)
+ )
+ (i32.const 24)
+ )
+ (i32.const 255)
+ )
+ (i32.const 3)
+ )
+ (i32.const 0)
+ )
+ )
+ (return
+ (local.get $0)
+ )
+ )
+ (return
+ (local.get $1)
+ )
+ )
+ (func $conditionalize-if-type-change (result f64)
+ (local $0 i32)
+ (drop
+ (loop $label$1 (result f32)
+ (block $label$2 (result f32)
+ (drop
+ (block $label$3 (result f32)
+ (br_if $label$1
+ (i32.or
+ (f32.gt
+ (br_if $label$3
+ (f32.const 1)
+ (local.get $0)
+ )
+ (br $label$2
+ (f32.const 71)
+ )
+ )
+ (i64.eqz
+ (select
+ (i64.const 58)
+ (i64.const -982757)
+ (i64.eqz
+ (i64.const 0)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (f32.const 1)
+ )
+ )
+ )
+ (f64.const -nan:0xfffffffffffff)
+ )
+ (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32)
+ (block
+ (drop
+ (local.get $dst)
+ )
+ (drop
+ (local.get $dst)
+ )
+ )
+ (block
+ (drop
+ (local.get $dst)
+ )
+ (drop
+ (local.get $src)
+ )
+ )
+ )
+)