@@ -699,3 +699,33 @@ define i32 @test_shufflevector_v4s32_v2s32(i32 %arg1, i32 %arg2, i32 %arg3, i32
699
699
%res = extractelement <2 x i32 > %shuffle , i32 0
700
700
ret i32 %res
701
701
}
702
+
703
+ %struct.v2s32 = type { <2 x i32 > }
704
+
705
+ define i32 @test_constantstruct_v2s32 () {
706
+ ; CHECK-LABEL: name: test_constantstruct_v2s32
707
+ ; CHECK: [[C1:%[0-9]+]](s32) = G_CONSTANT i32 1
708
+ ; CHECK: [[C2:%[0-9]+]](s32) = G_CONSTANT i32 2
709
+ ; CHECK: [[VEC:%[0-9]+]](<2 x s32>) = G_MERGE_VALUES [[C1]](s32), [[C2]](s32)
710
+ ; CHECK: G_EXTRACT_VECTOR_ELT [[VEC]](<2 x s32>)
711
+ %vec = extractvalue %struct.v2s32 {<2 x i32 ><i32 1 , i32 2 >}, 0
712
+ %elt = extractelement <2 x i32 > %vec , i32 0
713
+ ret i32 %elt
714
+ }
715
+
716
+ %struct.v2s32.s32.s32 = type { <2 x i32 >, i32 , i32 }
717
+
718
+ define i32 @test_constantstruct_v2s32_s32_s32 () {
719
+ ; CHECK-LABEL: name: test_constantstruct_v2s32_s32_s32
720
+ ; CHECK: [[C1:%[0-9]+]](s32) = G_CONSTANT i32 1
721
+ ; CHECK: [[C2:%[0-9]+]](s32) = G_CONSTANT i32 2
722
+ ; CHECK: [[VEC:%[0-9]+]](<2 x s32>) = G_MERGE_VALUES [[C1]](s32), [[C2]](s32)
723
+ ; CHECK: [[C3:%[0-9]+]](s32) = G_CONSTANT i32 3
724
+ ; CHECK: [[C4:%[0-9]+]](s32) = G_CONSTANT i32 4
725
+ ; CHECK: [[CS:%[0-9]+]](s128) = G_SEQUENCE [[VEC]](<2 x s32>), 0, [[C3]](s32), 64, [[C4]](s32), 96
726
+ ; CHECK: [[EXT:%[0-9]+]](<2 x s32>) = G_EXTRACT [[CS]](s128), 0
727
+ ; CHECK: G_EXTRACT_VECTOR_ELT [[EXT]](<2 x s32>)
728
+ %vec = extractvalue %struct.v2s32.s32.s32 {<2 x i32 ><i32 1 , i32 2 >, i32 3 , i32 4 }, 0
729
+ %elt = extractelement <2 x i32 > %vec , i32 0
730
+ ret i32 %elt
731
+ }
0 commit comments