@@ -505,9 +505,9 @@ define i64 @test24b(i8* %P, i64 %A){
505
505
506
506
define i64 @test25 (i8* %P , i64 %A ){
507
507
; 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 ]]
511
511
;
512
512
%B = getelementptr inbounds [42 x i16 ], [42 x i16 ]* @Arr , i64 0 , i64 %A
513
513
%C = ptrtoint i16* %B to i64
@@ -520,9 +520,9 @@ define i64 @test25(i8* %P, i64 %A){
520
520
define i16 @test25_as1 (i8 addrspace (1 )* %P , i64 %A ) {
521
521
; CHECK-LABEL: @test25_as1(
522
522
; 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 ]]
526
526
;
527
527
%B = getelementptr inbounds [42 x i16 ], [42 x i16 ] addrspace (1 )* @Arr_as1 , i64 0 , i64 %A
528
528
%C = ptrtoint i16 addrspace (1 )* %B to i16
@@ -825,8 +825,8 @@ define i32 @test28commuted(i32 %x, i32 %y, i32 %z) {
825
825
826
826
define i64 @test29 (i8* %foo , i64 %i , i64 %j ) {
827
827
; 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 ]]
830
830
;
831
831
%gep1 = getelementptr inbounds i8 , i8* %foo , i64 %i
832
832
%gep2 = getelementptr inbounds i8 , i8* %foo , i64 %j
@@ -838,9 +838,9 @@ define i64 @test29(i8* %foo, i64 %i, i64 %j) {
838
838
839
839
define i64 @test30 (i8* %foo , i64 %i , i64 %j ) {
840
840
; 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 ]]
844
844
;
845
845
%bit = bitcast i8* %foo to i32*
846
846
%gep1 = getelementptr inbounds i32 , i32* %bit , i64 %i
@@ -853,9 +853,9 @@ define i64 @test30(i8* %foo, i64 %i, i64 %j) {
853
853
854
854
define i16 @test30_as1 (i8 addrspace (1 )* %foo , i16 %i , i16 %j ) {
855
855
; 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 ]]
859
859
;
860
860
%bit = bitcast i8 addrspace (1 )* %foo to i32 addrspace (1 )*
861
861
%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) {
1234
1234
; "%sub = i64 %i, %j, ret i64 %sub"
1235
1235
; gep1 and gep2 have only one use
1236
1236
; CHECK-LABEL: @test58(
1237
- ; CHECK-NEXT: [[GEP2_OFFS:%.*]] = add i64 [[J:%.*]], 4200
1238
1237
; 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]]
1241
1241
;
1242
1242
%gep1 = getelementptr inbounds [100 x [100 x i8 ]], [100 x [100 x i8 ]]* %foo , i64 0 , i64 42 , i64 %i
1243
1243
%gep2 = getelementptr inbounds [100 x [100 x i8 ]], [100 x [100 x i8 ]]* %foo , i64 0 , i64 42 , i64 %j
0 commit comments