@@ -51,6 +51,8 @@ void foo() {
51
51
vi4 e = { x, 5 , 6 , x + 1 };
52
52
53
53
vi4 f = { 5 };
54
+
55
+ vi4 g = {};
54
56
}
55
57
56
58
// CIR: %[[VEC_A:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["a"]
@@ -59,32 +61,58 @@ void foo() {
59
61
// CIR: %[[VEC_D:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["d", init]
60
62
// CIR: %[[VEC_E:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["e", init]
61
63
// 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>
63
71
// 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>
65
82
// 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>
67
87
// 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>>
68
92
69
93
// LLVM: %[[VEC_A:.*]] = alloca <4 x i32>, i64 1, align 16
70
94
// LLVM: %[[VEC_B:.*]] = alloca <2 x double>, i64 1, align 16
71
95
// LLVM: %[[VEC_C:.*]] = alloca <2 x i64>, i64 1, align 16
72
96
// LLVM: %[[VEC_D:.*]] = alloca <4 x i32>, i64 1, align 16
73
97
// LLVM: %[[VEC_E:.*]] = alloca <4 x i32>, i64 1, align 16
74
98
// LLVM: %[[VEC_F:.*]] = alloca <4 x i32>, i64 1, align 16
99
+ // LLVM: %[[VEC_G:.*]] = alloca <4 x i32>, i64 1, align 16
75
100
// LLVM: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_D]], align 16
76
101
// LLVM: store <4 x i32> {{.*}}, ptr %[[VEC_E]], align 16
77
102
// 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
78
104
79
105
// OGCG: %[[VEC_A:.*]] = alloca <4 x i32>, align 16
80
106
// OGCG: %[[VEC_B:.*]] = alloca <2 x double>, align 16
81
107
// OGCG: %[[VEC_C:.*]] = alloca <2 x i64>, align 16
82
108
// OGCG: %[[VEC_D:.*]] = alloca <4 x i32>, align 16
83
109
// OGCG: %[[VEC_E:.*]] = alloca <4 x i32>, align 16
84
110
// OGCG: %[[VEC_F:.*]] = alloca <4 x i32>, align 16
111
+ // OGCG: %[[VEC_G:.*]] = alloca <4 x i32>, align 16
85
112
// OGCG: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC_D]], align 16
86
113
// OGCG: store <4 x i32> {{.*}}, ptr %[[VEC_E]], align 16
87
114
// 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
88
116
89
117
void foo2 (vi4 p) {}
90
118
0 commit comments