@@ -109,3 +109,36 @@ void foo2(vi4 p) {}
109109
110110// OGCG: %[[VEC_A:.*]] = alloca <4 x i32>, align 16
111111// OGCG: store <4 x i32> %{{.*}}, ptr %[[VEC_A]], align 16
112+
113+ void foo3 () {
114+ vi4 a = { 1 , 2 , 3 , 4 };
115+ int e = a[1 ];
116+ }
117+
118+ // CIR: %[[VEC:.*]] = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, ["a", init]
119+ // CIR: %[[INIT:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init]
120+ // CIR: %[[CONST_1:.*]] = cir.const #cir.int<1> : !s32i
121+ // CIR: %[[CONST_2:.*]] = cir.const #cir.int<2> : !s32i
122+ // CIR: %[[CONST_3:.*]] = cir.const #cir.int<3> : !s32i
123+ // CIR: %[[CONST_4:.*]] = cir.const #cir.int<4> : !s32i
124+ // CIR: %[[VEC_VAL:.*]] = cir.vec.create(%[[CONST_1]], %[[CONST_2]], %[[CONST_3]], %[[CONST_4]] :
125+ // CIR-SAME: !s32i, !s32i, !s32i, !s32i) : !cir.vector<4 x !s32i>
126+ // CIR: cir.store %[[VEC_VAL]], %[[VEC]] : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
127+ // CIR: %[[TMP:.*]] = cir.load %[[VEC]] : !cir.ptr<!cir.vector<4 x !s32i>>, !cir.vector<4 x !s32i>
128+ // CIR: %[[IDX:.*]] = cir.const #cir.int<1> : !s32i
129+ // CIR: %[[ELE:.*]] = cir.vec.extract %[[TMP]][%[[IDX]] : !s32i] : !cir.vector<4 x !s32i>
130+ // CIR: cir.store %[[ELE]], %[[INIT]] : !s32i, !cir.ptr<!s32i>
131+
132+ // LLVM: %[[VEC:.*]] = alloca <4 x i32>, i64 1, align 16
133+ // LLVM: %[[INIT:.*]] = alloca i32, i64 1, align 4
134+ // LLVM: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC]], align 16
135+ // LLVM: %[[TMP:.*]] = load <4 x i32>, ptr %[[VEC]], align 16
136+ // LLVM: %[[ELE:.*]] = extractelement <4 x i32> %[[TMP]], i32 1
137+ // LLVM: store i32 %[[ELE]], ptr %[[INIT]], align 4
138+
139+ // OGCG: %[[VEC:.*]] = alloca <4 x i32>, align 16
140+ // OGCG: %[[INIT:.*]] = alloca i32, align 4
141+ // OGCG: store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, ptr %[[VEC]], align 16
142+ // OGCG: %[[TMP:.*]] = load <4 x i32>, ptr %[[VEC]], align 16
143+ // OGCG: %[[ELE:.*]] = extractelement <4 x i32> %[[TMP]], i32 1
144+ // OGCG: store i32 %[[ELE]], ptr %[[INIT]], align 4
0 commit comments