@@ -505,9 +505,9 @@ define i64 @test24b(i8* %P, i64 %A){
505505
506506define i64 @test25 (i8* %P , i64 %A ){
507507; CHECK-LABEL: @test25(
508- ; CHECK-NEXT: [[B_IDX_NEG_NEG :%.*]] = shl i64 [[A:%.*]], 1
509- ; CHECK-NEXT: [[GEPDIFF_NEG :%.*]] = add i64 [[B_IDX_NEG_NEG ]], -84
510- ; CHECK-NEXT: ret i64 [[GEPDIFF_NEG ]]
508+ ; CHECK-NEXT: [[B_IDX :%.*]] = shl nsw i64 [[A:%.*]], 1
509+ ; CHECK-NEXT: [[GEPDIFF :%.*]] = add i64 [[B_IDX ]], -84
510+ ; CHECK-NEXT: ret i64 [[GEPDIFF ]]
511511;
512512 %B = getelementptr inbounds [42 x i16 ], [42 x i16 ]* @Arr , i64 0 , i64 %A
513513 %C = ptrtoint i16* %B to i64
@@ -520,9 +520,9 @@ define i64 @test25(i8* %P, i64 %A){
520520define i16 @test25_as1 (i8 addrspace (1 )* %P , i64 %A ) {
521521; CHECK-LABEL: @test25_as1(
522522; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[A:%.*]] to i16
523- ; CHECK-NEXT: [[B_IDX_NEG_NEG :%.*]] = shl i16 [[TMP1]], 1
524- ; CHECK-NEXT: [[GEPDIFF_NEG :%.*]] = add i16 [[B_IDX_NEG_NEG ]], -84
525- ; CHECK-NEXT: ret i16 [[GEPDIFF_NEG ]]
523+ ; CHECK-NEXT: [[B_IDX :%.*]] = shl nsw i16 [[TMP1]], 1
524+ ; CHECK-NEXT: [[GEPDIFF :%.*]] = add i16 [[B_IDX ]], -84
525+ ; CHECK-NEXT: ret i16 [[GEPDIFF ]]
526526;
527527 %B = getelementptr inbounds [42 x i16 ], [42 x i16 ] addrspace (1 )* @Arr_as1 , i64 0 , i64 %A
528528 %C = ptrtoint i16 addrspace (1 )* %B to i16
@@ -825,8 +825,8 @@ define i32 @test28commuted(i32 %x, i32 %y, i32 %z) {
825825
826826define i64 @test29 (i8* %foo , i64 %i , i64 %j ) {
827827; CHECK-LABEL: @test29(
828- ; CHECK-NEXT: [[GEPDIFF_NEG :%.*]] = sub i64 [[I:%.*]], [[J:%.*]]
829- ; CHECK-NEXT: ret i64 [[GEPDIFF_NEG ]]
828+ ; CHECK-NEXT: [[GEPDIFF :%.*]] = sub i64 [[I:%.*]], [[J:%.*]]
829+ ; CHECK-NEXT: ret i64 [[GEPDIFF ]]
830830;
831831 %gep1 = getelementptr inbounds i8 , i8* %foo , i64 %i
832832 %gep2 = getelementptr inbounds i8 , i8* %foo , i64 %j
@@ -838,9 +838,9 @@ define i64 @test29(i8* %foo, i64 %i, i64 %j) {
838838
839839define i64 @test30 (i8* %foo , i64 %i , i64 %j ) {
840840; CHECK-LABEL: @test30(
841- ; CHECK-NEXT: [[GEP1_IDX_NEG_NEG :%.*]] = shl i64 [[I:%.*]], 2
842- ; CHECK-NEXT: [[GEPDIFF_NEG :%.*]] = sub i64 [[GEP1_IDX_NEG_NEG ]], [[J:%.*]]
843- ; CHECK-NEXT: ret i64 [[GEPDIFF_NEG ]]
841+ ; CHECK-NEXT: [[GEP1_IDX :%.*]] = shl nsw i64 [[I:%.*]], 2
842+ ; CHECK-NEXT: [[GEPDIFF :%.*]] = sub i64 [[GEP1_IDX ]], [[J:%.*]]
843+ ; CHECK-NEXT: ret i64 [[GEPDIFF ]]
844844;
845845 %bit = bitcast i8* %foo to i32*
846846 %gep1 = getelementptr inbounds i32 , i32* %bit , i64 %i
@@ -853,9 +853,9 @@ define i64 @test30(i8* %foo, i64 %i, i64 %j) {
853853
854854define i16 @test30_as1 (i8 addrspace (1 )* %foo , i16 %i , i16 %j ) {
855855; CHECK-LABEL: @test30_as1(
856- ; CHECK-NEXT: [[GEP1_IDX_NEG_NEG :%.*]] = shl i16 [[I:%.*]], 2
857- ; CHECK-NEXT: [[GEPDIFF_NEG :%.*]] = sub i16 [[GEP1_IDX_NEG_NEG ]], [[J:%.*]]
858- ; CHECK-NEXT: ret i16 [[GEPDIFF_NEG ]]
856+ ; CHECK-NEXT: [[GEP1_IDX :%.*]] = shl nsw i16 [[I:%.*]], 2
857+ ; CHECK-NEXT: [[GEPDIFF :%.*]] = sub i16 [[GEP1_IDX ]], [[J:%.*]]
858+ ; CHECK-NEXT: ret i16 [[GEPDIFF ]]
859859;
860860 %bit = bitcast i8 addrspace (1 )* %foo to i32 addrspace (1 )*
861861 %gep1 = getelementptr inbounds i32 , i32 addrspace (1 )* %bit , i16 %i
@@ -1234,10 +1234,10 @@ define i64 @test58([100 x [100 x i8]]* %foo, i64 %i, i64 %j) {
12341234; "%sub = i64 %i, %j, ret i64 %sub"
12351235; gep1 and gep2 have only one use
12361236; CHECK-LABEL: @test58(
1237- ; CHECK-NEXT: [[GEP2_OFFS:%.*]] = add i64 [[J:%.*]], 4200
12381237; CHECK-NEXT: [[GEP1_OFFS:%.*]] = add i64 [[I:%.*]], 4200
1239- ; CHECK-NEXT: [[GEPDIFF_NEG:%.*]] = sub i64 [[GEP1_OFFS]], [[GEP2_OFFS]]
1240- ; CHECK-NEXT: ret i64 [[GEPDIFF_NEG]]
1238+ ; CHECK-NEXT: [[GEP2_OFFS:%.*]] = add i64 [[J:%.*]], 4200
1239+ ; CHECK-NEXT: [[GEPDIFF:%.*]] = sub i64 [[GEP1_OFFS]], [[GEP2_OFFS]]
1240+ ; CHECK-NEXT: ret i64 [[GEPDIFF]]
12411241;
12421242 %gep1 = getelementptr inbounds [100 x [100 x i8 ]], [100 x [100 x i8 ]]* %foo , i64 0 , i64 42 , i64 %i
12431243 %gep2 = getelementptr inbounds [100 x [100 x i8 ]], [100 x [100 x i8 ]]* %foo , i64 0 , i64 42 , i64 %j
0 commit comments