Commit graph

3438 commits

Author SHA1 Message Date
Folkert
44f08f9e47
implement sqrt and log in the dev backend 2023-02-26 21:41:25 +01:00
Folkert
6a40d75353
float comparisions 2023-02-26 18:14:11 +01:00
Folkert
f1fa014524
support 128-bit literals 2023-02-26 15:11:49 +01:00
Anton-4
4d91fe01ca
update mono tests 2023-02-24 14:35:05 +01:00
Folkert
9897367038
fix merge conflict in the dev backend 2023-02-22 13:13:40 +01:00
Folkert de Vries
34340de60c
Merge pull request #5020 from roc-lang/dev-unbox-u32
dev backend: reading and writing 32, 16 and 8-bit values
2023-02-21 17:33:21 +01:00
Folkert de Vries
bd6623dab4
Merge pull request #5055 from roc-lang/abilities-bug-generic
Lambda set compaction must preserve unique specializations of concrete types
2023-02-21 15:24:23 +01:00
Ayaz Hafiz
fbc75016e1
Check in mono goldens 2023-02-20 19:31:22 -06:00
Folkert de Vries
088bd5211f
Merge pull request #5054 from roc-lang/glue-generate-lambda-set-callers
Glue generate lambda set callers
2023-02-21 02:19:53 +01:00
Ayaz Hafiz
7a4fed932d
Add gen tests for concerete unspecialized set conservation 2023-02-20 18:59:48 -06:00
Ayaz Hafiz
d7a069675b
Lambda set compaction must preserve unique specializations of concrete types
There are times that multiple concrete types may appear in
unspecialized lambda sets that are being unified. The primary case is
during monomorphization, when unspecialized lambda sets join at the same
time that concrete types get instantiated. Since lambda set
specialization and compaction happens only after unifications are
complete, unifications that monomorphize can induce the above-described
situation.

In these cases,

- unspecialized lambda sets that are due to equivalent type variables
  can be compacted, since they are in fact the same specialization.
- unspecialized lambda sets that are due to different type variables
  cannot be compacted, even if their types unify, since they may point
  to different specializations. For example, consider the unspecialized
  lambda set `[[] + [A]:toEncoder:1 + [B]:toEncoder:1]` - this set wants
  two encoders, one for `[A]` and one for `[B]`, which is materially
  different from the set `[[] + [A, B]:toEncoder:1]`.
2023-02-20 18:50:07 -06:00
Ayaz Hafiz
f7aa7e734d
Pass interner through to debug proc layouts misisng in param map 2023-02-20 18:49:29 -06:00
Ayaz Hafiz
e5c3376e90
Debug ProcLayouts 2023-02-20 18:49:18 -06:00
Ayaz Hafiz
5a1898b285
Pretty-print opaque refs 2023-02-20 18:42:05 -06:00
Ayaz
2f251310c0
Merge pull request #5010 from roc-lang/tuple-record-unify
Unify IR generation for tuples and records
2023-02-20 18:40:52 -06:00
Folkert
958d44a21c
cleanup 2023-02-20 22:25:48 +01:00
Folkert
68524ef07e
generate callers based on layout traversal 2023-02-20 22:05:35 +01:00
Folkert de Vries
c6089ebb6a
Merge pull request #5041 from thehabbos007/eq
gen_dev x86: misc low-level bool comparison functions
2023-02-20 08:51:11 +01:00
Richard Feldman
c60360593f
Merge pull request #5050 from joshuawarner32/fuzzing
Fix several fmt+parse bugs found by fuzzing
2023-02-19 22:38:42 -05:00
Joshua Warner
b5f284cd78
Fix several fmt+parse bugs found by fuzzing 2023-02-19 12:37:33 -08:00
Folkert
5b52cfe79b
disable str_append_scalar; it segfaults for unclear reasons 2023-02-18 23:18:48 +01:00
Folkert
bece06ba10
work around universally quantified type variable 2023-02-18 18:12:32 +01:00
Folkert
90c45a197b
use extracted functions 2023-02-18 17:57:50 +01:00
Folkert
784ebde24b
helper functions 2023-02-18 17:34:41 +01:00
Folkert
edd10a079c
create hook for future glue proc codegen 2023-02-18 17:34:23 +01:00
Folkert
aac8c76c5f
fix mono tests 2023-02-18 16:43:51 +01:00
Folkert
808262892e
fix off-by-one error in loop condition 2023-02-18 16:42:47 +01:00
Folkert
b2a875c355
use debug_assert_eq 2023-02-18 16:42:47 +01:00
Folkert
03867fdc1f
str to num 2023-02-18 16:42:46 +01:00
Folkert
93fb1c73e6
str splits 2023-02-18 16:42:46 +01:00
Folkert
a3d5e7bee5
fully implement sign/zero extension 2023-02-18 16:42:46 +01:00
Folkert
4e38a4ce32
enable some utf8 conversion tests 2023-02-18 16:42:46 +01:00
Folkert
aa113f169c
string equality 2023-02-18 16:42:45 +01:00
Folkert
816828040d
tests for boxing/unboxing floats 2023-02-18 16:42:45 +01:00
Folkert
b968122bee
simplify systemv argument storing and loading 2023-02-18 16:42:45 +01:00
Folkert
89201676ef
make is_primitive look through LambdaSet 2023-02-18 16:42:44 +01:00
Folkert
4b31c77b37
paramter ownership is not important for codegen 2023-02-18 16:42:44 +01:00
Folkert
78000b3f19
enable more list tests 2023-02-18 16:42:44 +01:00
Folkert
9f5f80581e
add test that passes a struct < 16 bytes 2023-02-18 16:42:43 +01:00
Folkert
a66320b00c
count utf bytes 2023-02-18 16:42:43 +01:00
Folkert
e48a604862
add Str.appendScalar 2023-02-18 16:42:43 +01:00
Folkert
92539fe3b0
Revert "implment 8bit logical operators"
This reverts commit 87c49679e1ac5bcfb710b6d432a9f503db3ee501.
2023-02-18 16:42:42 +01:00
Folkert
f6fbfa002b
implment 8bit logical operators 2023-02-18 16:42:42 +01:00
Folkert
4afeb1d67a
store big strings on the heap; enable a lot more string tests 2023-02-18 16:42:42 +01:00
Folkert
1e1da8a61b
reduce linecount 2023-02-18 16:42:41 +01:00
Folkert
38b66765ab
enable more string tests 2023-02-18 16:42:41 +01:00
Folkert
6a84d6ee83
centralize stack movement 2023-02-18 16:42:41 +01:00
Folkert
8ec3ab0963
centralize reading a pointer to some stack location 2023-02-18 16:42:40 +01:00
Folkert
b31edead54
centralize writing a stack value to a pointer 2023-02-18 16:42:40 +01:00
Folkert
ee79a311f9
dev: box and unbox 16-bit and 8-bit values 2023-02-18 16:42:40 +01:00