summaryrefslogtreecommitdiff
path: root/test/min.fromasm.clamp.no-opts
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2017-03-07 13:56:35 -0800
committerGitHub <noreply@github.com>2017-03-07 13:56:35 -0800
commit71804e2bfd1ba49b7dd4ce82b6ad26ba13f1bca8 (patch)
tree7a91f560708b5017cf795850db94267f2cb58f62 /test/min.fromasm.clamp.no-opts
parenta452f92aeb96e9617a20146503720cd5acb64f29 (diff)
downloadbinaryen-71804e2bfd1ba49b7dd4ce82b6ad26ba13f1bca8.tar.gz
binaryen-71804e2bfd1ba49b7dd4ce82b6ad26ba13f1bca8.tar.bz2
binaryen-71804e2bfd1ba49b7dd4ce82b6ad26ba13f1bca8.zip
Use 3 modes for potentially trapping ops in asm2wasm (#929)
* use 3 modes for potentially trapping ops in asm2wasm: allow (just emit a potentially trapping op), js (do exactly what js does, even if it takes a slow ffi to do it), and clamp (avoid the trap by clamping as necessary)
Diffstat (limited to 'test/min.fromasm.clamp.no-opts')
-rw-r--r--test/min.fromasm.clamp.no-opts101
1 files changed, 101 insertions, 0 deletions
diff --git a/test/min.fromasm.clamp.no-opts b/test/min.fromasm.clamp.no-opts
new file mode 100644
index 000000000..6e8a1c9ea
--- /dev/null
+++ b/test/min.fromasm.clamp.no-opts
@@ -0,0 +1,101 @@
+(module
+ (import "env" "tempDoublePtr" (global $tDP$asm2wasm$import i32))
+ (import "env" "memory" (memory $0 256 256))
+ (import "env" "table" (table 0 0 anyfunc))
+ (import "env" "memoryBase" (global $memoryBase i32))
+ (import "env" "tableBase" (global $tableBase i32))
+ (global $tDP (mut i32) (get_global $tDP$asm2wasm$import))
+ (global $M (mut i32) (i32.const 0))
+ (export "floats" (func $legalstub$floats))
+ (export "getTempRet0" (func $ub))
+ (export "neg" (func $legalstub$neg))
+ (export "bitcasts" (func $legalstub$bitcasts))
+ (export "ctzzzz" (func $ctzzzz))
+ (func $floats (param $f f32) (result f32)
+ (local $t f32)
+ (return
+ (f32.add
+ (get_local $t)
+ (get_local $f)
+ )
+ )
+ )
+ (func $neg (param $k i32) (param $p i32) (result f32)
+ (local $n f32)
+ (set_local $n
+ (f32.neg
+ (block f32
+ (i32.store
+ (get_local $k)
+ (get_local $p)
+ )
+ (f32.load
+ (get_local $k)
+ )
+ )
+ )
+ )
+ (return
+ (get_local $n)
+ )
+ )
+ (func $bitcasts (param $i i32) (param $f f32)
+ (drop
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (get_local $f)
+ )
+ )
+ )
+ (func $ctzzzz (result i32)
+ (return
+ (i32.ctz
+ (i32.const 4660)
+ )
+ )
+ )
+ (func $ub (result i32)
+ (drop
+ (call $ub)
+ )
+ (return
+ (get_global $M)
+ )
+ )
+ (func $legalstub$floats (param $0 f64) (result f64)
+ (f64.promote/f32
+ (call $floats
+ (f32.demote/f64
+ (get_local $0)
+ )
+ )
+ )
+ )
+ (func $legalstub$neg (param $0 i32) (param $1 i32) (result f64)
+ (f64.promote/f32
+ (call $neg
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ )
+ (func $legalstub$bitcasts (param $0 i32) (param $1 f64)
+ (call $bitcasts
+ (get_local $0)
+ (f32.demote/f64
+ (get_local $1)
+ )
+ )
+ )
+)