@@ -48,27 +48,56 @@ vi4 vec_e = { 1, 2, 3, 4 };
4848
4949// OGCG: @[[VEC_E:.*]] = global <4 x i32> <i32 1, i32 2, i32 3, i32 4>
5050
51+ int x = 5 ;
52+
5153void foo () {
5254 vi4 a;
5355 vi3 b;
5456 vi2 c;
5557 vd2 d;
58+
59+ vi4 e = { 1 , 2 , 3 , 4 };
60+
61+ vi4 f = { x, 5 , 6 , x + 1 };
62+
63+ vi4 g = { 5 };
5664}
5765
5866// CIR: %[[VEC_A:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["a"]
5967// CIR: %[[VEC_B:.*]] = cir.alloca !cir.vector<3 x !s32i>, !cir.ptr<!cir.vector<3 x !s32i>>, ["b"]
6068// CIR: %[[VEC_C:.*]] = cir.alloca !cir.vector<2 x !s32i>, !cir.ptr<!cir.vector<2 x !s32i>>, ["c"]
6169// CIR: %[[VEC_D:.*]] = cir.alloca !cir.vector<2 x !cir.double>, !cir.ptr<!cir.vector<2 x !cir.double>>, ["d"]
70+ // CIR: %[[VEC_E:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["e", init]
71+ // CIR: %[[VEC_F:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["f", init]
72+ // CIR: %[[VEC_G:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["g", init]
73+ // CIR: %[[VEC_E_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
74+ // CIR: cir.store %[[VEC_E_VAL]], %[[VEC_E]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
75+ // CIR: %[[VEC_F_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
76+ // CIR: cir.store %[[VEC_F_VAL]], %[[VEC_F]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
77+ // CIR: %[[VEC_G_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
78+ // CIR: cir.store %[[VEC_G_VAL]], %[[VEC_G]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
6279
6380// LLVM: %[[VEC_A:.*]] = alloca <4 x i32>, i64 1, align 16
6481// LLVM: %[[VEC_B:.*]] = alloca <3 x i32>, i64 1, align 16
6582// LLVM: %[[VEC_C:.*]] = alloca <2 x i32>, i64 1, align 8
6683// LLVM: %[[VEC_D:.*]] = alloca <2 x double>, i64 1, align 16
84+ // LLVM: %[[VEC_E:.*]] = alloca <4 x i32>, i64 1, align 16
85+ // LLVM: %[[VEC_F:.*]] = alloca <4 x i32>, i64 1, align 16
86+ // LLVM: %[[VEC_G:.*]] = alloca <4 x i32>, i64 1, align 16
87+ // LLVM: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_E]], align 16
88+ // LLVM: store <4 x i32> {{.*}}, ptr %[[VEC_F]], align 16
89+ // LLVM: store <4 x i32> <i32 5, i32 0, i32 0, i32 0>, ptr %[[VEC_G]], align 16
6790
6891// OGCG: %[[VEC_A:.*]] = alloca <4 x i32>, align 16
6992// OGCG: %[[VEC_B:.*]] = alloca <3 x i32>, align 16
7093// OGCG: %[[VEC_C:.*]] = alloca <2 x i32>, align 8
7194// OGCG: %[[VEC_D:.*]] = alloca <2 x double>, align 16
95+ // OGCG: %[[VEC_E:.*]] = alloca <4 x i32>, align 16
96+ // OGCG: %[[VEC_F:.*]] = alloca <4 x i32>, align 16
97+ // OGCG: %[[VEC_G:.*]] = alloca <4 x i32>, align 16
98+ // OGCG: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_E]], align 16
99+ // OGCG: store <4 x i32> {{.*}}, ptr %[[VEC_F]], align 16
100+ // OGCG: store <4 x i32> <i32 5, i32 0, i32 0, i32 0>, ptr %[[VEC_G]], align 16
72101
73102void foo2 (vi4 p) {}
74103
0 commit comments