@@ -11,11 +11,11 @@ define void @promoteTwoOne(i32 %i, i32 %j, ptr %P1, ptr %P2 ) {
11
11
; CHECK-LABEL: define void @promoteTwoOne(
12
12
; CHECK-SAME: i32 [[I:%.*]], i32 [[J:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]]) {
13
13
; CHECK-NEXT: entry:
14
- ; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[I]], [[J]]
15
- ; CHECK-NEXT: [[S:%.*]] = sext i32 [[ADD]] to i64
14
+ ; CHECK-NEXT: [[S2:%.*]] = sext i32 [[I]] to i64
15
+ ; CHECK-NEXT: [[PROMOTED2:%.*]] = sext i32 [[J]] to i64
16
+ ; CHECK-NEXT: [[S:%.*]] = add nsw i64 [[S2]], [[PROMOTED2]]
16
17
; CHECK-NEXT: [[ADDR1:%.*]] = getelementptr inbounds i64, ptr [[P1]], i64 [[S]]
17
18
; CHECK-NEXT: store i64 [[S]], ptr [[ADDR1]], align 8
18
- ; CHECK-NEXT: [[S2:%.*]] = sext i32 [[I]] to i64
19
19
; CHECK-NEXT: [[ADDR2:%.*]] = getelementptr inbounds i64, ptr [[P2]], i64 [[S2]]
20
20
; CHECK-NEXT: store i64 [[S2]], ptr [[ADDR2]], align 8
21
21
; CHECK-NEXT: ret void
@@ -36,12 +36,13 @@ define void @promoteTwoTwo(i32 %i, i32 %j, i32 %k, ptr %P1, ptr %P2) {
36
36
; CHECK-LABEL: define void @promoteTwoTwo(
37
37
; CHECK-SAME: i32 [[I:%.*]], i32 [[J:%.*]], i32 [[K:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]]) {
38
38
; CHECK-NEXT: entry:
39
- ; CHECK-NEXT: [[ADD1:%.*]] = add nsw i32 [[J]], [[I]]
40
- ; CHECK-NEXT: [[S:%.*]] = sext i32 [[ADD1]] to i64
39
+ ; CHECK-NEXT: [[PROMOTED3:%.*]] = sext i32 [[J]] to i64
40
+ ; CHECK-NEXT: [[PROMOTED4:%.*]] = sext i32 [[I]] to i64
41
+ ; CHECK-NEXT: [[S:%.*]] = add nsw i64 [[PROMOTED3]], [[PROMOTED4]]
41
42
; CHECK-NEXT: [[ADDR1:%.*]] = getelementptr inbounds i64, ptr [[P1]], i64 [[S]]
42
43
; CHECK-NEXT: store i64 [[S]], ptr [[ADDR1]], align 8
43
- ; CHECK-NEXT: [[ADD2 :%.*]] = add nsw i32 [[J]], [[ K]]
44
- ; CHECK-NEXT: [[S2:%.*]] = sext i32 [[ADD2]] to i64
44
+ ; CHECK-NEXT: [[PROMOTED2 :%.*]] = sext i32 [[K]] to i64
45
+ ; CHECK-NEXT: [[S2:%.*]] = add nsw i64 [[PROMOTED3]], [[PROMOTED2]]
45
46
; CHECK-NEXT: [[ADDR2:%.*]] = getelementptr inbounds i64, ptr [[P2]], i64 [[S2]]
46
47
; CHECK-NEXT: store i64 [[S2]], ptr [[ADDR2]], align 8
47
48
; CHECK-NEXT: ret void
@@ -62,11 +63,10 @@ define i64 @promoteGEPSunk(i1 %cond, ptr %base, i32 %i) {
62
63
; CHECK-LABEL: define i64 @promoteGEPSunk(
63
64
; CHECK-SAME: i1 [[COND:%.*]], ptr [[BASE:%.*]], i32 [[I:%.*]]) {
64
65
; CHECK-NEXT: entry:
65
- ; CHECK-NEXT: [[ADD :%.*]] = add nsw i32 [[I]], 1
66
- ; CHECK-NEXT: [[S:%.*]] = sext i32 [[ADD]] to i64
66
+ ; CHECK-NEXT: [[PROMOTED1 :%.*]] = sext i32 [[I]] to i64
67
+ ; CHECK-NEXT: [[S:%.*]] = add nsw i64 [[PROMOTED1]], 1
67
68
; CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i64, ptr [[BASE]], i64 [[S]]
68
- ; CHECK-NEXT: [[ADD2:%.*]] = add nsw i32 [[I]], 2
69
- ; CHECK-NEXT: [[S2:%.*]] = sext i32 [[ADD2]] to i64
69
+ ; CHECK-NEXT: [[S2:%.*]] = add nsw i64 [[PROMOTED1]], 2
70
70
; CHECK-NEXT: [[ADDR2:%.*]] = getelementptr inbounds i64, ptr [[BASE]], i64 [[S2]]
71
71
; CHECK-NEXT: br i1 [[COND]], label [[IF_THEN:%.*]], label [[IF_THEN2:%.*]]
72
72
; CHECK: if.then:
0 commit comments