@@ -995,3 +995,39 @@ define i64 @multiple_geps_inbounds_nuw(ptr %base, i64 %idx, i64 %idx2) {
995
995
%d = sub i64 %i2 , %i1
996
996
ret i64 %d
997
997
}
998
+
999
+ define <2 x i64 > @splat_geps (ptr %base , <2 x i64 > %idx1 , <2 x i64 > %idx2 ) {
1000
+ ; CHECK-LABEL: @splat_geps(
1001
+ ; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], <2 x i64> [[IDX1:%.*]]
1002
+ ; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i8, ptr [[BASE]], <2 x i64> [[IDX2:%.*]]
1003
+ ; CHECK-NEXT: [[GEP1_INT:%.*]] = ptrtoint <2 x ptr> [[GEP1]] to <2 x i64>
1004
+ ; CHECK-NEXT: [[GEP2_INT:%.*]] = ptrtoint <2 x ptr> [[GEP2]] to <2 x i64>
1005
+ ; CHECK-NEXT: [[D:%.*]] = sub <2 x i64> [[GEP2_INT]], [[GEP1_INT]]
1006
+ ; CHECK-NEXT: ret <2 x i64> [[D]]
1007
+ ;
1008
+ %gep1 = getelementptr inbounds i8 , ptr %base , <2 x i64 > %idx1
1009
+ %gep2 = getelementptr inbounds i8 , ptr %base , <2 x i64 > %idx2
1010
+ %gep1.int = ptrtoint <2 x ptr > %gep1 to <2 x i64 >
1011
+ %gep2.int = ptrtoint <2 x ptr > %gep2 to <2 x i64 >
1012
+ %d = sub <2 x i64 > %gep2.int , %gep1.int
1013
+ ret <2 x i64 > %d
1014
+ }
1015
+
1016
+ define <2 x i64 > @splat_geps_multiple (ptr %base , i64 %idx0 , <2 x i64 > %idx1 , <2 x i64 > %idx2 ) {
1017
+ ; CHECK-LABEL: @splat_geps_multiple(
1018
+ ; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds i8, ptr [[BASE:%.*]], i64 [[IDX0:%.*]]
1019
+ ; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds i8, ptr [[GEP0]], <2 x i64> [[IDX1:%.*]]
1020
+ ; CHECK-NEXT: [[GEP2:%.*]] = getelementptr inbounds i8, ptr [[BASE]], <2 x i64> [[IDX2:%.*]]
1021
+ ; CHECK-NEXT: [[GEP1_INT:%.*]] = ptrtoint <2 x ptr> [[GEP1]] to <2 x i64>
1022
+ ; CHECK-NEXT: [[GEP2_INT:%.*]] = ptrtoint <2 x ptr> [[GEP2]] to <2 x i64>
1023
+ ; CHECK-NEXT: [[D:%.*]] = sub <2 x i64> [[GEP2_INT]], [[GEP1_INT]]
1024
+ ; CHECK-NEXT: ret <2 x i64> [[D]]
1025
+ ;
1026
+ %gep0 = getelementptr inbounds i8 , ptr %base , i64 %idx0
1027
+ %gep1 = getelementptr inbounds i8 , ptr %gep0 , <2 x i64 > %idx1
1028
+ %gep2 = getelementptr inbounds i8 , ptr %base , <2 x i64 > %idx2
1029
+ %gep1.int = ptrtoint <2 x ptr > %gep1 to <2 x i64 >
1030
+ %gep2.int = ptrtoint <2 x ptr > %gep2 to <2 x i64 >
1031
+ %d = sub <2 x i64 > %gep2.int , %gep1.int
1032
+ ret <2 x i64 > %d
1033
+ }
0 commit comments