aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add `@(no_sanitize_memory)` proc attribute with MSan additions to ↵Feoramund2025-06-051-1/+1
| | | | `base:sanitizer`
* Add `compress_values`gingerBill2025-05-121-0/+62
|
* Merge pull request #5117 from bogwi/bug/5024gingerBill2025-05-091-0/+12
|\ | | | | Bug/5024
| * CHECK 1 donebogwi2025-05-051-0/+12
| | | | | | | | | | | | | | Fix panic in LLVM backend when using generic procedure with default arguments - Fixed panic in `llvm_backend_proc.cpp` when using unspecialized polymorphic procedures as defaults. - Ensured correct type inference when generic procedures are used as default parameters.
* | Merge pull request #5064 from harold-b/hb/objc-classesgingerBill2025-05-081-0/+1
|\ \ | | | | | | Add support for Objective-C class implementation
| * | Fix indentationsHarold Brenes2025-04-271-1/+1
| | | | | | | | | | | | Fix Objective-C wrapper procs not forwarding return value
| * | Add initial support for Objective-C class implementationHarold Brenes2025-04-201-0/+1
| | |
* | | fix disposing builder when not createdLaytan Laats2025-05-071-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #5128 p->builder is created in lb_begin_procedure_body, but that isn't called if there is no body, and we were still calling dispose at that point. Moved it into lb_end_procedure_body to match.
* | | Merge pull request #5122 from Lperlind/asan-allocatorsgingerBill2025-05-071-11/+13
|\ \ \ | | | | | | | | Add asan support for various allocators and stack unpoisoning
| * | | Add asan support for various allocatorsLucas Perlind2025-05-061-11/+13
| | | |
* | | | Added alternate reduce-add/reduce-mul intrinsics.Barinzaya2025-05-051-0/+66
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | The new reduce_add/reduce_mul procs perform the corresponding arithmetic reduction in different orders than sequential order. These alternative orders can often offer better SIMD hardware utilization. Two different orders are added: pair-wise (operating on pairs of adjacent elements) or bisection-wise (operating element-wise on the first and last N/2 elements of the vector).
* | / Add `intrinsics.simd_indices`gingerBill2025-05-051-0/+17
| |/ |/|
* | Merge pull request #5098 from laytan/fix-nan-comparisonsgingerBill2025-05-021-1/+1
|\ \ | | | | | | fix variable NaN comparisons
| * | fix variable NaN comparisonsLaytan Laats2025-04-301-1/+1
| |/
* / Add attribute @(no_sanitize_address)Lucas Perlind2025-05-011-1/+1
|/ | | | | | | | | | | The purposes of this attribute is to let procedures opt-out of being instrumented with asan. Typically an allocator that includes 'in-band' meta-data will be accessing poisoned values (such as tlsf). Making asan work with these allocators becomes very challenging so just being to ignore asan within specific allocator procedures makes it easier to reason and removes the need to temporarily poison and unpoison allocator data.
* Fix `syscall_bsd` on NetBSD ARM64Feoramund2025-04-061-8/+31
|
* Merge pull request #4974 from harold-b/hb.fix-syscall-memory-depgingerBill2025-03-271-0/+10
|\ | | | | Add `~{memory}` clobber to syscall intrinsics for platforms where it was missing
| * Add `~{memory}` clobber to syscall intrinsics for platforms where it was not ↵Harold Brenes2025-03-261-0/+10
| | | | | | | | | | | | | | | | yet added. This fixes #4972 and #4588. As laytan asserts, there is no guarantee that a syscall will not modify memory that it just obtained from the user, or held onto via a previous syscall. Therefore this constraint should be required for all syscalls.
* | Fix #4866gingerBill2025-03-071-0/+1
|/
* Improve global array index to be on a per module basisgingerBill2025-02-251-1/+2
|
* Try to make globally generated variables deterministic in namegingerBill2025-02-251-3/+3
|
* Fix #4822gingerBill2025-02-241-2/+2
|
* Added simd_extract_lsbs intrinsic as well.Barinzaya2025-02-241-3/+7
| | | | | Equivalent to the simd_extract_msbs intrinsic, except it extracts the least significant bit of each element instead.
* Added simd_extract_msbs intrinsic.Barinzaya2025-02-241-0/+24
|
* reorganize tests and handle endianLaytan Laats2025-02-061-8/+5
|
* apply abs fix to constant system tooLaytan Laats2025-02-061-3/+3
|
* improve abs() on floats for more correct and faster resultsLaytan Laats2025-02-051-0/+28
|
* Add `#branch_location`gingerBill2025-01-011-1/+5
|
* compiler: remove viral `#force(_no)_inline`Laytan Laats2024-12-091-4/+0
| | | | | | | | | | | | | If a procedure was marked `#force_no_inline`, any procedure calls within it would also implicitly be. This is not expected for multiple reasons: 1. `#force(_no)_inline` on a call expr works differently than on a procedure literal. 2. Adding the attribute on it and every called proc blows up the amount of work for the inliner pass and may increase the time it takes. 3. Putting `#force_no_inline` on a procedure to keep executable size down (like we do for some map procedures), benchmark it, or find it in asm/ir has the added effect of slowing those procedures down significantly and not representing truth.
* ABI change: for indirect parameters size_of <= 16, do callee stack copygingerBill2024-12-051-0/+19
|
* check packed load and set alignment on all loads, not just lb_emit_loadLaytan Laats2024-10-251-3/+2
|
* add '#caller_expression'Laytan Laats2024-09-141-5/+57
|
* add support for linux_riscv64 and freestanding_riscv64Laytan2024-08-201-0/+25
|
* fix c_vararg bit_setLaytan Laats2024-08-111-5/+5
| | | | Fixes #4051
* Swap `reduce_any` and `reduce_all`Feoramund2024-08-061-2/+2
| | | | | `llvm.vector.reduce.or` will return true if any lane is true. `llvm.vector.reduce.and` will return true if all lanes are true.
* Add `intrinsics.masked_expand_load` and `intrinsics.masked_compress_store`gingerBill2024-08-051-6/+28
|
* Remove dead codegingerBill2024-08-051-1/+0
|
* Add `intrinsics.simd_masked_load` and `intrinsics.simd_masked_store`gingerBill2024-08-051-3/+15
|
* Add `intrinsics.simd_gather` and ``intrinsics.simd_scatter`gingerBill2024-08-051-0/+46
|
* Rename `add_sat` -> `saturating_add`gingerBill2024-08-051-10/+10
|
* Add `simd_reduce_any` and `simd_reduce_all`gingerBill2024-08-051-0/+17
|
* type is never a tuple hereLaytan Laats2024-07-161-3/+0
|
* fix `add_sat` and `sub_sat` intrinsicsLaytan Laats2024-07-161-6/+36
|
* Add intrinsics `add_sat` and `sub_sat`gingerBill2024-07-161-0/+6
|
* Begin work for `bit_set[...; [N]T]` (not working)gingerBill2024-07-151-0/+5
|
* Generate backing array in the case where there is no `DeclInfo` for the ↵gingerBill2024-07-151-6/+10
| | | | procedure body
* Add `slice` variable if not existsgingerBill2024-07-141-0/+4
|
* Reuse the slice value too for variadic parameters (LLVM >= 13)gingerBill2024-07-141-0/+11
|
* Calculate size and alignment, and reuse memory for all variadic calls within ↵gingerBill2024-07-141-8/+17
| | | | a procedure body
* Reuse slice variable for variadic parametersgingerBill2024-07-141-2/+6
|