gingerBill
fe533fb809
Improve llreg integer type generation for SysV ABI
2023-03-19 01:29:53 +00:00
gingerBill
1f5bb99548
Improve SysV ABI for multiple return values that fit into a single register; Fixes #2384
2023-03-19 00:51:57 +00:00
gingerBill
b9a2426e57
Merge branch 'master' into compiler-improvements-2022-12
2022-12-21 23:59:31 +00:00
gingerBill
81037b3091
Change the order of the args and ret for Arm64 ABI
2022-12-21 23:56:34 +00:00
gingerBill
6cdec65ca1
gb_internal LLVM backend
2022-12-18 22:32:05 +00:00
gingerBill
d88b052d2d
Naïve optimization of named _split_ multiple return valued when defer is never used
...
This is a naïve optimization but it helps a lot in the general case where callee temporary stack variables
are not allocated to represent the named return values by using that specific memory.
In the future, try to check if a specific named return value is ever used a `defer` within a procedure or not,
or is ever passed to a nested procedure call (e.g. possibly escapes).
2022-11-25 23:57:55 +00:00
gingerBill
d3c65b6ba5
Make split multiple return logic only work for the native Odin calling conventions
2022-11-24 13:16:02 +00:00
gingerBill
90415e4a6e
Add split multiple return to different ABIs
2022-11-24 12:14:19 +00:00
gingerBill
7ab591667a
Basic support for new ABI experiment on Win64
2022-11-23 16:25:09 +00:00
gingerBill
83f3ae14d5
Improve SysV ABI LLVM IR generation for development purposes
2022-10-30 22:50:24 +00:00
gingerBill
419eab5059
Force call site attributes for procedures (relating to #2121 causing ABI issues for intrinsics.objc_send)
2022-10-10 21:48:56 +01:00
gingerBill
aeacf3a9d8
Correct max alignment handling throughout the llvm backend
2022-08-24 13:07:41 +01:00
gingerBill
812823cad8
Wrap all LLVMGetElementType uses
2022-08-09 21:17:32 +01:00
gingerBill
cb0a59bb2c
Eliminate use of LLVMGetElementType for pointers
2022-08-09 15:36:18 +01:00
gingerBill
9614ca92f0
Fix #1834
2022-07-24 22:46:00 +01:00
gingerBill
b57edb89eb
Unify abi for wasm32 and the future wasm64
2022-05-21 13:18:04 +01:00
gingerBill
9eb4cbcbd2
Improve ABI design for wasm32 targets
2022-05-21 12:32:50 +01:00
gingerBill
10a311092b
Add basic arm32 ABI support (linux_arm32)
2022-05-01 23:15:06 +01:00
gingerBill
4a04a32e0a
Change target name to freestanding_amd64_sysv
2022-02-23 11:33:28 +00:00
gingerBill
1bec9e5331
Add freestanding_amd64_gnu
2022-02-20 14:19:52 +00:00
gingerBill
db6bd9b358
Allow sysv and win64 calling conventions to be used on any platform on amd64
2022-02-16 16:03:49 +00:00
gingerBill
29ebe0c3c9
Rename architecture 386 to i386
2022-01-15 17:40:00 +00:00
Platin21
86f831ddd1
This adds code which checks how big the return is and if it is to big returns the value via sret
2021-12-27 22:10:52 +01:00
Platin21
8dbeed8a9f
Removes unneeded lookups / Adds sret to call site which fixes the mac bug
2021-12-23 01:59:31 +01:00
gingerBill
a4b68b93f2
Modify ABI for the wasm32
2021-11-01 23:18:39 +00:00
gingerBill
5f51337a01
Add procs for wasm32
2021-10-31 19:00:01 +00:00
gingerBill
32506a34ff
Separate out the ABI for wasm32 from 386
2021-10-31 15:23:39 +00:00
gingerBill
5bc8a491a7
Begin work on supporting wasm64; Correct wasm32 compilation behaviour
2021-10-30 23:24:34 +01:00
gingerBill
a440d8d812
Improve use of vector muladd operations
2021-10-25 13:10:56 +01:00
gingerBill
036fa5cb24
Correct ABI for windows with LLVM
2021-10-02 18:12:34 +01:00
gingerBill
042dbda47f
Replace many uses of heap_allocator() with permanent_allocator()
2021-09-13 01:30:30 +01:00
gingerBill
76707e1d2f
Add sanity casts for 32/64 bit correctness
2021-07-12 11:03:12 +01:00
gingerBill
582f423b67
Improve vector arithmetic generation for array programming operations
2021-06-12 16:37:20 +01:00
gingerBill
28e9a4f79c
Replace js_wasm32 with freestanding_wasm32
2021-06-08 12:18:26 +01:00
gingerBill
b8f8d4c3a1
Modify ABI for the Odin calling conventions on SysV slightly
2021-05-22 11:33:08 +01:00
gingerBill
8d044fd442
Minor ABI change and cleanup
2021-05-17 17:08:25 +01:00
gingerBill
e08f39ec28
Remove unneeded assert
2021-05-11 16:20:50 +01:00
gingerBill
d353f97f91
Add byval with align, sret attributes for SysV
2021-05-11 13:30:27 +01:00
gingerBill
f31b09212a
Improve SysV ABI
2021-05-11 12:00:27 +01:00
gingerBill
ff6fdc7812
Correct SysV ABI for -> (f32, bool)
2021-05-10 21:16:26 +01:00
gingerBill
0d044eabac
Remove non-InContext type creations
2021-05-03 15:00:50 +01:00
gingerBill
54e6c50769
Implement f16 functionality
2021-04-01 10:06:00 +01:00
gingerBill
178e891c78
Fix some LLVM asserts by using LLVMConstNamedStruct everywhere
2021-03-19 15:47:10 +00:00
gingerBill
2a1bec9fbb
Clean up lb_end_procedure_body logic
2021-03-02 00:43:25 +00:00
gingerBill
302742689b
Patch win64 ABI problem caused by a bug in LLVM for 128 bit integers
2021-03-01 12:15:28 +00:00
gingerBill
84deee75cc
Make lb_create_enum_attribute ignore certain attributes (they are not properly supported by the actual LLVM C API)
2021-02-25 11:39:46 +00:00
gingerBill
58422711d1
Remove sret attribute in llvm_abi.cpp
2021-02-25 00:22:47 +00:00
gingerBill
ba817d153c
Get compiling on Mac Mini M1
2021-02-24 23:21:34 +00:00
gingerBill
2d88c6c6a5
Begin work on aarch64 ABI for -llvm-api
2021-02-24 16:49:19 +00:00
gingerBill
28ed310f31
Remove "pure" and "pure_none" calling conventions
2021-02-23 13:10:23 +00:00