Veikka Tuominen
aa626deadd
llvm: implement explicit Win64 and SysV calling conventions
2023-01-22 01:04:20 +02:00
Veikka Tuominen
fe6dcdba14
Merge pull request #14357 from kcbanner/llvm_byval_struct
...
llvm: implement Stdcall calling convention
2023-01-20 04:38:49 +02:00
Veikka Tuominen
2b7678bc42
llvm: implement Stdcall return types
2023-01-19 16:13:52 +02:00
kcbanner
5949851074
llvm: pass non-scalars as byref in .Stdcall
...
- add c_abi tests for .Stdcall
- enable (x86|x86_64)-windows-gnu in the c_abi tests
2023-01-19 00:37:56 -05:00
Veikka Tuominen
24646b8b5d
windows x86_64 C ABI: pass byref structs as byref_mut
2023-01-17 20:28:43 +02:00
Veikka Tuominen
0013042cbd
llvm: correctly handle C ABI structs with f32/f64 alignment differences
...
Closes #13830
2023-01-14 16:26:50 +02:00
Veikka Tuominen
5572c67e73
add C ABI tests for exotic float types
2023-01-14 16:26:50 +02:00
Veikka Tuominen
474848ac0b
also run C ABI tests with -OReleaseFast
2023-01-14 16:26:50 +02:00
Veikka Tuominen
9f23702c21
llvm: fix C ABI for <=256 bit vectors
...
Closes #13918
2022-12-20 18:34:33 +02:00
Veikka Tuominen
fc5209c139
llvm: fix x86_64 sysV ABI of big vectors on avx512 enabled CPUs
...
Closes #13629
2022-11-23 00:05:07 +02:00
Andrew Kelley
5e42378227
disable failing C ABI test
...
see tracking issue #13629
2022-11-22 13:06:09 -07:00
Veikka Tuominen
d968d9d103
llvm: add attributes to the arguments of function pointer calls
...
Closes #13605
2022-11-20 20:25:12 +02:00
Veikka Tuominen
9e7293619f
llvm: aarch64 C ABI: pass byref params as mutable pointers
...
Closes #13597
2022-11-20 20:25:12 +02:00
Veikka Tuominen
08a00f0d1c
llvm: use alignment of ABI return type when it differs from raw return type
...
This would previously cause miscompilations when the ABI type had
bigger alignment than the raw type.
2022-11-20 20:25:12 +02:00
Guillaume Wenzek
476b946802
compute LLVMTypes in ParamTypeIterator ( #13592 )
...
follow up on #13376 - fixes a bug in the x86_64 C ABI.
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2022-11-20 01:14:02 -08:00
Guillaume Wenzek
5221c90164
add C ABI tests with double
...
const DC = extern struct { v1: f64, v2: u8 };
const CFF = extern struct { v1: u8, v2: f32, v3: f32 };
const PD = extern struct { v1: ?*anyopaque, v2: f64 };
Signed-off-by: Guillaume Wenzek <gwenzek@users.noreply.github.com>
2022-11-18 14:05:25 +02:00
Ali Chraghi
f5f1f8c666
all: rename i386 to x86
2022-11-04 00:09:27 +03:30
Veikka Tuominen
f2a7aba586
x86_64 llvm: correct lowering of ptr sized float struct
...
Closes #13211
2022-10-22 22:00:59 +03:00
Veikka Tuominen
3f41979061
replace some panics with try in C ABI tests
2022-10-22 14:52:26 +03:00
Veikka Tuominen
5e0b4836a1
stage2: implement RISCV C ABI
2022-10-22 14:52:26 +03:00
Veikka Tuominen
8fa91939a8
build.zig: separate C ABI tests from standalone tests
2022-10-22 11:31:41 +03:00
Veikka Tuominen
12a2ccfb45
make C ABI tests compile on powerpc
2022-10-22 11:31:41 +03:00
Veikka Tuominen
031c768cc8
add C ABI tests for simd vectors
2022-10-22 11:31:41 +03:00
Veikka Tuominen
9ae78a5890
stage2: implement ARM C ABI
...
Six new passing tests and the previously incorrectly passing
complex tests are now skipped.
2022-10-21 18:07:11 +03:00
Veikka Tuominen
2609e33ab0
make C ABI tests compile on arm, mips and riscv
...
x86_64 24/25
x86 15/25
aarch64 25/25 - all
arm 18/25
mips 10/24
riscv64 13/25
wasm32 25/25 - all
2022-10-20 20:11:12 +03:00
Veikka Tuominen
646d927c79
stage2: fix handling of aarch64 C ABI float array like structs
...
Closes #11702
Closes #13125
2022-10-20 20:11:12 +03:00
Veikka Tuominen
7e946bc790
make C ABI tests compile on i386
2022-10-20 20:11:12 +03:00
Veikka Tuominen
51491186cb
stage2: fix x86_64 C ABI of struct with array member
...
Closes #12185
2022-10-20 20:11:12 +03:00
Cody Tapscott
a06185f362
C ABI: Add tests for complex float/double support
...
These tests will be failing on many platforms until #8465 is resolved.
Luckily, the particular function signature used for __divXc3 and __mulXc3
seems to be OK on x86-64.
2022-10-09 23:24:29 -07:00
Cody Tapscott
e165b8b223
stage2: Fix multiple_llvm_int parameter passing
...
Small iteration oopsie
We could really use some more comprehensive C ABI tests.
2022-09-28 12:48:28 +03:00
Veikka Tuominen
9ce841a0f0
stage2 llvm: implement aarch64 C ABI
...
... at least enough to pass all the current tests.
2022-09-04 18:46:56 +03:00
Veikka Tuominen
b83c037f9f
Sema: only ABI sized packed structs are extern compatible
2022-09-03 01:04:46 +03:00
Luuk de Gram
1eb22e7ad6
wasm: skip unimplemented behavior test
...
Since now the size of a c_longdouble is correctly 16 bytes,
the test is no longer passing. It was previously accidentally passing
due to incorrect sizing and it not being larger than the size
of a f64.
disable long_double test for windows
2022-08-28 17:50:07 +02:00
Luuk de Gram
91dba79c48
wasm: fix abi size of c_longdouble
...
According to https://github.com/WebAssembly/tool-conventions/blob/main/BasicCABI.md
the size of c's long double is 16 bytes for Wasm, rather than 8 bytes
which was the value previously in the compiler. This ensures
we not only pass the correct value, but also creates the correct
function signature needed to pass the Wasm validator.
This also adds an additional test case in c_abi tests.
2022-08-26 21:01:05 +02:00
Andrew Kelley
e2d4709779
C ABI tests no longer apply to only stage1
2022-07-26 14:51:45 -07:00