aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Restrict `#no_capture` to pointer-like types onlygingerBill2024-07-141-1/+3
|
* Make `#no_capture` map to `nocapture`gingerBill2024-07-141-0/+3
|
* Mock out `#no_capture` for future usegingerBill2024-07-141-19/+13
|
* Add `#no_capture args: ..T` to reuse the backing array stack memorygingerBill2024-07-141-1/+26
|
* remove misleading `@(optimization_mode)` values and make "none" inhibit ↵Laytan Laats2024-07-081-7/+1
| | | | optimizations
* disallow non-global foreign import of variables on wasmLaytan Laats2024-06-281-1/+1
|
* Add `intrinsics.syscall_bsd`Feoramund2024-06-121-44/+134
| | | | | | This is a BSD-style syscall that checks for a high Carry Flag as the error state. If the CF is high, the boolean return value is false, and if it is low (no errors) then the boolean return value is true.
* fix unreachable hit when param and/or return have complex initsLaytan Laats2024-06-091-3/+2
| | | | Fixes #3630
* fix passing pointer to constant in non-odin cclaytan2024-06-041-9/+1
|
* Merge pull request #3570 from jasonKercher/linux-arm32gingerBill2024-05-201-2/+2
|\ | | | | Get the compiler to build and work on arm32 Linux
| * arm32 now compiles and runs demojasonkercher2024-05-101-2/+2
| |
* | Fix `intrinsics.ptr_sub`gingerBill2024-05-191-2/+3
| |
* | fix 6 argument syscall on i386jason2024-05-101-8/+2
|/
* compiler: improve target features supportLaytan Laats2024-05-021-10/+17
|
* fix direct proc args debug infoLaytan Laats2024-04-221-11/+2
|
* fix wasm atomicsLaytan Laats2024-04-061-10/+5
| | | | Fixes #2745
* fix lbArg_Ignore logicLaytan Laats2024-04-041-1/+5
| | | | Fixes #2698
* fix untyped nil into c varargsLaytan Laats2024-04-021-0/+6
| | | | Fixes #2842