@@ -51,6 +51,8 @@ void foo() {
5151 vi4 e = { x, 5 , 6 , x + 1 };
5252
5353 vi4 f = { 5 };
54+
55+ vi4 g = {};
5456}
5557
5658// CIR: %[[VEC_A:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["a"]
@@ -59,32 +61,58 @@ void foo() {
5961// CIR: %[[VEC_D:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["d", init]
6062// CIR: %[[VEC_E:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["e", init]
6163// CIR: %[[VEC_F:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["f", init]
62- // CIR: %[[VEC_D_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
64+ // CIR: %[[VEC_G:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["g", init]
65+ // CIR: %[[CONST_1:.*]] = cir.const #cir.int<1> : !s32i
66+ // CIR: %[[CONST_2:.*]] = cir.const #cir.int<2> : !s32i
67+ // CIR: %[[CONST_3:.*]] = cir.const #cir.int<3> : !s32i
68+ // CIR: %[[CONST_4:.*]] = cir.const #cir.int<4> : !s32i
69+ // CIR: %[[VEC_D_VAL:.*]] = cir.vec.create(%[[CONST_1]], %[[CONST_2]], %[[CONST_3]], %[[CONST_4]] :
70+ // CIR-SAME: !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
6371// CIR: cir.store %[[VEC_D_VAL]], %[[VEC_D]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
64- // CIR: %[[VEC_E_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
72+ // CIR: %[[GLOBAL_X:.*]] = cir.get_global @x : !cir.ptr<!s32i>
73+ // CIR: %[[X_VAL:.*]] = cir.load %[[GLOBAL_X]] : !cir.ptr<!s32i>, !s32i
74+ // CIR: %[[CONST_5:.*]] = cir.const #cir.int<5> : !s32i
75+ // CIR: %[[CONST_6:.*]] = cir.const #cir.int<6> : !s32i
76+ // CIR: %[[GLOBAL_X:.*]] = cir.get_global @x : !cir.ptr<!s32i>
77+ // CIR: %[[X:.*]] = cir.load %[[GLOBAL_X]] : !cir.ptr<!s32i>, !s32i
78+ // CIR: %[[CONST_1:.*]] = cir.const #cir.int<1> : !s32i
79+ // CIR: %[[X_PLUS_1:.*]] = cir.binop(add, %[[X]], %[[CONST_1]]) nsw : !s32i
80+ // CIR: %[[VEC_E_VAL:.*]] = cir.vec.create(%[[X_VAL]], %[[CONST_5]], %[[CONST_6]], %[[X_PLUS_1]] :
81+ // CIR-SAME: !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
6582// CIR: cir.store %[[VEC_E_VAL]], %[[VEC_E]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
66- // CIR: %[[VEC_F_VAL:.*]] = cir.vec.create({{.*}}, {{.*}}, {{.*}}, {{.*}} : !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
83+ // CIR: %[[CONST_5:.*]] = cir.const #cir.int<5> : !s32i
84+ // CIR: %[[CONST_0:.*]] = cir.const #cir.int<0> : !s32i
85+ // CIR: %[[VEC_F_VAL:.*]] = cir.vec.create(%[[CONST_5]], %[[CONST_0]], %[[CONST_0]], %[[CONST_0]] :
86+ // CIR-SAME: !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
6787// CIR: cir.store %[[VEC_F_VAL]], %[[VEC_F]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
88+ // CIR: %[[CONST_0:.*]] = cir.const #cir.int<0> : !s32i
89+ // CIR: %[[VEC_G_VAL:.*]] = cir.vec.create(%[[CONST_0]], %[[CONST_0]], %[[CONST_0]], %[[CONST_0]] :
90+ // CIR-SAME: !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
91+ // CIR: cir.store %[[VEC_G_VAL]], %[[VEC_G]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
6892
6993// LLVM: %[[VEC_A:.*]] = alloca <4 x i32>, i64 1, align 16
7094// LLVM: %[[VEC_B:.*]] = alloca <2 x double>, i64 1, align 16
7195// LLVM: %[[VEC_C:.*]] = alloca <2 x i64>, i64 1, align 16
7296// LLVM: %[[VEC_D:.*]] = alloca <4 x i32>, i64 1, align 16
7397// LLVM: %[[VEC_E:.*]] = alloca <4 x i32>, i64 1, align 16
7498// LLVM: %[[VEC_F:.*]] = alloca <4 x i32>, i64 1, align 16
99+ // LLVM: %[[VEC_G:.*]] = alloca <4 x i32>, i64 1, align 16
75100// LLVM: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_D]], align 16
76101// LLVM: store <4 x i32> {{.*}}, ptr %[[VEC_E]], align 16
77102// LLVM: store <4 x i32> <i32 5, i32 0, i32 0, i32 0>, ptr %[[VEC_F]], align 16
103+ // LLVM: store <4 x i32> zeroinitializer, ptr %[[VEC_G]], align 16
78104
79105// OGCG: %[[VEC_A:.*]] = alloca <4 x i32>, align 16
80106// OGCG: %[[VEC_B:.*]] = alloca <2 x double>, align 16
81107// OGCG: %[[VEC_C:.*]] = alloca <2 x i64>, align 16
82108// OGCG: %[[VEC_D:.*]] = alloca <4 x i32>, align 16
83109// OGCG: %[[VEC_E:.*]] = alloca <4 x i32>, align 16
84110// OGCG: %[[VEC_F:.*]] = alloca <4 x i32>, align 16
111+ // OGCG: %[[VEC_G:.*]] = alloca <4 x i32>, align 16
85112// OGCG: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_D]], align 16
86113// OGCG: store <4 x i32> {{.*}}, ptr %[[VEC_E]], align 16
87114// OGCG: store <4 x i32> <i32 5, i32 0, i32 0, i32 0>, ptr %[[VEC_F]], align 16
115+ // OGCG: store <4 x i32> zeroinitializer, ptr %[[VEC_G]], align 16
88116
89117void foo2 (vi4 p) {}
90118
0 commit comments