mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
53 lines
1.8 KiB
C
53 lines
1.8 KiB
C
// #target: x64-darwin
|
|
int[<4>] baz = { 1, 4, 5, 7 };
|
|
|
|
fn void main()
|
|
{
|
|
int[<4>] foo = { 1, 2, 3, 4 };
|
|
int z = foo[0];
|
|
foo[2] = z + 1;
|
|
int[<4>] bar = {};
|
|
int[<4>] bar2 = { 1, z, 3, 4 };
|
|
int[<4>] bar3 = { [1] = z };
|
|
int[<4>] bar4 = { [0..3] = z };
|
|
}
|
|
|
|
/* #expect: vector_init.ll
|
|
|
|
@vector_init.baz = global <4 x i32> <i32 1, i32 4, i32 5, i32 7>, align 16
|
|
|
|
; Function Attrs: nounwind
|
|
define void @vector_init.main() #0 {
|
|
entry:
|
|
%foo = alloca <4 x i32>, align 16
|
|
%z = alloca i32, align 4
|
|
%bar = alloca <4 x i32>, align 16
|
|
%bar2 = alloca <4 x i32>, align 16
|
|
%bar3 = alloca <4 x i32>, align 16
|
|
%bar4 = alloca <4 x i32>, align 16
|
|
store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32>* %foo, align 16
|
|
%0 = load <4 x i32>, <4 x i32>* %foo, align 16
|
|
%1 = extractelement <4 x i32> %0, i64 0
|
|
store i32 %1, i32* %z, align 4
|
|
%2 = load <4 x i32>, <4 x i32>* %foo, align 16
|
|
%3 = load i32, i32* %z, align 4
|
|
%add = add i32 %3, 1
|
|
%elemset = insertelement <4 x i32> %2, i32 %add, i64 2
|
|
store <4 x i32> %elemset, <4 x i32>* %foo, align 16
|
|
store <4 x i32> zeroinitializer, <4 x i32>* %bar, align 16
|
|
%4 = load i32, i32* %z, align 4
|
|
%5 = insertelement <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>, i32 %4, i64 1
|
|
%6 = insertelement <4 x i32> %5, i32 3, i64 2
|
|
%7 = insertelement <4 x i32> %6, i32 4, i64 3
|
|
store <4 x i32> %7, <4 x i32>* %bar2, align 16
|
|
%8 = load i32, i32* %z, align 4
|
|
%9 = insertelement <4 x i32> zeroinitializer, i32 %8, i64 1
|
|
store <4 x i32> %9, <4 x i32>* %bar3, align 16
|
|
%10 = load i32, i32* %z, align 4
|
|
%11 = insertelement <4 x i32> zeroinitializer, i32 %10, i64 0
|
|
%12 = insertelement <4 x i32> %11, i32 %10, i64 1
|
|
%13 = insertelement <4 x i32> %12, i32 %10, i64 2
|
|
%14 = insertelement <4 x i32> %13, i32 %10, i64 3
|
|
store <4 x i32> %14, <4 x i32>* %bar4, align 16
|
|
ret void
|
|
}
|