%B = insertelement <4 x i32> %A, i32 undef, i32 1
ret <4 x i32> %B
}
+
+define <8 x i8> @extract_insert_same_vec_and_index(<8 x i8> %in) {
+; CHECK-LABEL: @extract_insert_same_vec_and_index(
+; CHECK-NEXT: [[VAL:%.*]] = extractelement <8 x i8> [[IN:%.*]], i32 5
+; CHECK-NEXT: [[VEC:%.*]] = insertelement <8 x i8> [[IN]], i8 [[VAL]], i32 5
+; CHECK-NEXT: ret <8 x i8> [[VEC]]
+;
+ %val = extractelement <8 x i8> %in, i32 5
+ %vec = insertelement <8 x i8> %in, i8 %val, i32 5
+ ret <8 x i8> %vec
+}
+
+define <8 x i8> @extract_insert_same_vec_and_index2(<8 x i8> %in, i32 %index) {
+; CHECK-LABEL: @extract_insert_same_vec_and_index2(
+; CHECK-NEXT: [[VAL:%.*]] = extractelement <8 x i8> [[IN:%.*]], i32 [[INDEX:%.*]]
+; CHECK-NEXT: [[VEC:%.*]] = insertelement <8 x i8> [[IN]], i8 [[VAL]], i32 [[INDEX]]
+; CHECK-NEXT: ret <8 x i8> [[VEC]]
+;
+ %val = extractelement <8 x i8> %in, i32 %index
+ %vec = insertelement <8 x i8> %in, i8 %val, i32 %index
+ ret <8 x i8> %vec
+}