Skip to content

Commit 4c32ea0

Browse files
committed
Fix printf type for int64_t in block_type fatal
1 parent 83f95ba commit 4c32ea0

File tree

10 files changed

+1326
-1
lines changed

10 files changed

+1326
-1
lines changed

src/Interpreter/test.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include "stdlib.h"
2+
#include <stdio.h>
3+
#include <string.h>
4+
5+
typedef struct StackValue {
6+
uint8_t value_type;
7+
union {
8+
uint32_t uint32;
9+
int32_t int32;
10+
uint64_t uint64;
11+
int64_t int64;
12+
float f32;
13+
double f64;
14+
} value;
15+
} StackValue;
16+
17+
int main() {
18+
StackValue sv;
19+
memset(&sv, 0xAA, sizeof(StackValue));
20+
sv.value_type = 0x42;
21+
sv.value= {0};
22+
23+
uint8_t *bytes = (uint8_t *)&sv;
24+
for (size_t i = 0; i < sizeof(StackValue); i++) {
25+
printf("%02x ", bytes[i]);
26+
}
27+
printf("\n");
28+
29+
return 0;
30+
}

src/WARDuino/WARDuino.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Type *get_block_type(Module *m, uint8_t type) {
9797
} else {
9898
if ((uint32_t)type_s >= m->type_count) {
9999
FATAL("block_type index out of bounds: %lld >= %u\n",
100-
(long long)type_s, m->type_count);
100+
(long long)type_s, (unsigned long)m->type_count);
101101
return nullptr;
102102
}
103103
return &m->types[type_s];

tests/latch/core/conversions.asserts.wast

Lines changed: 445 additions & 0 deletions
Large diffs are not rendered by default.

tests/latch/core/conversions.wast

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
(module
2+
(func (export "i64.extend_i32_s") (param $x i32) (result i64) (i64.extend_i32_s (local.get $x)))
3+
(func (export "i64.extend_i32_u") (param $x i32) (result i64) (i64.extend_i32_u (local.get $x)))
4+
(func (export "i32.wrap_i64") (param $x i64) (result i32) (i32.wrap_i64 (local.get $x)))
5+
(func (export "i32.trunc_f32_s") (param $x f32) (result i32) (i32.trunc_f32_s (local.get $x)))
6+
(func (export "i32.trunc_f32_u") (param $x f32) (result i32) (i32.trunc_f32_u (local.get $x)))
7+
(func (export "i32.trunc_f64_s") (param $x f64) (result i32) (i32.trunc_f64_s (local.get $x)))
8+
(func (export "i32.trunc_f64_u") (param $x f64) (result i32) (i32.trunc_f64_u (local.get $x)))
9+
(func (export "i64.trunc_f32_s") (param $x f32) (result i64) (i64.trunc_f32_s (local.get $x)))
10+
(func (export "i64.trunc_f32_u") (param $x f32) (result i64) (i64.trunc_f32_u (local.get $x)))
11+
(func (export "i64.trunc_f64_s") (param $x f64) (result i64) (i64.trunc_f64_s (local.get $x)))
12+
(func (export "i64.trunc_f64_u") (param $x f64) (result i64) (i64.trunc_f64_u (local.get $x)))
13+
(func (export "f32.convert_i32_s") (param $x i32) (result f32) (f32.convert_i32_s (local.get $x)))
14+
(func (export "f32.convert_i64_s") (param $x i64) (result f32) (f32.convert_i64_s (local.get $x)))
15+
(func (export "f64.convert_i32_s") (param $x i32) (result f64) (f64.convert_i32_s (local.get $x)))
16+
(func (export "f64.convert_i64_s") (param $x i64) (result f64) (f64.convert_i64_s (local.get $x)))
17+
(func (export "f32.convert_i32_u") (param $x i32) (result f32) (f32.convert_i32_u (local.get $x)))
18+
(func (export "f32.convert_i64_u") (param $x i64) (result f32) (f32.convert_i64_u (local.get $x)))
19+
(func (export "f64.convert_i32_u") (param $x i32) (result f64) (f64.convert_i32_u (local.get $x)))
20+
(func (export "f64.convert_i64_u") (param $x i64) (result f64) (f64.convert_i64_u (local.get $x)))
21+
(func (export "f64.promote_f32") (param $x f32) (result f64) (f64.promote_f32 (local.get $x)))
22+
(func (export "f32.demote_f64") (param $x f64) (result f32) (f32.demote_f64 (local.get $x)))
23+
(func (export "f32.reinterpret_i32") (param $x i32) (result f32) (f32.reinterpret_i32 (local.get $x)))
24+
(func (export "f64.reinterpret_i64") (param $x i64) (result f64) (f64.reinterpret_i64 (local.get $x)))
25+
(func (export "i32.reinterpret_f32") (param $x f32) (result i32) (i32.reinterpret_f32 (local.get $x)))
26+
(func (export "i64.reinterpret_f64") (param $x f64) (result i64) (i64.reinterpret_f64 (local.get $x)))
27+
)
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
(module
2+
(import "env" "print_string" (func $print.string (param i32 i32)))
3+
(import "env" "print_int" (func $print.int (param i32)))
4+
5+
(func (export "i64.extend_i32_s") (param $x i32) (result i64) (i64.extend_i32_s (local.get $x)))
6+
(func (export "i64.extend_i32_u") (param $x i32) (result i64) (i64.extend_i32_u (local.get $x)))
7+
(func (export "i32.wrap_i64") (param $x i64) (result i32) (i32.wrap_i64 (local.get $x)))
8+
(func (export "i32.trunc_f32_s") (param $x f32) (result i32) (i32.trunc_f32_s (local.get $x)))
9+
(func (export "i32.trunc_f32_u") (param $x f32) (result i32) (i32.trunc_f32_u (local.get $x)))
10+
(func (export "i32.trunc_f64_s") (param $x f64) (result i32) (i32.trunc_f64_s (local.get $x)))
11+
(func (export "i32.trunc_f64_u") (param $x f64) (result i32) (i32.trunc_f64_u (local.get $x)))
12+
(func (export "i64.trunc_f32_s") (param $x f32) (result i64) (i64.trunc_f32_s (local.get $x)))
13+
(func (export "i64.trunc_f32_u") (param $x f32) (result i64) (i64.trunc_f32_u (local.get $x)))
14+
(func (export "i64.trunc_f64_s") (param $x f64) (result i64) (i64.trunc_f64_s (local.get $x)))
15+
(func (export "i64.trunc_f64_u") (param $x f64) (result i64) (i64.trunc_f64_u (local.get $x)))
16+
(func (export "f32.convert_i32_s") (param $x i32) (result f32) (f32.convert_i32_s (local.get $x)))
17+
(func (export "f32.convert_i64_s") (param $x i64) (result f32) (f32.convert_i64_s (local.get $x)))
18+
(func (export "f64.convert_i32_s") (param $x i32) (result f64) (f64.convert_i32_s (local.get $x)))
19+
(func (export "f64.convert_i64_s") (param $x i64) (result f64) (f64.convert_i64_s (local.get $x)))
20+
(func (export "f32.convert_i32_u") (param $x i32) (result f32) (f32.convert_i32_u (local.get $x)))
21+
(func (export "f32.convert_i64_u") (param $x i64) (result f32) (f32.convert_i64_u (local.get $x)))
22+
(func (export "f64.convert_i32_u") (param $x i32) (result f64) (f64.convert_i32_u (local.get $x)))
23+
(func (export "f64.convert_i64_u") (param $x i64) (result f64) (f64.convert_i64_u (local.get $x)))
24+
(func (export "f64.promote_f32") (param $x f32) (result f64) (f64.promote_f32 (local.get $x)))
25+
(func (export "f32.demote_f64") (param $x f64) (result f32) (f32.demote_f64 (local.get $x)))
26+
(func (export "f32.reinterpret_i32") (param $x i32) (result f32) (f32.reinterpret_i32 (local.get $x)))
27+
(func (export "f64.reinterpret_i64") (param $x i64) (result f64) (f64.reinterpret_i64 (local.get $x)))
28+
(func (export "i32.reinterpret_f32") (param $x f32) (result i32) (i32.reinterpret_f32 (local.get $x)))
29+
(func (export "i64.reinterpret_f64") (param $x f64) (result i64) (i64.reinterpret_f64 (local.get $x)))
30+
31+
(func $i64.print_equal (param $actual i64) (param $expected i64)
32+
(call $print.int (i64.eq (local.get $actual) (local.get $expected)))
33+
)
34+
35+
(func (export "main")
36+
;; test all
37+
;; FAIL ((invoke "f32.convert_i64_s" (i64.const 0x7fffff4000000001)) (f32.const 0x1.fffffep+62))
38+
;; failure: Expected 9223371487098962000 got 0
39+
;; FAIL ((invoke "f32.convert_i64_s" (i64.const 0x8000004000000001)) (f32.const -0x1.fffffep+62))
40+
;; failure: Expected -9223371487098962000 got 0
41+
;; FAIL ((invoke "f32.convert_i64_s" (i64.const 0x0020000020000001)) (f32.const 0x1.000002p+53))
42+
;; failure: Expected 9007200328482816 got 536870912
43+
;; FAIL ((invoke "f32.convert_i64_s" (i64.const 0xffdfffffdfffffff)) (f32.const -0x1.000002p+53))
44+
;; failure: Expected -9007200328482816 got -536870912
45+
46+
;; test the failing cases
47+
;; (i64.reinterpret_f64 (f64.const -nan:0x4000000000000))
48+
;; (i64.const 0xfff4000000000000)
49+
;; (i64.eq)
50+
;; (call $print.int)
51+
52+
53+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const 0)) (i64.const 0))
54+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const 10000)) (i64.const 10000))
55+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const -10000)) (i64.const -10000))
56+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const -1)) (i64.const -1))
57+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff))
58+
;; (assert_return (invoke "i64.extend_i32_s" (i32.const 0x80000000)) (i64.const 0xffffffff80000000))
59+
60+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const 0)) (i64.const 0))
61+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const 10000)) (i64.const 10000))
62+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const -10000)) (i64.const 0x00000000ffffd8f0))
63+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const -1)) (i64.const 0xffffffff))
64+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff))
65+
;; (assert_return (invoke "i64.extend_i32_u" (i32.const 0x80000000)) (i64.const 0x0000000080000000))
66+
67+
;; tests for i64
68+
;; (assert_return (invoke "extend8_s" (i64.const 0)) (i64.const 0))
69+
;; (assert_return (invoke "extend8_s" (i64.const 0x7f)) (i64.const 127))
70+
;; (assert_return (invoke "extend8_s" (i64.const 0x80)) (i64.const -128))
71+
;; (assert_return (invoke "extend8_s" (i64.const 0xff)) (i64.const -1))
72+
;; (assert_return (invoke "extend8_s" (i64.const 0x01234567_89abcd_00)) (i64.const 0))
73+
;; (assert_return (invoke "extend8_s" (i64.const 0xfedcba98_765432_80)) (i64.const -0x80))
74+
;; (assert_return (invoke "extend8_s" (i64.const -1)) (i64.const -1))
75+
76+
;; (assert_return (invoke "extend16_s" (i64.const 0)) (i64.const 0))
77+
;; (assert_return (invoke "extend16_s" (i64.const 0x7fff)) (i64.const 32767))
78+
;; (assert_return (invoke "extend16_s" (i64.const 0x8000)) (i64.const -32768))
79+
;; (assert_return (invoke "extend16_s" (i64.const 0xffff)) (i64.const -1))
80+
;; (assert_return (invoke "extend16_s" (i64.const 0x12345678_9abc_0000)) (i64.const 0))
81+
;; (assert_return (invoke "extend16_s" (i64.const 0xfedcba98_7654_8000)) (i64.const -0x8000))
82+
;; (assert_return (invoke "extend16_s" (i64.const -1)) (i64.const -1))
83+
84+
;; (assert_return (invoke "extend32_s" (i64.const 0)) (i64.const 0))
85+
;; (assert_return (invoke "extend32_s" (i64.const 0x7fff)) (i64.const 32767))
86+
;; (assert_return (invoke "extend32_s" (i64.const 0x8000)) (i64.const 32768))
87+
;; (assert_return (invoke "extend32_s" (i64.const 0xffff)) (i64.const 65535))
88+
;; (assert_return (invoke "extend32_s" (i64.const 0x7fffffff)) (i64.const 0x7fffffff))
89+
;; (assert_return (invoke "extend32_s" (i64.const 0x80000000)) (i64.const -0x80000000))
90+
;; (assert_return (invoke "extend32_s" (i64.const 0xffffffff)) (i64.const -1))
91+
;; (assert_return (invoke "extend32_s" (i64.const 0x01234567_00000000)) (i64.const 0))
92+
;; (assert_return (invoke "extend32_s" (i64.const 0xfedcba98_80000000)) (i64.const -0x80000000))
93+
;; (assert_return (invoke "extend32_s" (i64.const -1)) (i64.const -1))
94+
95+
(call $i64.print_equal
96+
(i64.extend8_s (i64.const 0))
97+
(i64.const 0)
98+
)
99+
100+
(call $i64.print_equal
101+
(i64.extend8_s (i64.const 0x7f))
102+
(i64.const 127)
103+
)
104+
105+
(call $i64.print_equal
106+
(i64.extend8_s (i64.const 0x80))
107+
(i64.const -128)
108+
)
109+
110+
(call $i64.print_equal
111+
(i64.extend8_s (i64.const 0xff))
112+
(i64.const -1)
113+
)
114+
115+
(call $i64.print_equal
116+
(i64.extend8_s (i64.const 0x0123456789abcd00))
117+
(i64.const 0)
118+
)
119+
120+
(call $i64.print_equal
121+
(i64.extend8_s (i64.const 0xfedcba9876543280))
122+
(i64.const -0x80)
123+
)
124+
125+
(call $i64.print_equal
126+
(i64.extend8_s (i64.const -1))
127+
(i64.const -1)
128+
)
129+
130+
(call $i64.print_equal
131+
(i64.extend16_s (i64.const 0))
132+
(i64.const 0)
133+
)
134+
135+
(call $i64.print_equal
136+
(i64.extend16_s (i64.const 0x7fff))
137+
(i64.const 32767)
138+
)
139+
140+
(call $i64.print_equal
141+
(i64.extend16_s (i64.const 0x8000))
142+
(i64.const -32768)
143+
)
144+
145+
(call $i64.print_equal
146+
(i64.extend16_s (i64.const 0xffff))
147+
(i64.const -1)
148+
)
149+
150+
(call $i64.print_equal
151+
(i64.extend16_s (i64.const 0x123456789abc0000))
152+
(i64.const 0)
153+
)
154+
155+
(call $i64.print_equal
156+
(i64.extend16_s (i64.const 0xfedcba9876548000))
157+
(i64.const -0x8000)
158+
)
159+
160+
(call $i64.print_equal
161+
(i64.extend16_s (i64.const -1))
162+
(i64.const -1)
163+
)
164+
165+
(call $i64.print_equal
166+
(i64.extend32_s (i64.const 0))
167+
(i64.const 0)
168+
)
169+
170+
(call $i64.print_equal
171+
(i64.extend32_s (i64.const 0x7fff))
172+
(i64.const 32767)
173+
)
174+
175+
(call $i64.print_equal
176+
(i64.extend32_s (i64.const 0x8000))
177+
(i64.const 32768)
178+
)
179+
180+
(call $i64.print_equal
181+
(i64.extend32_s (i64.const 0xffff))
182+
(i64.const 65535)
183+
)
184+
185+
(call $i64.print_equal
186+
(i64.extend32_s (i64.const 0x7fffffff))
187+
(i64.const 0x7fffffff)
188+
)
189+
190+
(call $i64.print_equal
191+
(i64.extend32_s (i64.const 0x80000000))
192+
(i64.const -0x80000000)
193+
)
194+
195+
(call $i64.print_equal
196+
(i64.extend32_s (i64.const 0xffffffff))
197+
(i64.const -1)
198+
)
199+
200+
(call $i64.print_equal
201+
(i64.extend32_s (i64.const 0x0123456700000000))
202+
(i64.const 0)
203+
)
204+
205+
(call $i64.print_equal
206+
(i64.extend32_s (i64.const 0xfedcba9880000000))
207+
(i64.const -0x80000000)
208+
)
209+
210+
(call $i64.print_equal
211+
(i64.extend32_s (i64.const -1))
212+
(i64.const -1)
213+
)
214+
)
215+
216+
)

tutorials/wat/main/mut.wat

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
(module
2+
3+
(import "env" "print_string" (func $print.string (param i32 i32)))
4+
(import "env" "print_int" (func $print.int (param i32)))
5+
;; (import "env" "read_global" (func $read.global))
6+
(import "env" "test_global" (global $imported_mut_global (mut i32)))
7+
8+
(global $a i32 (i32.const -2))
9+
(global (;1;) f32 (f32.const -3))
10+
(global (;2;) f64 (f64.const -4))
11+
(global $b i64 (i64.const -5))
12+
13+
;; (global $x (mut i32) (i32.const -12))
14+
;; (global (;5;) (mut f32) (f32.const -13))
15+
;; (global (;6;) (mut f64) (f64.const -14))
16+
;; (global $y (mut i64) (i64.const -15))
17+
18+
;; ;; exporting mutable global
19+
;; (global $mut_global (mut i32) (i32.const 42))
20+
;; (global $float_global f64 (f64.const -3.14))
21+
;; (global $another_global (mut f32) (f32.const -2.71))
22+
;; (export "mut_global" (global $mut_global))
23+
24+
;; (memory $mem 1)
25+
;; (export "memory" (memory $mem))
26+
27+
;; (data (i32.const 0) "Value: ")
28+
29+
;; Export some global state (initialized to 20)
30+
;; (global $some_other_state (mut i32) (i32.const 20))
31+
;; (export "some_other_state" (global $some_other_state))
32+
33+
;; (global $a i32 (i32.const -2))
34+
35+
;; (func $get2 (export "get-2") (result f64) (global.get 3))
36+
37+
(func $swap (param i32 i32) (result i32 i32)
38+
(local.get 1) (local.get 0))
39+
40+
(func $main (export "main")
41+
;; (local $a i32)
42+
43+
;; (call $print.string (i32.const 0) (i32.const 7))
44+
;; (call $print.int (global.get $some_other_state))
45+
46+
;; (global.set $a (i32.const 50))
47+
48+
49+
;; Print exported mutable global value
50+
;; (call $print.string (i32.const 0) (i32.const 22))
51+
;; (call $print.int (global.get $mut_global))
52+
53+
;; ;; Modify exported mutable global value
54+
;; (global.set $mut_global (i32.const 100))
55+
56+
;; ;; Print modified exported mutable global value
57+
;; (call $print.string (i32.const 0) (i32.const 22))
58+
;; (call $print.int (global.get $mut_global))
59+
60+
;; ;; Print imported mutable global value
61+
;; (call $print.string (i32.const 0) (i32.const 22))
62+
;; (call $print.int (global.get $imported_mut_global))
63+
64+
;; ;; Modify imported mutable global value
65+
;; (global.set $imported_mut_global (i32.const 200))
66+
67+
;; (call $read.global)
68+
;; ;; Print modified imported mutable global value
69+
;; (call $print.string (i32.const 0) (i32.const 22))
70+
;; (call $print.int (global.get $imported_mut_global))
71+
72+
;; (call $get2)
73+
74+
75+
76+
)
77+
)

0 commit comments

Comments
 (0)