From c558c1d9b043691b9901e29cfffe3d87e94c6a4a Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 29 Mar 2019 10:58:26 +0100 Subject: [PATCH] wasm64 asserts --- tests/compiler/wasi.ts | 25 ++- tests/compiler/wasi.untouched.wat | 351 +++++++++++++++--------------- 2 files changed, 199 insertions(+), 177 deletions(-) diff --git a/tests/compiler/wasi.ts b/tests/compiler/wasi.ts index 05e35485..cd42168f 100644 --- a/tests/compiler/wasi.ts +++ b/tests/compiler/wasi.ts @@ -1,6 +1,7 @@ import { dirent, rwevent, fdstat, filestat, iovec, clocksubscription, fdsubscription, signal, dirprestat } from "bindings/wasi"; -// TODO: WASM64 +const WASM32 = 1; +const WASM64 = 2; assert(offsetof("next") == 0); assert(offsetof("ino") == 8); @@ -32,8 +33,15 @@ assert(offsetof("ctim") == 48); assert(offsetof() == 56); assert(offsetof("buf") == 0); -assert(offsetof("buf_len") == 4); -assert(offsetof() == 8); +if (ASC_TARGET == WASM32) { + assert(offsetof("buf_len") == 4); + assert(offsetof() == 8); +} else if (ASC_TARGET == WASM64) { + assert(offsetof("buf_len") == 8); + assert(offsetof() == 16); +} else { + assert(false); +} assert(offsetof("userdata") == 0); assert(offsetof("type") == 8); @@ -50,8 +58,15 @@ assert(offsetof("fd") == 16); assert(offsetof() == 20); assert(offsetof("type") == 0); -assert(offsetof("name_len") == 4); -assert(offsetof() == 8); +if (ASC_TARGET == WASM32) { + assert(offsetof("name_len") == 4); + assert(offsetof() == 8); +} else if (ASC_TARGET == WASM64) { + assert(offsetof("name_len") == 8); + assert(offsetof() == 16); +} else { + assert(false); +} // check assignability of mimicked typed enums var sig: signal = signal.HUP; diff --git a/tests/compiler/wasi.untouched.wat b/tests/compiler/wasi.untouched.wat index c8b4ea00..b71b5b77 100644 --- a/tests/compiler/wasi.untouched.wat +++ b/tests/compiler/wasi.untouched.wat @@ -6,6 +6,9 @@ (data (i32.const 8) "\07\00\00\00w\00a\00s\00i\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $wasi/WASM32 i32 (i32.const 1)) + (global $wasi/WASM64 i32 (i32.const 2)) + (global $~lib/ASC_TARGET i32 (i32.const 0)) (global $wasi/sig (mut i32) (i32.const 1)) (global $~lib/memory/HEAP_BASE i32 (i32.const 28)) (export "memory" (memory $0)) @@ -16,18 +19,6 @@ i32.const 0 i32.eq i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 5 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 8 - i32.const 8 - i32.eq - i32.eqz if i32.const 0 i32.const 8 @@ -36,8 +27,8 @@ call $~lib/env/abort unreachable end - i32.const 16 - i32.const 16 + i32.const 8 + i32.const 8 i32.eq i32.eqz if @@ -48,8 +39,8 @@ call $~lib/env/abort unreachable end - i32.const 20 - i32.const 20 + i32.const 16 + i32.const 16 i32.eq i32.eqz if @@ -60,8 +51,8 @@ call $~lib/env/abort unreachable end - i32.const 24 - i32.const 24 + i32.const 20 + i32.const 20 i32.eq i32.eqz if @@ -72,20 +63,20 @@ call $~lib/env/abort unreachable end - i32.const 0 - i32.const 0 + i32.const 24 + i32.const 24 i32.eq i32.eqz if i32.const 0 i32.const 8 - i32.const 11 + i32.const 10 i32.const 0 call $~lib/env/abort unreachable end - i32.const 8 - i32.const 8 + i32.const 0 + i32.const 0 i32.eq i32.eqz if @@ -96,8 +87,8 @@ call $~lib/env/abort unreachable end - i32.const 10 - i32.const 10 + i32.const 8 + i32.const 8 i32.eq i32.eqz if @@ -108,8 +99,8 @@ call $~lib/env/abort unreachable end - i32.const 16 - i32.const 16 + i32.const 10 + i32.const 10 i32.eq i32.eqz if @@ -120,8 +111,8 @@ call $~lib/env/abort unreachable end - i32.const 24 - i32.const 24 + i32.const 16 + i32.const 16 i32.eq i32.eqz if @@ -132,8 +123,8 @@ call $~lib/env/abort unreachable end - i32.const 32 - i32.const 32 + i32.const 24 + i32.const 24 i32.eq i32.eqz if @@ -144,20 +135,20 @@ call $~lib/env/abort unreachable end - i32.const 0 - i32.const 0 + i32.const 32 + i32.const 32 i32.eq i32.eqz if i32.const 0 i32.const 8 - i32.const 18 + i32.const 17 i32.const 0 call $~lib/env/abort unreachable end - i32.const 2 - i32.const 2 + i32.const 0 + i32.const 0 i32.eq i32.eqz if @@ -168,8 +159,8 @@ call $~lib/env/abort unreachable end - i32.const 8 - i32.const 8 + i32.const 2 + i32.const 2 i32.eq i32.eqz if @@ -180,8 +171,8 @@ call $~lib/env/abort unreachable end - i32.const 16 - i32.const 16 + i32.const 8 + i32.const 8 i32.eq i32.eqz if @@ -192,8 +183,8 @@ call $~lib/env/abort unreachable end - i32.const 24 - i32.const 24 + i32.const 16 + i32.const 16 i32.eq i32.eqz if @@ -204,20 +195,20 @@ call $~lib/env/abort unreachable end - i32.const 0 - i32.const 0 + i32.const 24 + i32.const 24 i32.eq i32.eqz if i32.const 0 i32.const 8 - i32.const 24 + i32.const 23 i32.const 0 call $~lib/env/abort unreachable end - i32.const 8 - i32.const 8 + i32.const 0 + i32.const 0 i32.eq i32.eqz if @@ -228,8 +219,8 @@ call $~lib/env/abort unreachable end - i32.const 16 - i32.const 16 + i32.const 8 + i32.const 8 i32.eq i32.eqz if @@ -240,8 +231,8 @@ call $~lib/env/abort unreachable end - i32.const 20 - i32.const 20 + i32.const 16 + i32.const 16 i32.eq i32.eqz if @@ -252,8 +243,8 @@ call $~lib/env/abort unreachable end - i32.const 24 - i32.const 24 + i32.const 20 + i32.const 20 i32.eq i32.eqz if @@ -264,8 +255,8 @@ call $~lib/env/abort unreachable end - i32.const 32 - i32.const 32 + i32.const 24 + i32.const 24 i32.eq i32.eqz if @@ -276,8 +267,8 @@ call $~lib/env/abort unreachable end - i32.const 40 - i32.const 40 + i32.const 32 + i32.const 32 i32.eq i32.eqz if @@ -288,8 +279,8 @@ call $~lib/env/abort unreachable end - i32.const 48 - i32.const 48 + i32.const 40 + i32.const 40 i32.eq i32.eqz if @@ -300,8 +291,8 @@ call $~lib/env/abort unreachable end - i32.const 56 - i32.const 56 + i32.const 48 + i32.const 48 i32.eq i32.eqz if @@ -312,20 +303,20 @@ call $~lib/env/abort unreachable end - i32.const 0 - i32.const 0 + i32.const 56 + i32.const 56 i32.eq i32.eqz if i32.const 0 i32.const 8 - i32.const 34 + i32.const 33 i32.const 0 call $~lib/env/abort unreachable end - i32.const 4 - i32.const 4 + i32.const 0 + i32.const 0 i32.eq i32.eqz if @@ -336,17 +327,31 @@ call $~lib/env/abort unreachable end - i32.const 8 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 + block + i32.const 4 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 37 + i32.const 2 + call $~lib/env/abort + unreachable + end i32.const 8 - i32.const 36 - i32.const 0 - call $~lib/env/abort - unreachable + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 38 + i32.const 2 + call $~lib/env/abort + unreachable + end end i32.const 0 i32.const 0 @@ -355,7 +360,7 @@ if i32.const 0 i32.const 8 - i32.const 38 + i32.const 46 i32.const 0 call $~lib/env/abort unreachable @@ -364,90 +369,6 @@ i32.const 8 i32.eq i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 39 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 16 - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 40 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 24 - i32.const 24 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 41 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 32 - i32.const 32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 42 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 40 - i32.const 40 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 43 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 48 - i32.const 48 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 44 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 56 - i32.const 56 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 8 - i32.const 45 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 8 @@ -456,8 +377,8 @@ call $~lib/env/abort unreachable end - i32.const 8 - i32.const 8 + i32.const 16 + i32.const 16 i32.eq i32.eqz if @@ -468,8 +389,8 @@ call $~lib/env/abort unreachable end - i32.const 16 - i32.const 16 + i32.const 24 + i32.const 24 i32.eq i32.eqz if @@ -480,8 +401,8 @@ call $~lib/env/abort unreachable end - i32.const 20 - i32.const 20 + i32.const 32 + i32.const 32 i32.eq i32.eqz if @@ -492,8 +413,20 @@ call $~lib/env/abort unreachable end - i32.const 0 - i32.const 0 + i32.const 40 + i32.const 40 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 51 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 48 + i32.const 48 i32.eq i32.eqz if @@ -504,8 +437,8 @@ call $~lib/env/abort unreachable end - i32.const 4 - i32.const 4 + i32.const 56 + i32.const 56 i32.eq i32.eqz if @@ -516,6 +449,18 @@ call $~lib/env/abort unreachable end + i32.const 0 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 55 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 8 i32.const 8 i32.eq @@ -523,11 +468,73 @@ if i32.const 0 i32.const 8 - i32.const 54 + i32.const 56 i32.const 0 call $~lib/env/abort unreachable end + i32.const 16 + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 57 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 20 + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 58 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 60 + i32.const 0 + call $~lib/env/abort + unreachable + end + block + i32.const 4 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 62 + i32.const 2 + call $~lib/env/abort + unreachable + end + i32.const 8 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 8 + i32.const 63 + i32.const 2 + call $~lib/env/abort + unreachable + end + end i32.const 9 global.set $wasi/sig )