@@ -10,23 +10,7 @@ module Int64
1010
1111include "runtime/unsafe/wasmi32"
1212include "runtime/unsafe/wasmi64"
13- from WasmI64 use {
14- (==),
15- (!=),
16- (&),
17- (|),
18- (^),
19- (+),
20- (-),
21- (*),
22- (/),
23- (<<),
24- (>>),
25- (<),
26- (<=),
27- (>),
28- (>=),
29- }
13+ from WasmI64 use { (==), (!=), (&), (|), (^), (<<), (>>), (<), (<=), (>), (>=) }
3014include "runtime/exception"
3115
3216include "runtime/dataStructures"
@@ -65,6 +49,7 @@ provide let fromUint64 = (x: Uint64) => {
6549 */
6650@unsafe
6751provide let incr = (value: Int64) => {
52+ from WasmI64 use { (+) }
6853 let value = WasmI32.fromGrain(value)
6954 let ptr = newInt64(WasmI64.load(value, 8n) + 1N)
7055 WasmI32.toGrain(ptr): Int64
@@ -80,6 +65,7 @@ provide let incr = (value: Int64) => {
8065 */
8166@unsafe
8267provide let decr = (value: Int64) => {
68+ from WasmI64 use { (-) }
8369 let value = WasmI32.fromGrain(value)
8470 let ptr = newInt64(WasmI64.load(value, 8n) - 1N)
8571 WasmI32.toGrain(ptr): Int64
@@ -92,10 +78,12 @@ provide let decr = (value: Int64) => {
9278 * @param y: The second operand
9379 * @returns The sum of the two operands
9480 *
95- * @since v0.2.0
81+ * @since v0.6.0
82+ * @history v0.2.0: Originally named `add`
9683 */
9784@unsafe
98- provide let add = (x: Int64, y: Int64) => {
85+ provide let (+) = (x: Int64, y: Int64) => {
86+ from WasmI64 use { (+) }
9987 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
10088 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
10189 let ptr = newInt64(xv + yv)
@@ -109,10 +97,12 @@ provide let add = (x: Int64, y: Int64) => {
10997 * @param y: The second operand
11098 * @returns The difference of the two operands
11199 *
112- * @since v0.2.0
100+ * @since v0.6.0
101+ * @history v0.2.0: Originally named `sub`
113102 */
114103@unsafe
115- provide let sub = (x: Int64, y: Int64) => {
104+ provide let (-) = (x: Int64, y: Int64) => {
105+ from WasmI64 use { (-) }
116106 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
117107 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
118108 let ptr = newInt64(xv - yv)
@@ -126,10 +116,12 @@ provide let sub = (x: Int64, y: Int64) => {
126116 * @param y: The second operand
127117 * @returns The product of the two operands
128118 *
129- * @since v0.2.0
119+ * @since v0.6.0
120+ * @history v0.2.0: Originally named `*`
130121 */
131122@unsafe
132- provide let mul = (x: Int64, y: Int64) => {
123+ provide let (*) = (x: Int64, y: Int64) => {
124+ from WasmI64 use { (*) }
133125 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
134126 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
135127 let ptr = newInt64(xv * yv)
@@ -143,10 +135,12 @@ provide let mul = (x: Int64, y: Int64) => {
143135 * @param y: The second operand
144136 * @returns The quotient of its operands
145137 *
146- * @since v0.2.0
138+ * @since v0.6.0
139+ * @history v0.2.0: Originally named `div`
147140 */
148141@unsafe
149- provide let div = (x: Int64, y: Int64) => {
142+ provide let (/) = (x: Int64, y: Int64) => {
143+ from WasmI64 use { (/) }
150144 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
151145 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
152146 let ptr = newInt64(xv / yv)
@@ -172,6 +166,7 @@ provide let rem = (x: Int64, y: Int64) => {
172166
173167@unsafe
174168let abs = n => {
169+ from WasmI64 use { (-) }
175170 let mask = n >> 63N
176171 (n ^ mask) - mask
177172}
@@ -186,10 +181,12 @@ let abs = n => {
186181 *
187182 * @throws ModuloByZero: When `y` is zero
188183 *
189- * @since v0.2.0
184+ * @since v0.6.0
185+ * @history v0.2.0: Originally named `mod`
190186 */
191187@unsafe
192- provide let mod = (x: Int64, y: Int64) => {
188+ provide let (%) = (x: Int64, y: Int64) => {
189+ from WasmI64 use { (-) }
193190 let xval = WasmI64.load(WasmI32.fromGrain(x), 8n)
194191 let yval = WasmI64.load(WasmI32.fromGrain(y), 8n)
195192
@@ -250,10 +247,11 @@ provide let rotr = (value: Int64, amount: Int64) => {
250247 * @param amount: The number of bits to shift by
251248 * @returns The shifted value
252249 *
253- * @since v0.2.0
250+ * @since v0.6.0
251+ * @history v0.2.0: Originally named `shl`
254252 */
255253@unsafe
256- provide let shl = (value: Int64, amount: Int64) => {
254+ provide let (<<) = (value: Int64, amount: Int64) => {
257255 let xv = WasmI64.load(WasmI32.fromGrain(value), 8n)
258256 let yv = WasmI64.load(WasmI32.fromGrain(amount), 8n)
259257 let ptr = newInt64(xv << yv)
@@ -267,10 +265,11 @@ provide let shl = (value: Int64, amount: Int64) => {
267265 * @param amount: The amount to shift by
268266 * @returns The shifted value
269267 *
270- * @since v0.2.0
268+ * @since v0.6.0
269+ * @history v0.2.0: Originally named `shr`
271270 */
272271@unsafe
273- provide let shr = (value: Int64, amount: Int64) => {
272+ provide let (>>) = (value: Int64, amount: Int64) => {
274273 let xv = WasmI64.load(WasmI32.fromGrain(value), 8n)
275274 let yv = WasmI64.load(WasmI32.fromGrain(amount), 8n)
276275 let ptr = newInt64(xv >> yv)
@@ -284,10 +283,11 @@ provide let shr = (value: Int64, amount: Int64) => {
284283 * @param y: The second value
285284 * @returns `true` if the first value is equal to the second value or `false` otherwise
286285 *
287- * @since v0.4.0
286+ * @since v0.6.0
287+ * @history v0.4.0: Originally named `eq`
288288 */
289289@unsafe
290- provide let eq = (x: Int64, y: Int64) => {
290+ provide let (==) = (x: Int64, y: Int64) => {
291291 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
292292 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
293293 xv == yv
@@ -300,10 +300,11 @@ provide let eq = (x: Int64, y: Int64) => {
300300 * @param y: The second value
301301 * @returns `true` if the first value is not equal to the second value or `false` otherwise
302302 *
303- * @since v0.4.0
303+ * @since v0.6.0
304+ * @history v0.4.0: Originally named `ne`
304305 */
305306@unsafe
306- provide let ne = (x: Int64, y: Int64) => {
307+ provide let (!=) = (x: Int64, y: Int64) => {
307308 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
308309 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
309310 xv != yv
@@ -330,10 +331,11 @@ provide let eqz = (value: Int64) => {
330331 * @param y: The second value
331332 * @returns `true` if the first value is less than the second value or `false` otherwise
332333 *
333- * @since v0.2.0
334+ * @since v0.6.0
335+ * @history v0.2.0: Originally named `lt`
334336 */
335337@unsafe
336- provide let lt = (x: Int64, y: Int64) => {
338+ provide let (<) = (x: Int64, y: Int64) => {
337339 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
338340 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
339341 xv < yv
@@ -346,10 +348,11 @@ provide let lt = (x: Int64, y: Int64) => {
346348 * @param y: The second value
347349 * @returns `true` if the first value is greater than the second value or `false` otherwise
348350 *
349- * @since v0.2.0
351+ * @since v0.6.0
352+ * @history v0.2.0: Originally named `gt`
350353 */
351354@unsafe
352- provide let gt = (x: Int64, y: Int64) => {
355+ provide let (>) = (x: Int64, y: Int64) => {
353356 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
354357 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
355358 xv > yv
@@ -362,10 +365,11 @@ provide let gt = (x: Int64, y: Int64) => {
362365 * @param y: The second value
363366 * @returns `true` if the first value is less than or equal to the second value or `false` otherwise
364367 *
365- * @since v0.2.0
368+ * @since v0.6.0
369+ * @history v0.2.0: Originally named `lte`
366370 */
367371@unsafe
368- provide let lte = (x: Int64, y: Int64) => {
372+ provide let (<=) = (x: Int64, y: Int64) => {
369373 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
370374 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
371375 xv <= yv
@@ -378,10 +382,11 @@ provide let lte = (x: Int64, y: Int64) => {
378382 * @param y: The second value
379383 * @returns `true` if the first value is greater than or equal to the second value or `false` otherwise
380384 *
381- * @since v0.2.0
385+ * @since v0.6.0
386+ * @history v0.2.0: Originally named `gte`
382387 */
383388@unsafe
384- provide let gte = (x: Int64, y: Int64) => {
389+ provide let (>=) = (x: Int64, y: Int64) => {
385390 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
386391 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
387392 xv >= yv
@@ -409,10 +414,11 @@ provide let lnot = (value: Int64) => {
409414 * @param y: The second operand
410415 * @returns Containing a `1` in each bit position for which the corresponding bits of both operands are `1`
411416 *
412- * @since v0.2.0
417+ * @since v0.6.0
418+ * @history v0.2.0: Originally named `land`
413419 */
414420@unsafe
415- provide let land = (x: Int64, y: Int64) => {
421+ provide let (&) = (x: Int64, y: Int64) => {
416422 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
417423 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
418424 let ptr = newInt64(xv & yv)
@@ -426,10 +432,11 @@ provide let land = (x: Int64, y: Int64) => {
426432 * @param y: The second operand
427433 * @returns Containing a `1` in each bit position for which the corresponding bits of either or both operands are `1`
428434 *
429- * @since v0.2.0
435+ * @since v0.6.0
436+ * @history v0.2.0: Originally named `lor`
430437 */
431438@unsafe
432- provide let lor = (x: Int64, y: Int64) => {
439+ provide let (|) = (x: Int64, y: Int64) => {
433440 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
434441 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
435442 let ptr = newInt64(xv | yv)
@@ -443,10 +450,11 @@ provide let lor = (x: Int64, y: Int64) => {
443450 * @param y: The second operand
444451 * @returns Containing a `1` in each bit position for which the corresponding bits of either but not both operands are `1`
445452 *
446- * @since v0.2.0
453+ * @since v0.6.0
454+ * @history v0.2.0: Originally named `lxor`
447455 */
448456@unsafe
449- provide let lxor = (x: Int64, y: Int64) => {
457+ provide let (^) = (x: Int64, y: Int64) => {
450458 let xv = WasmI64.load(WasmI32.fromGrain(x), 8n)
451459 let yv = WasmI64.load(WasmI32.fromGrain(y), 8n)
452460 let ptr = newInt64(xv ^ yv)
0 commit comments