Commit Graph

358 Commits

Author SHA1 Message Date
Jeroen van Rijn
94be05ead1 Merge pull request #6918 from Kelimion/deprecate-llvm-14
Remove LLVM 14 support
2026-07-03 21:35:47 +02:00
gingerBill
d595bf1917 Merge pull request #6924 from tf2spi/6815-patch-simd-min-max
Fix misuse of lb_emit_(min|max) in simd_(min|max)
2026-07-03 16:34:08 +01:00
gingerBill
328f511576 Merge pull request #6939 from tf2spi/6832-no-code-regen
Avoid code regeneration for fns in unroll
2026-07-03 13:06:56 +01:00
misomosi
ee1cad0fcc Avoid code regeneration for fns in unroll 2026-07-03 00:46:17 -04:00
misomosi
b5e3b08a8c Remove use of llvm.(max|min)num in SIMD builtins 2026-07-02 09:56:38 -04:00
MauriceElliott
56cee0c2cf fix: made suggested changes to add a playdate subtarget, updated help text and reduce required build flags for playdate to just the subtarget, no-movt and cortex-m7 added to default on playdate subtarget flag. 2026-07-01 21:18:28 +01:00
misomosi
f276d77c0c Fix misuse of lb_emit_(min|max) in simd_(min|max) 2026-07-01 10:59:03 -04:00
Jeroen van Rijn
2d2979a5f2 Remove old pass manager 2026-06-30 22:44:28 +02:00
MauriceElliott
a3fa3476c6 feat(arm32 cdecl): Added thumb as the triple for cortex-m7. Updated the calling convention for cortex-m7 arm32 micro processors as the soft float register was being used when calling across the C ABI boundary causing guff data to be passed. 2026-06-30 20:07:36 +01:00
misomosi
12e8ba8d66 Use lb_add_values_to_array for cvarargs 2026-06-29 10:01:50 -04:00
A1029384756
8ccee66157 [stack-canaries] fixed platform behavior 2026-06-12 23:27:32 -04:00
A1029384756
2373fabe47 [stack-canaries] added protection modes 2026-06-12 22:57:39 -04:00
A1029384756
da742fc526 [no-plt] enable no-plt behavior on linux arm64 and amd64 targets 2026-06-08 10:58:05 -04:00
gingerBill
1c9fa5d0b7 Merge pull request #6731 from odin-lang/bill/expand-values-operator
Support `**` as `expand_values` operator: `**x` == `expand_values(x)`
2026-06-05 11:42:08 +01:00
gingerBill
a479eb7775 Support @(link_section=<string>) for procedures 2026-06-02 13:09:40 +01:00
gingerBill
fb8a9d0839 Support ** as expand_values operator: **x == expand_values(x) 2026-05-25 10:28:15 +01:00
kalsprite
98d6e0c26a ARM chunking logic, improved docs 2026-05-20 17:55:29 -07:00
kalsprite
ae4b94fbd0 fix overloaded call 2026-05-20 16:57:05 -07:00
gingerBill
a91725f305 Add simd.interleave + simd.deinterleave 2026-05-19 21:32:09 +01:00
gingerBill
a3240373ac Allow simd.(reduce_any|reduce_all) to work with #simd integers 2026-05-19 15:33:45 +01:00
gingerBill
7b97530443 Add intrinsics.c_var_* 2026-04-28 15:00:53 +01:00
gingerBill
68942ce53d Genericize simd_approx_recip_(sqrt) to allow for AVX and AVX512 intrinsics if enabled 2026-04-08 10:56:52 +01:00
gingerBill
6f7226e692 Add intrinsics.simd_pairwise_(add|sub) 2026-04-07 15:45:50 +01:00
gingerBill
6e09ce9a04 intrinsics.to_bits_signed; simd.signbit 2026-04-07 15:25:41 +01:00
gingerBill
5de18d30f3 Add intrinsics.simd_approx_recip and intrinsics.simd_approx_recip_sqrt 2026-04-07 14:35:04 +01:00
gingerBill
885db93e20 Add intrinsics.simd_sums_of_n 2026-04-07 13:18:03 +01:00
gingerBill
30b6fab120 Fix simd.scatter/simd.gather for LLVM 22 2026-04-07 11:46:57 +01:00
gingerBill
ac1b5aea0f Add intrinsics.simd_odd_even; More core:simd operations 2026-04-07 11:35:20 +01:00
Yawning Angel
62d78d61fa src: Allow clang-style +/- for target features
This largely works as expected, except that as far as I can tell,
without explicit annotations added to the caller, (or a
`#force_inline`), the LLVM `target-features` function attribute
gets ignored by the inliner under the rationale of `-sse,-avx,-avx2`
is a subset of `+sse,+avx,+avx2`.

With `#force_no_inline` the correct code does get generated, but in
the regression I am trying to fix, the caller gratuitously also uses
SIMD, leading to horrific performance.
2026-03-19 19:25:23 +09:00
gingerBill
04cb889aed Begin interning ScopeMap strings 2026-03-17 11:04:32 +00:00
gingerBill
1744f57d01 Use permanent_alloc_item directly rather than through the gb_alloc_item generic interface 2026-03-16 16:03:27 +00:00
gingerBill
5d165f70e1 Add loads of RVO optimizations for basic 1-value return cases 2026-03-15 21:53:38 +00:00
gingerBill
bb2e42faa6 More uses of SSA aggregation values 2026-03-15 19:49:26 +00:00
gingerBill
a0685f0511 Add intrinsics.likely and intrinsics.unlikely 2026-03-15 15:39:52 +00:00
gingerBill
f1dbe9c242 [dynamic; N]T proof of concept: fixed capacity dynamic array (akin to small_array.Small_Array(N, T)) 2026-03-11 16:46:33 +00:00
Jeroen van Rijn
5d94c01e47 Disable LLVMTailCallKindMustTail under LLVM 18 2026-02-21 23:29:32 +01:00
gingerBill
6f7a64a47d Change LTO rules for all platforms 2026-02-04 17:15:48 +00:00
Jesse Meyer
b8276065f9 Merge branch 'master' into lto-support 2026-02-03 20:52:52 -05:00
Jesse Meyer
bd6148dd6b Fix Windows LTO: preserve required procedures with llvm.used
On Windows with LTO, required procedures with external linkage need to
be added to @llvm.used to survive linker-level dead code elimination.

LLVM may generate implicit calls to runtime builtins (e.g., __extendhfsf2
for f16 conversions) during instruction lowering, after the IR is
finalized. Without @llvm.used, the linker discards these procedures
before the implicit calls are generated.

This adds required procedures to @llvm.used at creation time. The fix
is Windows-specific; other platforms handle this correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:16:44 -05:00
gingerBill
bb7496a2fc Add intrinsics.count_trailing_ones and intrinsics.count_leading_ones 2026-02-02 14:28:16 +00:00
gingerBill
adf56ced22 Merge pull request #6215 from odin-lang/bill/fix-data-races-2026-02
Fix numerous data races
2026-02-02 11:37:19 +00:00
gingerBill
b9e4007cb1 Merge pull request #6216 from odin-lang/bill/debug-info-fixes
Debug Info Fixes
2026-02-02 11:33:21 +00:00
gingerBill
c85af4a454 Fix #6202 2026-02-02 11:27:41 +00:00
gingerBill
63c4faca75 Fix positions for debug locations in defer, loops, and switch clauses 2026-02-02 11:19:00 +00:00
gingerBill
acabae8644 Make Entity.parent_proc_decl atomic 2026-02-02 10:58:25 +00:00
gingerBill
8a92ba74fc Make defer_use_checked and where_clauses_evaluated atomic 2026-02-02 10:56:30 +00:00
gingerBill
dc6067a8a9 Unify "mem*.inline" logic to only inline for <=8 bytes on all platforms 2026-01-22 13:18:22 +00:00
gingerBill
557e854864 -disable-unwind 2026-01-15 18:12:39 +00:00
gingerBill
f4a7e0b279 Add @(no_sanitize_thread) 2026-01-15 18:06:25 +00:00
gingerBill
5f07055ac1 Add #must_tail and "preserve/none" calling convention 2026-01-15 17:28:28 +00:00