Files
c3c/test/test_suite/abi/sysv_vec_array_indirect.c3t
Christoffer Lerno 423152202f Dev (#2545)
* Optimize vector load / store. Fixes to alignment. Support typedef with `@simd` and `@align` #2543. Update vector ABI #2542
* Fix alignment issue with indirect arguments.
2025-10-25 12:31:06 +02:00

33 lines
804 B
Plaintext

// #target: linux-x64
module test;
import std;
fn void test(double[<3>] x)
{
double[<3>]* y = &x;
}
fn int main()
{
test({ 1, 2, 3 });
return 0;
}
/* #expect: test.ll
define void @test.test(ptr byval([3 x double]) align 8 %0) #0 {
entry:
%x = alloca <3 x double>, align 32
%y = alloca ptr, align 8
%1 = load <3 x double>, ptr %0, align 8
%expandvec = shufflevector <3 x double> %1, <3 x double> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>
store <4 x double> %expandvec, ptr %x, align 32
store ptr %x, ptr %y, align 8
ret void
}
entry:
%indirectarg = alloca [3 x double], align 8
store [3 x double] [double 1.000000e+00, double 2.000000e+00, double 3.000000e+00], ptr %indirectarg, align 8
call void @test.test(ptr byval([3 x double]) align 8 %indirectarg)
ret i32 0
}