@grain/stdlib 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/LICENSE +1 -1
- package/array.gr +92 -73
- package/array.md +18 -18
- package/bigint.gr +497 -0
- package/bigint.md +811 -0
- package/buffer.gr +56 -217
- package/buffer.md +24 -17
- package/bytes.gr +103 -205
- package/bytes.md +19 -0
- package/char.gr +152 -166
- package/char.md +200 -0
- package/exception.md +6 -0
- package/float32.gr +159 -82
- package/float32.md +315 -0
- package/float64.gr +163 -82
- package/float64.md +315 -0
- package/hash.gr +53 -49
- package/int32.gr +479 -230
- package/int32.md +937 -0
- package/int64.gr +479 -230
- package/int64.md +937 -0
- package/list.gr +530 -116
- package/list.md +1141 -0
- package/map.gr +302 -121
- package/map.md +525 -0
- package/number.gr +51 -57
- package/number.md +37 -3
- package/option.gr +25 -25
- package/option.md +1 -1
- package/package.json +3 -3
- package/pervasives.gr +504 -52
- package/pervasives.md +1116 -0
- package/queue.gr +8 -1
- package/queue.md +10 -0
- package/random.gr +196 -0
- package/random.md +179 -0
- package/range.gr +26 -26
- package/regex.gr +1833 -842
- package/regex.md +11 -11
- package/result.md +1 -1
- package/runtime/bigint.gr +2045 -0
- package/runtime/bigint.md +326 -0
- package/runtime/dataStructures.gr +99 -279
- package/runtime/dataStructures.md +391 -0
- package/runtime/debug.gr +0 -1
- package/runtime/debug.md +6 -0
- package/runtime/equal.gr +40 -37
- package/runtime/equal.md +6 -0
- package/runtime/exception.gr +28 -15
- package/runtime/exception.md +30 -0
- package/runtime/gc.gr +50 -20
- package/runtime/gc.md +36 -0
- package/runtime/malloc.gr +32 -22
- package/runtime/malloc.md +55 -0
- package/runtime/numberUtils.gr +297 -142
- package/runtime/numberUtils.md +54 -0
- package/runtime/numbers.gr +1204 -453
- package/runtime/numbers.md +300 -0
- package/runtime/string.gr +193 -228
- package/runtime/string.md +24 -0
- package/runtime/stringUtils.gr +62 -38
- package/runtime/stringUtils.md +6 -0
- package/runtime/unsafe/constants.gr +17 -0
- package/runtime/unsafe/constants.md +72 -0
- package/runtime/unsafe/conv.gr +10 -10
- package/runtime/unsafe/conv.md +71 -0
- package/runtime/unsafe/errors.md +204 -0
- package/runtime/unsafe/memory.gr +14 -3
- package/runtime/unsafe/memory.md +54 -0
- package/runtime/unsafe/printWasm.gr +4 -4
- package/runtime/unsafe/printWasm.md +24 -0
- package/runtime/unsafe/tags.gr +11 -10
- package/runtime/unsafe/tags.md +120 -0
- package/runtime/unsafe/wasmf32.gr +9 -2
- package/runtime/unsafe/wasmf32.md +168 -0
- package/runtime/unsafe/wasmf64.gr +9 -2
- package/runtime/unsafe/wasmf64.md +168 -0
- package/runtime/unsafe/wasmi32.gr +65 -47
- package/runtime/unsafe/wasmi32.md +282 -0
- package/runtime/unsafe/wasmi64.gr +78 -50
- package/runtime/unsafe/wasmi64.md +300 -0
- package/runtime/utils/printing.gr +62 -0
- package/runtime/utils/printing.md +18 -0
- package/runtime/wasi.gr +200 -46
- package/runtime/wasi.md +839 -0
- package/set.gr +125 -121
- package/set.md +24 -21
- package/stack.gr +29 -29
- package/stack.md +4 -6
- package/string.gr +434 -415
- package/string.md +3 -3
- package/sys/file.gr +477 -482
- package/sys/process.gr +33 -47
- package/sys/random.gr +48 -20
- package/sys/random.md +38 -0
- package/sys/time.gr +12 -28
|
@@ -1,58 +1,76 @@
|
|
|
1
1
|
/* grainc-flags --compilation-mode=runtime */
|
|
2
2
|
|
|
3
3
|
// WebAssembly Memory Instructions
|
|
4
|
-
export primitive load
|
|
5
|
-
export primitive load8S
|
|
6
|
-
export primitive load8U
|
|
7
|
-
export primitive load16S
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export primitive
|
|
4
|
+
export primitive load: (WasmI32, WasmI32) -> WasmI32 = "@wasm.load_int32"
|
|
5
|
+
export primitive load8S: (WasmI32, WasmI32) -> WasmI32 = "@wasm.load_8_s_int32"
|
|
6
|
+
export primitive load8U: (WasmI32, WasmI32) -> WasmI32 = "@wasm.load_8_u_int32"
|
|
7
|
+
export primitive load16S: (
|
|
8
|
+
WasmI32,
|
|
9
|
+
WasmI32,
|
|
10
|
+
) -> WasmI32 = "@wasm.load_16_s_int32"
|
|
11
|
+
export primitive load16U: (
|
|
12
|
+
WasmI32,
|
|
13
|
+
WasmI32,
|
|
14
|
+
) -> WasmI32 = "@wasm.load_16_u_int32"
|
|
15
|
+
export primitive store: (
|
|
16
|
+
WasmI32,
|
|
17
|
+
WasmI32,
|
|
18
|
+
WasmI32,
|
|
19
|
+
) -> Void = "@wasm.store_int32"
|
|
20
|
+
export primitive store8: (
|
|
21
|
+
WasmI32,
|
|
22
|
+
WasmI32,
|
|
23
|
+
WasmI32,
|
|
24
|
+
) -> Void = "@wasm.store_8_int32"
|
|
25
|
+
export primitive store16: (
|
|
26
|
+
WasmI32,
|
|
27
|
+
WasmI32,
|
|
28
|
+
WasmI32,
|
|
29
|
+
) -> Void = "@wasm.store_16_int32"
|
|
12
30
|
|
|
13
31
|
// WebAssembly Unary Instructions
|
|
14
|
-
export primitive clz
|
|
15
|
-
export primitive ctz
|
|
16
|
-
export primitive popcnt
|
|
17
|
-
export primitive eqz
|
|
32
|
+
export primitive clz: WasmI32 -> WasmI32 = "@wasm.clz_int32"
|
|
33
|
+
export primitive ctz: WasmI32 -> WasmI32 = "@wasm.ctz_int32"
|
|
34
|
+
export primitive popcnt: WasmI32 -> WasmI32 = "@wasm.popcnt_int32"
|
|
35
|
+
export primitive eqz: WasmI32 -> Bool = "@wasm.eq_z_int32"
|
|
18
36
|
|
|
19
37
|
// WebAssembly Binary Instructions
|
|
20
|
-
export primitive add
|
|
21
|
-
export primitive sub
|
|
22
|
-
export primitive mul
|
|
23
|
-
export primitive divS
|
|
24
|
-
export primitive divU
|
|
25
|
-
export primitive remS
|
|
26
|
-
export primitive remU
|
|
27
|
-
export primitive and
|
|
28
|
-
export primitive or
|
|
29
|
-
export primitive xor
|
|
30
|
-
export primitive shl
|
|
31
|
-
export primitive shrS
|
|
32
|
-
export primitive shrU
|
|
33
|
-
export primitive rotl
|
|
34
|
-
export primitive rotr
|
|
35
|
-
export primitive eq
|
|
36
|
-
export primitive ne
|
|
37
|
-
export primitive ltS
|
|
38
|
-
export primitive ltU
|
|
39
|
-
export primitive leS
|
|
40
|
-
export primitive leU
|
|
41
|
-
export primitive gtS
|
|
42
|
-
export primitive gtU
|
|
43
|
-
export primitive geS
|
|
44
|
-
export primitive geU
|
|
38
|
+
export primitive add: (WasmI32, WasmI32) -> WasmI32 = "@wasm.add_int32"
|
|
39
|
+
export primitive sub: (WasmI32, WasmI32) -> WasmI32 = "@wasm.sub_int32"
|
|
40
|
+
export primitive mul: (WasmI32, WasmI32) -> WasmI32 = "@wasm.mul_int32"
|
|
41
|
+
export primitive divS: (WasmI32, WasmI32) -> WasmI32 = "@wasm.div_s_int32"
|
|
42
|
+
export primitive divU: (WasmI32, WasmI32) -> WasmI32 = "@wasm.div_u_int32"
|
|
43
|
+
export primitive remS: (WasmI32, WasmI32) -> WasmI32 = "@wasm.rem_s_int32"
|
|
44
|
+
export primitive remU: (WasmI32, WasmI32) -> WasmI32 = "@wasm.rem_u_int32"
|
|
45
|
+
export primitive and: (WasmI32, WasmI32) -> WasmI32 = "@wasm.and_int32"
|
|
46
|
+
export primitive or: (WasmI32, WasmI32) -> WasmI32 = "@wasm.or_int32"
|
|
47
|
+
export primitive xor: (WasmI32, WasmI32) -> WasmI32 = "@wasm.xor_int32"
|
|
48
|
+
export primitive shl: (WasmI32, WasmI32) -> WasmI32 = "@wasm.shl_int32"
|
|
49
|
+
export primitive shrS: (WasmI32, WasmI32) -> WasmI32 = "@wasm.shr_s_int32"
|
|
50
|
+
export primitive shrU: (WasmI32, WasmI32) -> WasmI32 = "@wasm.shr_u_int32"
|
|
51
|
+
export primitive rotl: (WasmI32, WasmI32) -> WasmI32 = "@wasm.rot_l_int32"
|
|
52
|
+
export primitive rotr: (WasmI32, WasmI32) -> WasmI32 = "@wasm.rot_r_int32"
|
|
53
|
+
export primitive eq: (WasmI32, WasmI32) -> Bool = "@wasm.eq_int32"
|
|
54
|
+
export primitive ne: (WasmI32, WasmI32) -> Bool = "@wasm.ne_int32"
|
|
55
|
+
export primitive ltS: (WasmI32, WasmI32) -> Bool = "@wasm.lt_s_int32"
|
|
56
|
+
export primitive ltU: (WasmI32, WasmI32) -> Bool = "@wasm.lt_u_int32"
|
|
57
|
+
export primitive leS: (WasmI32, WasmI32) -> Bool = "@wasm.le_s_int32"
|
|
58
|
+
export primitive leU: (WasmI32, WasmI32) -> Bool = "@wasm.le_u_int32"
|
|
59
|
+
export primitive gtS: (WasmI32, WasmI32) -> Bool = "@wasm.gt_s_int32"
|
|
60
|
+
export primitive gtU: (WasmI32, WasmI32) -> Bool = "@wasm.gt_u_int32"
|
|
61
|
+
export primitive geS: (WasmI32, WasmI32) -> Bool = "@wasm.ge_s_int32"
|
|
62
|
+
export primitive geU: (WasmI32, WasmI32) -> Bool = "@wasm.ge_u_int32"
|
|
45
63
|
|
|
46
64
|
// WebAssembly Conversion Instructions
|
|
47
|
-
export primitive wrapI64
|
|
48
|
-
export primitive truncF32S
|
|
49
|
-
export primitive truncF32U
|
|
50
|
-
export primitive truncF64S
|
|
51
|
-
export primitive truncF64U
|
|
52
|
-
export primitive reinterpretF32
|
|
53
|
-
export primitive extendS8
|
|
54
|
-
export primitive extendS16
|
|
65
|
+
export primitive wrapI64: WasmI64 -> WasmI32 = "@wasm.wrap_int64"
|
|
66
|
+
export primitive truncF32S: WasmF32 -> WasmI32 = "@wasm.trunc_s_float32_to_int32"
|
|
67
|
+
export primitive truncF32U: WasmF32 -> WasmI32 = "@wasm.trunc_u_float32_to_int32"
|
|
68
|
+
export primitive truncF64S: WasmF64 -> WasmI32 = "@wasm.trunc_s_float64_to_int32"
|
|
69
|
+
export primitive truncF64U: WasmF64 -> WasmI32 = "@wasm.trunc_u_float64_to_int32"
|
|
70
|
+
export primitive reinterpretF32: WasmF32 -> WasmI32 = "@wasm.reinterpret_float32"
|
|
71
|
+
export primitive extendS8: WasmI32 -> WasmI32 = "@wasm.extend_s8_int32"
|
|
72
|
+
export primitive extendS16: WasmI32 -> WasmI32 = "@wasm.extend_s16_int32"
|
|
55
73
|
|
|
56
74
|
// Grain Conversions
|
|
57
|
-
export primitive fromGrain
|
|
58
|
-
export primitive toGrain
|
|
75
|
+
export primitive fromGrain: a -> WasmI32 = "@wasm.fromGrain"
|
|
76
|
+
export primitive toGrain: WasmI32 -> a = "@wasm.toGrain"
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
### Wasmi32.**load**
|
|
2
|
+
|
|
3
|
+
```grain
|
|
4
|
+
load : (WasmI32, WasmI32) -> WasmI32
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
### Wasmi32.**load8S**
|
|
8
|
+
|
|
9
|
+
```grain
|
|
10
|
+
load8S : (WasmI32, WasmI32) -> WasmI32
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Wasmi32.**load8U**
|
|
14
|
+
|
|
15
|
+
```grain
|
|
16
|
+
load8U : (WasmI32, WasmI32) -> WasmI32
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Wasmi32.**load16S**
|
|
20
|
+
|
|
21
|
+
```grain
|
|
22
|
+
load16S : (WasmI32, WasmI32) -> WasmI32
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Wasmi32.**load16U**
|
|
26
|
+
|
|
27
|
+
```grain
|
|
28
|
+
load16U : (WasmI32, WasmI32) -> WasmI32
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Wasmi32.**store**
|
|
32
|
+
|
|
33
|
+
```grain
|
|
34
|
+
store : (WasmI32, WasmI32, WasmI32) -> Void
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Wasmi32.**store8**
|
|
38
|
+
|
|
39
|
+
```grain
|
|
40
|
+
store8 : (WasmI32, WasmI32, WasmI32) -> Void
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Wasmi32.**store16**
|
|
44
|
+
|
|
45
|
+
```grain
|
|
46
|
+
store16 : (WasmI32, WasmI32, WasmI32) -> Void
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Wasmi32.**clz**
|
|
50
|
+
|
|
51
|
+
```grain
|
|
52
|
+
clz : WasmI32 -> WasmI32
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Wasmi32.**ctz**
|
|
56
|
+
|
|
57
|
+
```grain
|
|
58
|
+
ctz : WasmI32 -> WasmI32
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Wasmi32.**popcnt**
|
|
62
|
+
|
|
63
|
+
```grain
|
|
64
|
+
popcnt : WasmI32 -> WasmI32
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Wasmi32.**eqz**
|
|
68
|
+
|
|
69
|
+
```grain
|
|
70
|
+
eqz : WasmI32 -> Bool
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Wasmi32.**add**
|
|
74
|
+
|
|
75
|
+
```grain
|
|
76
|
+
add : (WasmI32, WasmI32) -> WasmI32
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Wasmi32.**sub**
|
|
80
|
+
|
|
81
|
+
```grain
|
|
82
|
+
sub : (WasmI32, WasmI32) -> WasmI32
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Wasmi32.**mul**
|
|
86
|
+
|
|
87
|
+
```grain
|
|
88
|
+
mul : (WasmI32, WasmI32) -> WasmI32
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Wasmi32.**divS**
|
|
92
|
+
|
|
93
|
+
```grain
|
|
94
|
+
divS : (WasmI32, WasmI32) -> WasmI32
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Wasmi32.**divU**
|
|
98
|
+
|
|
99
|
+
```grain
|
|
100
|
+
divU : (WasmI32, WasmI32) -> WasmI32
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Wasmi32.**remS**
|
|
104
|
+
|
|
105
|
+
```grain
|
|
106
|
+
remS : (WasmI32, WasmI32) -> WasmI32
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Wasmi32.**remU**
|
|
110
|
+
|
|
111
|
+
```grain
|
|
112
|
+
remU : (WasmI32, WasmI32) -> WasmI32
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Wasmi32.**and**
|
|
116
|
+
|
|
117
|
+
```grain
|
|
118
|
+
and : (WasmI32, WasmI32) -> WasmI32
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Wasmi32.**or**
|
|
122
|
+
|
|
123
|
+
```grain
|
|
124
|
+
or : (WasmI32, WasmI32) -> WasmI32
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Wasmi32.**xor**
|
|
128
|
+
|
|
129
|
+
```grain
|
|
130
|
+
xor : (WasmI32, WasmI32) -> WasmI32
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Wasmi32.**shl**
|
|
134
|
+
|
|
135
|
+
```grain
|
|
136
|
+
shl : (WasmI32, WasmI32) -> WasmI32
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Wasmi32.**shrS**
|
|
140
|
+
|
|
141
|
+
```grain
|
|
142
|
+
shrS : (WasmI32, WasmI32) -> WasmI32
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Wasmi32.**shrU**
|
|
146
|
+
|
|
147
|
+
```grain
|
|
148
|
+
shrU : (WasmI32, WasmI32) -> WasmI32
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Wasmi32.**rotl**
|
|
152
|
+
|
|
153
|
+
```grain
|
|
154
|
+
rotl : (WasmI32, WasmI32) -> WasmI32
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Wasmi32.**rotr**
|
|
158
|
+
|
|
159
|
+
```grain
|
|
160
|
+
rotr : (WasmI32, WasmI32) -> WasmI32
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Wasmi32.**eq**
|
|
164
|
+
|
|
165
|
+
```grain
|
|
166
|
+
eq : (WasmI32, WasmI32) -> Bool
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Wasmi32.**ne**
|
|
170
|
+
|
|
171
|
+
```grain
|
|
172
|
+
ne : (WasmI32, WasmI32) -> Bool
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Wasmi32.**ltS**
|
|
176
|
+
|
|
177
|
+
```grain
|
|
178
|
+
ltS : (WasmI32, WasmI32) -> Bool
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Wasmi32.**ltU**
|
|
182
|
+
|
|
183
|
+
```grain
|
|
184
|
+
ltU : (WasmI32, WasmI32) -> Bool
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Wasmi32.**leS**
|
|
188
|
+
|
|
189
|
+
```grain
|
|
190
|
+
leS : (WasmI32, WasmI32) -> Bool
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Wasmi32.**leU**
|
|
194
|
+
|
|
195
|
+
```grain
|
|
196
|
+
leU : (WasmI32, WasmI32) -> Bool
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Wasmi32.**gtS**
|
|
200
|
+
|
|
201
|
+
```grain
|
|
202
|
+
gtS : (WasmI32, WasmI32) -> Bool
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Wasmi32.**gtU**
|
|
206
|
+
|
|
207
|
+
```grain
|
|
208
|
+
gtU : (WasmI32, WasmI32) -> Bool
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Wasmi32.**geS**
|
|
212
|
+
|
|
213
|
+
```grain
|
|
214
|
+
geS : (WasmI32, WasmI32) -> Bool
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Wasmi32.**geU**
|
|
218
|
+
|
|
219
|
+
```grain
|
|
220
|
+
geU : (WasmI32, WasmI32) -> Bool
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Wasmi32.**wrapI64**
|
|
224
|
+
|
|
225
|
+
```grain
|
|
226
|
+
wrapI64 : WasmI64 -> WasmI32
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Wasmi32.**truncF32S**
|
|
230
|
+
|
|
231
|
+
```grain
|
|
232
|
+
truncF32S : WasmF32 -> WasmI32
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Wasmi32.**truncF32U**
|
|
236
|
+
|
|
237
|
+
```grain
|
|
238
|
+
truncF32U : WasmF32 -> WasmI32
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Wasmi32.**truncF64S**
|
|
242
|
+
|
|
243
|
+
```grain
|
|
244
|
+
truncF64S : WasmF64 -> WasmI32
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Wasmi32.**truncF64U**
|
|
248
|
+
|
|
249
|
+
```grain
|
|
250
|
+
truncF64U : WasmF64 -> WasmI32
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Wasmi32.**reinterpretF32**
|
|
254
|
+
|
|
255
|
+
```grain
|
|
256
|
+
reinterpretF32 : WasmF32 -> WasmI32
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Wasmi32.**extendS8**
|
|
260
|
+
|
|
261
|
+
```grain
|
|
262
|
+
extendS8 : WasmI32 -> WasmI32
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Wasmi32.**extendS16**
|
|
266
|
+
|
|
267
|
+
```grain
|
|
268
|
+
extendS16 : WasmI32 -> WasmI32
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Wasmi32.**fromGrain**
|
|
272
|
+
|
|
273
|
+
```grain
|
|
274
|
+
fromGrain : a -> WasmI32
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Wasmi32.**toGrain**
|
|
278
|
+
|
|
279
|
+
```grain
|
|
280
|
+
toGrain : WasmI32 -> a
|
|
281
|
+
```
|
|
282
|
+
|
|
@@ -1,59 +1,87 @@
|
|
|
1
1
|
/* grainc-flags --compilation-mode=runtime */
|
|
2
2
|
|
|
3
3
|
// WebAssembly Memory Instructions
|
|
4
|
-
export primitive load
|
|
5
|
-
export primitive load8S
|
|
6
|
-
export primitive load8U
|
|
7
|
-
export primitive load16S
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export primitive
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
export primitive load: (WasmI32, WasmI32) -> WasmI64 = "@wasm.load_int64"
|
|
5
|
+
export primitive load8S: (WasmI32, WasmI32) -> WasmI64 = "@wasm.load_8_s_int64"
|
|
6
|
+
export primitive load8U: (WasmI32, WasmI32) -> WasmI64 = "@wasm.load_8_u_int64"
|
|
7
|
+
export primitive load16S: (
|
|
8
|
+
WasmI32,
|
|
9
|
+
WasmI32,
|
|
10
|
+
) -> WasmI64 = "@wasm.load_16_s_int64"
|
|
11
|
+
export primitive load16U: (
|
|
12
|
+
WasmI32,
|
|
13
|
+
WasmI32,
|
|
14
|
+
) -> WasmI64 = "@wasm.load_16_u_int64"
|
|
15
|
+
export primitive load32S: (
|
|
16
|
+
WasmI32,
|
|
17
|
+
WasmI32,
|
|
18
|
+
) -> WasmI64 = "@wasm.load_32_s_int64"
|
|
19
|
+
export primitive load32U: (
|
|
20
|
+
WasmI32,
|
|
21
|
+
WasmI32,
|
|
22
|
+
) -> WasmI64 = "@wasm.load_32_u_int64"
|
|
23
|
+
export primitive store: (
|
|
24
|
+
WasmI32,
|
|
25
|
+
WasmI64,
|
|
26
|
+
WasmI32,
|
|
27
|
+
) -> Void = "@wasm.store_int64"
|
|
28
|
+
export primitive store8: (
|
|
29
|
+
WasmI32,
|
|
30
|
+
WasmI64,
|
|
31
|
+
WasmI32,
|
|
32
|
+
) -> Void = "@wasm.store_8_int64"
|
|
33
|
+
export primitive store16: (
|
|
34
|
+
WasmI32,
|
|
35
|
+
WasmI64,
|
|
36
|
+
WasmI32,
|
|
37
|
+
) -> Void = "@wasm.store_16_int64"
|
|
38
|
+
export primitive store32: (
|
|
39
|
+
WasmI32,
|
|
40
|
+
WasmI64,
|
|
41
|
+
WasmI32,
|
|
42
|
+
) -> Void = "@wasm.store_32_int64"
|
|
15
43
|
|
|
16
44
|
// WebAssembly Unary Instructions
|
|
17
|
-
export primitive clz
|
|
18
|
-
export primitive ctz
|
|
19
|
-
export primitive popcnt
|
|
20
|
-
export primitive eqz
|
|
45
|
+
export primitive clz: WasmI64 -> WasmI64 = "@wasm.clz_int64"
|
|
46
|
+
export primitive ctz: WasmI64 -> WasmI64 = "@wasm.ctz_int64"
|
|
47
|
+
export primitive popcnt: WasmI64 -> WasmI64 = "@wasm.popcnt_int64"
|
|
48
|
+
export primitive eqz: WasmI64 -> Bool = "@wasm.eq_z_int64"
|
|
21
49
|
|
|
22
50
|
// WebAssembly Binary Instructions
|
|
23
|
-
export primitive add
|
|
24
|
-
export primitive sub
|
|
25
|
-
export primitive mul
|
|
26
|
-
export primitive divS
|
|
27
|
-
export primitive divU
|
|
28
|
-
export primitive remS
|
|
29
|
-
export primitive remU
|
|
30
|
-
export primitive and
|
|
31
|
-
export primitive or
|
|
32
|
-
export primitive xor
|
|
33
|
-
export primitive shl
|
|
34
|
-
export primitive shrU
|
|
35
|
-
export primitive shrS
|
|
36
|
-
export primitive rotl
|
|
37
|
-
export primitive rotr
|
|
38
|
-
export primitive eq
|
|
39
|
-
export primitive ne
|
|
40
|
-
export primitive ltS
|
|
41
|
-
export primitive ltU
|
|
42
|
-
export primitive leS
|
|
43
|
-
export primitive leU
|
|
44
|
-
export primitive gtS
|
|
45
|
-
export primitive gtU
|
|
46
|
-
export primitive geS
|
|
47
|
-
export primitive geU
|
|
51
|
+
export primitive add: (WasmI64, WasmI64) -> WasmI64 = "@wasm.add_int64"
|
|
52
|
+
export primitive sub: (WasmI64, WasmI64) -> WasmI64 = "@wasm.sub_int64"
|
|
53
|
+
export primitive mul: (WasmI64, WasmI64) -> WasmI64 = "@wasm.mul_int64"
|
|
54
|
+
export primitive divS: (WasmI64, WasmI64) -> WasmI64 = "@wasm.div_s_int64"
|
|
55
|
+
export primitive divU: (WasmI64, WasmI64) -> WasmI64 = "@wasm.div_u_int64"
|
|
56
|
+
export primitive remS: (WasmI64, WasmI64) -> WasmI64 = "@wasm.rem_s_int64"
|
|
57
|
+
export primitive remU: (WasmI64, WasmI64) -> WasmI64 = "@wasm.rem_u_int64"
|
|
58
|
+
export primitive and: (WasmI64, WasmI64) -> WasmI64 = "@wasm.and_int64"
|
|
59
|
+
export primitive or: (WasmI64, WasmI64) -> WasmI64 = "@wasm.or_int64"
|
|
60
|
+
export primitive xor: (WasmI64, WasmI64) -> WasmI64 = "@wasm.xor_int64"
|
|
61
|
+
export primitive shl: (WasmI64, WasmI64) -> WasmI64 = "@wasm.shl_int64"
|
|
62
|
+
export primitive shrU: (WasmI64, WasmI64) -> WasmI64 = "@wasm.shr_u_int64"
|
|
63
|
+
export primitive shrS: (WasmI64, WasmI64) -> WasmI64 = "@wasm.shr_s_int64"
|
|
64
|
+
export primitive rotl: (WasmI64, WasmI64) -> WasmI64 = "@wasm.rot_l_int64"
|
|
65
|
+
export primitive rotr: (WasmI64, WasmI64) -> WasmI64 = "@wasm.rot_r_int64"
|
|
66
|
+
export primitive eq: (WasmI64, WasmI64) -> Bool = "@wasm.eq_int64"
|
|
67
|
+
export primitive ne: (WasmI64, WasmI64) -> Bool = "@wasm.ne_int64"
|
|
68
|
+
export primitive ltS: (WasmI64, WasmI64) -> Bool = "@wasm.lt_s_int64"
|
|
69
|
+
export primitive ltU: (WasmI64, WasmI64) -> Bool = "@wasm.lt_u_int64"
|
|
70
|
+
export primitive leS: (WasmI64, WasmI64) -> Bool = "@wasm.le_s_int64"
|
|
71
|
+
export primitive leU: (WasmI64, WasmI64) -> Bool = "@wasm.le_u_int64"
|
|
72
|
+
export primitive gtS: (WasmI64, WasmI64) -> Bool = "@wasm.gt_s_int64"
|
|
73
|
+
export primitive gtU: (WasmI64, WasmI64) -> Bool = "@wasm.gt_u_int64"
|
|
74
|
+
export primitive geS: (WasmI64, WasmI64) -> Bool = "@wasm.ge_s_int64"
|
|
75
|
+
export primitive geU: (WasmI64, WasmI64) -> Bool = "@wasm.ge_u_int64"
|
|
48
76
|
|
|
49
77
|
// WebAssembly Conversion instructions
|
|
50
|
-
export primitive extendI32S
|
|
51
|
-
export primitive extendI32U
|
|
52
|
-
export primitive truncF32S
|
|
53
|
-
export primitive truncF32U
|
|
54
|
-
export primitive truncF64S
|
|
55
|
-
export primitive truncF64U
|
|
56
|
-
export primitive reinterpretF64
|
|
57
|
-
export primitive extendS8
|
|
58
|
-
export primitive extendS16
|
|
59
|
-
export primitive extendS32
|
|
78
|
+
export primitive extendI32S: WasmI32 -> WasmI64 = "@wasm.extend_s_int32"
|
|
79
|
+
export primitive extendI32U: WasmI32 -> WasmI64 = "@wasm.extend_u_int32"
|
|
80
|
+
export primitive truncF32S: WasmF32 -> WasmI64 = "@wasm.trunc_s_float32_to_int64"
|
|
81
|
+
export primitive truncF32U: WasmF32 -> WasmI64 = "@wasm.trunc_u_float32_to_int64"
|
|
82
|
+
export primitive truncF64S: WasmF64 -> WasmI64 = "@wasm.trunc_s_float64_to_int64"
|
|
83
|
+
export primitive truncF64U: WasmF64 -> WasmI64 = "@wasm.trunc_u_float64_to_int64"
|
|
84
|
+
export primitive reinterpretF64: WasmF64 -> WasmI64 = "@wasm.reinterpret_float64"
|
|
85
|
+
export primitive extendS8: WasmI64 -> WasmI64 = "@wasm.extend_s8_int64"
|
|
86
|
+
export primitive extendS16: WasmI64 -> WasmI64 = "@wasm.extend_s16_int64"
|
|
87
|
+
export primitive extendS32: WasmI64 -> WasmI64 = "@wasm.extend_s32_int64"
|