@@ -12,14 +12,15 @@ define void @add_nsw_zext_fold_results_in_sext(i64 %len) {
12
12
; CHECK-NEXT: [[LEN_TRUNC:%.*]] = trunc i64 [[LEN]] to i32
13
13
; CHECK-NEXT: [[LZ:%.*]] = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 [[LEN_TRUNC]], i1 false)
14
14
; CHECK-NEXT: [[SUB_I:%.*]] = lshr i32 [[LZ]], 3
15
- ; CHECK-NEXT: [[ADD_I:%.*]] = sub i32 5, [[SUB_I]]
16
15
; CHECK-NEXT: [[PRECOND:%.*]] = icmp eq i32 [[SUB_I]], 5
17
16
; CHECK-NEXT: br i1 [[PRECOND]], label %[[EXIT:.*]], label %[[LOOP_PREHEADER:.*]]
18
17
; CHECK: [[LOOP_PREHEADER]]:
19
- ; CHECK-NEXT: [[TMP1:%.*]] = zext nneg i32 [[ADD_I]] to i64
18
+ ; CHECK-NEXT: [[TMP3:%.*]] = sub i32 0, [[SUB_I]]
19
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i32 [[TMP3]] to i64
20
+ ; CHECK-NEXT: [[TMP2:%.*]] = add nsw i64 [[TMP1]], 5
20
21
; CHECK-NEXT: br label %[[LOOP:.*]]
21
22
; CHECK: [[LOOP]]:
22
- ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[TMP1 ]], %[[LOOP_PREHEADER]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ]
23
+ ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[TMP2 ]], %[[LOOP_PREHEADER]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[LOOP]] ]
23
24
; CHECK-NEXT: [[IV:%.*]] = trunc nuw i64 [[INDVARS_IV]] to i32
24
25
; CHECK-NEXT: [[IV_NEXT:%.*]] = add i32 [[IV]], 1
25
26
; CHECK-NEXT: [[SH_PROM:%.*]] = zext nneg i32 [[IV_NEXT]] to i64
@@ -65,9 +66,9 @@ define void @add_nsw_zext_fold_results_in_sext_known_positive(i32 %mask, ptr %sr
65
66
; CHECK-NEXT: [[PRECOND:%.*]] = icmp slt i32 [[ADD]], 0
66
67
; CHECK-NEXT: br i1 [[PRECOND]], label %[[EXIT:.*]], label %[[PH:.*]]
67
68
; CHECK: [[PH]]:
68
- ; CHECK-NEXT: [[TMP0:%.*]] = sub i32 78 , [[SPEC_SELECT]]
69
- ; CHECK-NEXT: [[TMP1:%.*]] = zext nneg i32 [[TMP0]] to i64
70
- ; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1
69
+ ; CHECK-NEXT: [[TMP0:%.*]] = sub i32 0 , [[SPEC_SELECT]]
70
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i32 [[TMP0]] to i64
71
+ ; CHECK-NEXT: [[TMP2:%.*]] = add nsw i64 [[TMP1]], 79
71
72
; CHECK-NEXT: br label %[[LOOP:.*]]
72
73
; CHECK: [[LOOP]]:
73
74
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[SRC]], i64 [[TMP2]]
0 commit comments