ayazhafiz
134a7bf787
Update wasm implementation
2022-04-07 21:10:22 -04:00
Brian Carroll
9116770a00
wasm: Adjust List.map code gen for capacity
2022-04-07 09:29:42 +01:00
Brian Carroll
2b74e55240
Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-higher-order-calls
2022-04-07 09:03:34 +01:00
Richard Feldman
08466380df
Merge pull request #2798 from rtfeldman/wasm-fix-dec-isfinite
...
Wasm: fix Num.isFinite for Dec
2022-04-04 20:58:46 -04:00
Brian Carroll
0910831f59
wasm: fix Num.isFinite for Dec
...
When I wrote this code I thought it was the base10 floating point format,
but in fact it's fixed-point.
2022-04-05 00:02:31 +01:00
Brian Carroll
8620cdf75c
wasm: function pointers for higher order calls
2022-04-05 00:02:05 +01:00
Brian Carroll
5db3ae0227
wasm: code gen for higher order wrapper function
2022-04-05 00:02:05 +01:00
Brian Carroll
51789f38c2
wasm: generate RC inc for higher order builtins
2022-04-05 00:02:05 +01:00
Brian Carroll
05459455ec
wasm: ProcLayout for higher order wrapper fns
2022-04-05 00:02:05 +01:00
Brian Carroll
83cae16a60
wasm: Generate code for List.map call (incomplete)
2022-04-05 00:02:05 +01:00
Brian Carroll
448140d223
wasm: refactor to prepare for HigherOrder calls
2022-04-05 00:01:11 +01:00
Folkert
c73c01aa34
Merge remote-tracking branch 'origin/trunk' into list-str-capacity
2022-03-30 14:07:17 +02:00
Brian Carroll
24e6cd80e7
wasm: fix argument order for shiftRightBy & disable tests with 8-bit values
2022-03-22 22:28:18 +00:00
Brian Carroll
456d8ff9cb
Merge branch 'trunk' of github.com:rtfeldman/roc into list-str-capacity
2022-03-11 19:28:13 +00:00
Brian Carroll
20f6330f72
wasm: Fix Str.isEmpty for capacity
2022-03-10 06:59:15 +00:00
Folkert
92f2927046
initial implementation
2022-03-08 19:09:42 +01:00
Folkert
3510bad1d5
add scaffolding
2022-03-07 20:55:40 +01:00
Brendan Hansknecht
2e70bb8458
remove list set low level
2022-02-27 15:07:09 -08:00
Brendan Hansknecht
dddf8ff785
switch from pair to record and change name to ListReplaceUnsafe
2022-02-24 20:41:26 -08:00
Brendan Hansknecht
ba2e8cd32b
Add base piping for list.Replace
2022-02-24 17:58:56 -08:00
ayazhafiz
e52d427ac8
Hash record field name order in generated layouts
...
Closes #2535
See the referenced issue for longer discussion - here's the synopsis.
Consider this program
```
app "test" provides [ nums ] to "./platform"
alpha = { a: 1, b: 2 }
nums : List U8
nums =
[
alpha.a,
alpha.b,
]
```
Here's its IR:
```
procedure : `#UserApp.alpha` {I64, U8}
procedure = `#UserApp.alpha` ():
let `#UserApp.5` : Builtin(Int(I64)) = 1i64;
let `#UserApp.6` : Builtin(Int(U8)) = 2i64;
let `#UserApp.4` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = Struct {`#UserApp.5`, `#UserApp.6`};
ret `#UserApp.4`;
procedure : `#UserApp.nums` List U8
procedure = `#UserApp.nums` ():
let `#UserApp.7` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
let `#UserApp.1` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.7`;
let `#UserApp.3` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
let `#UserApp.2` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.3`;
let `#UserApp.0` : Builtin(List(Builtin(Int(U8)))) = Array [`#UserApp.1`, `#UserApp.2`];
ret `#UserApp.0`;
```
What's happening is that we need to specialize `alpha` twice - once for the
type of a narrowed to a U8, another time for the type of b narrowed to a U8.
We do the specialization for alpha.b first - record fields are sorted by
layout, so we generate a record of type {i64, u8}. But then we go to
specialize alpha.a, but this has the same layout - {i64, u8} - so we reuse
the existing one! So (at least for records), we need to include record field
order associated with the sorted layout fields, so that we don't reuse
monomorphizations like this incorrectly!
2022-02-21 14:10:45 -05:00
ayazhafiz
13067f2908
Implement Num.toNNNChecked
...
Closes #2411
2022-02-19 16:20:21 -05:00
Mats Sigge
71f359fbdc
Move macros from roc_reporting to new roc_error_macros module
...
The `internal_error!` and `user_error!´ macros can't be used everywhere
when they live in `roc_reporting` due to circular dependencies.
2022-01-23 18:40:04 +01:00
Brian Carroll
f354b4842b
Wasm: Move Eq/NotEq into LowLevelCall
2022-01-17 09:35:08 +00:00
Brian Carroll
f635dd8776
Wasm: Refactor lowlevels to get more flexibility without increasing boilerplate.
2022-01-17 09:33:06 +00:00
Brian Carroll
88b779c3ff
Wasm: Create CodeGenNumber
2022-01-17 09:33:06 +00:00
Brian Carroll
05a6a9c7ce
Wasm: update comments on lowlevels
2022-01-17 09:33:06 +00:00
ayazhafiz
2c41c43aea
Implement saturated add/subtract
2022-01-10 22:37:08 -05:00
rvcas
d2f95bde63
chore(StrToNum): layout is always a Struct, we don't need the Union case
2022-01-03 18:15:46 -05:00
Brian Carroll
aec8d1bf3d
Merge branch 'trunk' of github.com:rtfeldman/roc into str_to_num
2022-01-02 12:31:59 +00:00
Brian Carroll
83d6c82e0b
Wasm: avoid two memory loads for ListLen, at the cost of +1 instruction byte
2021-12-30 15:40:55 +00:00
Brian Carroll
f90d9a74bd
Do not inline builtin wrapper for Str.toNum
2021-12-29 21:08:16 +00:00
rvcas
0d187fb53c
feat(wasm): use mono layout to figure out the correct intrinsic
2021-12-28 21:38:43 -05:00
rvcas
cd42f034b5
feat(wasm): start StrToNum
2021-12-27 19:08:21 -05:00
Folkert de Vries
18187bc43f
Merge pull request #2245 from rtfeldman/wasm-tag-eq
...
Wasm tag equality
2021-12-21 16:24:14 +01:00
rvcas
c6eaf3abd3
feat(wasm): enable more Str LowLevels
2021-12-20 17:47:39 -05:00
Brian Carroll
c510226c15
Reorganise Wasm lowlevels to get pointer equality working correctly
2021-12-19 21:20:06 +00:00
Brian Carroll
e847c924dd
Lowlevels: replace RefCountGetPtr with the more general GetPtrAsInt.
2021-12-19 08:29:17 +00:00
Brian Carroll
a1d883600c
Equality operator for records
2021-12-18 17:25:00 +00:00
rvcas
b9bd75d643
Merge branch 'trunk' into wasm_arrays
2021-12-17 11:54:23 -05:00
rvcas
787900d291
fix(wasm): ListLen does not need to match ret_layout
2021-12-17 11:38:09 -05:00
rvcas
40da207859
feat(wasm): LowLevel::ListLen
2021-12-16 21:50:12 -05:00
Brian Carroll
86d8e2789e
Implement Wasm string equality
2021-12-16 16:56:56 +00:00
Brian Carroll
3adaacc66e
Add some comments
2021-12-16 16:56:53 +00:00
Brian Carroll
cd91be678f
Setup for specializing equality checks
2021-12-16 16:52:47 +00:00
Brian Carroll
cca4acf728
Remove f128 equality implementation
2021-12-13 22:23:20 +00:00
Brian Carroll
594fe9124d
Wasm support for 128-bit number literals, isFinite, ==, and !=
2021-12-13 09:05:07 +00:00
Richard Feldman
1ce648ac27
Merge pull request #2116 from rtfeldman/str_to_num
...
Str.toNum
2021-12-09 09:48:38 -05:00
Brian Carroll
1dda8859c4
Update gen_wasm's error handling to remove Result and use macros consistently
2021-12-09 00:11:44 +00:00
Brian Carroll
72fa6217fb
Refactor wasm lowlevels to make it easier to add more 128-bit ops
2021-12-01 15:09:23 +00:00