@@ -34,11 +34,11 @@ define signext i32 @testBI(i32 signext %v) {
34
34
; CHECK-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I11_I:%.*]] = or i64 [[RETVAL_SROA_22_0_INSERT_SHIFT_I9_I]], [[TMP0]]
35
35
; CHECK-NEXT: br label [[_ZL6CALLEEI_EXIT]]
36
36
; CHECK: _ZL6calleei.exit:
37
- ; CHECK-NEXT: [[PHIOFOPS1:%.*]] = phi i64 [ [[RETVAL_SROA_22_0_INSERT_EXT_I_I]], [[IF_THEN_I]] ], [ [[RETVAL_SROA_22_0_INSERT_EXT_I8_I]], [[IF_ELSE_I]] ]
38
- ; CHECK-NEXT: [[PHIOFOPS:%.*]] = phi i64 [ 1, [[IF_THEN_I]] ], [ [[TMP0]], [[IF_ELSE_I]] ]
39
37
; CHECK-NEXT: [[RETVAL_SROA_0_0_I:%.*]] = phi i64 [ [[RETVAL_SROA_0_0_INSERT_INSERT_I_I]], [[IF_THEN_I]] ], [ [[RETVAL_SROA_0_0_INSERT_INSERT_I11_I]], [[IF_ELSE_I]] ]
40
- ; CHECK-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[PHIOFOPS1]] to i32
41
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[PHIOFOPS]], 0
38
+ ; CHECK-NEXT: [[RC_SROA_43_0_EXTRACT_SHIFT:%.*]] = lshr i64 [[RETVAL_SROA_0_0_I]], 32
39
+ ; CHECK-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RC_SROA_43_0_EXTRACT_SHIFT]] to i32
40
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i64 [[RETVAL_SROA_0_0_I]], 1
41
+ ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[TMP1]], 0
42
42
; CHECK-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
43
43
; CHECK: if.then:
44
44
; CHECK-NEXT: [[CALL1:%.*]] = call signext i32 @dummy(i32 signext 0)
@@ -50,27 +50,32 @@ define signext i32 @testBI(i32 signext %v) {
50
50
; CHECK-JT-NEXT: entry:
51
51
; CHECK-JT-NEXT: [[CALL_I:%.*]] = call signext i32 @dummy(i32 signext [[V:%.*]])
52
52
; CHECK-JT-NEXT: [[TOBOOL_I:%.*]] = icmp eq i32 [[CALL_I]], 0
53
- ; CHECK-JT-NEXT: br i1 [[TOBOOL_I]], label [[_ZL6CALLEEI_EXIT :%.*]], label [[_ZL6CALLEEI_EXIT_THREAD :%.*]]
54
- ; CHECK-JT: _ZL6calleei.exit.thread :
53
+ ; CHECK-JT-NEXT: br i1 [[TOBOOL_I]], label [[IF_ELSE_I :%.*]], label [[IF_THEN_I :%.*]]
54
+ ; CHECK-JT: if.then.i :
55
55
; CHECK-JT-NEXT: [[CALL2_I:%.*]] = call signext i32 @dummy(i32 signext [[CALL_I]])
56
56
; CHECK-JT-NEXT: [[RETVAL_SROA_22_0_INSERT_EXT_I_I:%.*]] = zext i32 [[CALL2_I]] to i64
57
- ; CHECK-JT-NEXT: br label [[IF_THEN:%.*]]
58
- ; CHECK-JT: _ZL6calleei.exit:
57
+ ; CHECK-JT-NEXT: [[RETVAL_SROA_22_0_INSERT_SHIFT_I_I:%.*]] = shl nuw i64 [[RETVAL_SROA_22_0_INSERT_EXT_I_I]], 32
58
+ ; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I_I:%.*]] = or i64 [[RETVAL_SROA_22_0_INSERT_SHIFT_I_I]], 1
59
+ ; CHECK-JT-NEXT: br label [[_ZL6CALLEEI_EXIT:%.*]]
60
+ ; CHECK-JT: if.else.i:
59
61
; CHECK-JT-NEXT: [[DOTLOBIT_I:%.*]] = lshr i32 [[V]], 31
60
62
; CHECK-JT-NEXT: [[TMP0:%.*]] = zext i32 [[DOTLOBIT_I]] to i64
61
63
; CHECK-JT-NEXT: [[RETVAL_SROA_22_0_INSERT_EXT_I8_I:%.*]] = zext i32 [[V]] to i64
62
64
; CHECK-JT-NEXT: [[RETVAL_SROA_22_0_INSERT_SHIFT_I9_I:%.*]] = shl nuw i64 [[RETVAL_SROA_22_0_INSERT_EXT_I8_I]], 32
63
65
; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I11_I:%.*]] = or i64 [[RETVAL_SROA_22_0_INSERT_SHIFT_I9_I]], [[TMP0]]
64
- ; CHECK-JT-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RETVAL_SROA_22_0_INSERT_EXT_I8_I]] to i32
65
- ; CHECK-JT-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[TMP0]], 0
66
- ; CHECK-JT-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN]]
66
+ ; CHECK-JT-NEXT: br label [[_ZL6CALLEEI_EXIT]]
67
+ ; CHECK-JT: _ZL6calleei.exit:
68
+ ; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_I:%.*]] = phi i64 [ [[RETVAL_SROA_0_0_INSERT_INSERT_I_I]], [[IF_THEN_I]] ], [ [[RETVAL_SROA_0_0_INSERT_INSERT_I11_I]], [[IF_ELSE_I]] ]
69
+ ; CHECK-JT-NEXT: [[RC_SROA_43_0_EXTRACT_SHIFT:%.*]] = lshr i64 [[RETVAL_SROA_0_0_I]], 32
70
+ ; CHECK-JT-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RC_SROA_43_0_EXTRACT_SHIFT]] to i32
71
+ ; CHECK-JT-NEXT: [[TMP1:%.*]] = and i64 [[RETVAL_SROA_0_0_I]], 1
72
+ ; CHECK-JT-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[TMP1]], 0
73
+ ; CHECK-JT-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
67
74
; CHECK-JT: if.then:
68
- ; CHECK-JT-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC7:%.*]] = phi i32 [ [[CALL2_I]], [[_ZL6CALLEEI_EXIT_THREAD]] ], [ [[RC_SROA_43_0_EXTRACT_TRUNC]], [[_ZL6CALLEEI_EXIT]] ]
69
75
; CHECK-JT-NEXT: [[CALL1:%.*]] = call signext i32 @dummy(i32 signext 0)
70
76
; CHECK-JT-NEXT: br label [[IF_END]]
71
77
; CHECK-JT: if.end:
72
- ; CHECK-JT-NEXT: [[RC_SROA_43_0_EXTRACT_TRUNC8:%.*]] = phi i32 [ [[RC_SROA_43_0_EXTRACT_TRUNC7]], [[IF_THEN]] ], [ [[RC_SROA_43_0_EXTRACT_TRUNC]], [[_ZL6CALLEEI_EXIT]] ]
73
- ; CHECK-JT-NEXT: ret i32 [[RC_SROA_43_0_EXTRACT_TRUNC8]]
78
+ ; CHECK-JT-NEXT: ret i32 [[RC_SROA_43_0_EXTRACT_TRUNC]]
74
79
;
75
80
76
81
entry:
@@ -141,10 +146,10 @@ define signext i32 @testIB(i32 signext %v) {
141
146
; CHECK-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I10_I:%.*]] = or i64 [[RETVAL_SROA_2_0_INSERT_SHIFT_I8_I]], [[RETVAL_SROA_0_0_INSERT_EXT_I9_I]]
142
147
; CHECK-NEXT: br label [[_ZL6CALLEEI_EXIT]]
143
148
; CHECK: _ZL6calleei.exit:
144
- ; CHECK-NEXT: [[PHIOFOPS:%.*]] = phi i64 [ 4294967296, [[IF_THEN_I]] ], [ [[RETVAL_SROA_2_0_INSERT_SHIFT_I8_I]], [[IF_ELSE_I]] ]
145
149
; CHECK-NEXT: [[RETVAL_SROA_0_0_I:%.*]] = phi i64 [ [[RETVAL_SROA_0_0_INSERT_INSERT_I_I]], [[IF_THEN_I]] ], [ [[RETVAL_SROA_0_0_INSERT_INSERT_I10_I]], [[IF_ELSE_I]] ]
146
150
; CHECK-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RETVAL_SROA_0_0_I]] to i32
147
- ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[PHIOFOPS]], 0
151
+ ; CHECK-NEXT: [[TMP1:%.*]] = and i64 [[RETVAL_SROA_0_0_I]], 4294967296
152
+ ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[TMP1]], 0
148
153
; CHECK-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
149
154
; CHECK: if.then:
150
155
; CHECK-NEXT: [[CALL1:%.*]] = call signext i32 @dummy(i32 signext 0)
@@ -156,29 +161,30 @@ define signext i32 @testIB(i32 signext %v) {
156
161
; CHECK-JT-NEXT: entry:
157
162
; CHECK-JT-NEXT: [[CALL_I:%.*]] = call signext i32 @dummy(i32 signext [[V:%.*]])
158
163
; CHECK-JT-NEXT: [[TOBOOL_I:%.*]] = icmp eq i32 [[CALL_I]], 0
159
- ; CHECK-JT-NEXT: br i1 [[TOBOOL_I]], label [[_ZL6CALLEEI_EXIT :%.*]], label [[_ZL6CALLEEI_EXIT_THREAD :%.*]]
160
- ; CHECK-JT: _ZL6calleei.exit.thread :
164
+ ; CHECK-JT-NEXT: br i1 [[TOBOOL_I]], label [[IF_ELSE_I :%.*]], label [[IF_THEN_I :%.*]]
165
+ ; CHECK-JT: if.then.i :
161
166
; CHECK-JT-NEXT: [[CALL1_I:%.*]] = call signext i32 @dummy(i32 signext [[V]])
162
167
; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_EXT_I_I:%.*]] = zext i32 [[CALL1_I]] to i64
163
168
; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I_I:%.*]] = or i64 [[RETVAL_SROA_0_0_INSERT_EXT_I_I]], 4294967296
164
- ; CHECK-JT-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC3:%.*]] = trunc i64 [[RETVAL_SROA_0_0_INSERT_INSERT_I_I]] to i32
165
- ; CHECK-JT-NEXT: br label [[IF_THEN:%.*]]
166
- ; CHECK-JT: _ZL6calleei.exit:
169
+ ; CHECK-JT-NEXT: br label [[_ZL6CALLEEI_EXIT:%.*]]
170
+ ; CHECK-JT: if.else.i:
167
171
; CHECK-JT-NEXT: [[DOTLOBIT_I:%.*]] = lshr i32 [[V]], 31
168
172
; CHECK-JT-NEXT: [[TMP0:%.*]] = zext i32 [[DOTLOBIT_I]] to i64
169
173
; CHECK-JT-NEXT: [[RETVAL_SROA_2_0_INSERT_SHIFT_I8_I:%.*]] = shl nuw nsw i64 [[TMP0]], 32
170
174
; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_EXT_I9_I:%.*]] = zext i32 [[V]] to i64
171
175
; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_INSERT_INSERT_I10_I:%.*]] = or i64 [[RETVAL_SROA_2_0_INSERT_SHIFT_I8_I]], [[RETVAL_SROA_0_0_INSERT_EXT_I9_I]]
172
- ; CHECK-JT-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RETVAL_SROA_0_0_INSERT_INSERT_I10_I]] to i32
173
- ; CHECK-JT-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[RETVAL_SROA_2_0_INSERT_SHIFT_I8_I]], 0
174
- ; CHECK-JT-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN]]
176
+ ; CHECK-JT-NEXT: br label [[_ZL6CALLEEI_EXIT]]
177
+ ; CHECK-JT: _ZL6calleei.exit:
178
+ ; CHECK-JT-NEXT: [[RETVAL_SROA_0_0_I:%.*]] = phi i64 [ [[RETVAL_SROA_0_0_INSERT_INSERT_I_I]], [[IF_THEN_I]] ], [ [[RETVAL_SROA_0_0_INSERT_INSERT_I10_I]], [[IF_ELSE_I]] ]
179
+ ; CHECK-JT-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[RETVAL_SROA_0_0_I]] to i32
180
+ ; CHECK-JT-NEXT: [[TMP1:%.*]] = and i64 [[RETVAL_SROA_0_0_I]], 4294967296
181
+ ; CHECK-JT-NEXT: [[TOBOOL:%.*]] = icmp eq i64 [[TMP1]], 0
182
+ ; CHECK-JT-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN:%.*]]
175
183
; CHECK-JT: if.then:
176
- ; CHECK-JT-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC5:%.*]] = phi i32 [ [[RC_SROA_0_0_EXTRACT_TRUNC3]], [[_ZL6CALLEEI_EXIT_THREAD]] ], [ [[RC_SROA_0_0_EXTRACT_TRUNC]], [[_ZL6CALLEEI_EXIT]] ]
177
184
; CHECK-JT-NEXT: [[CALL1:%.*]] = call signext i32 @dummy(i32 signext 0)
178
185
; CHECK-JT-NEXT: br label [[IF_END]]
179
186
; CHECK-JT: if.end:
180
- ; CHECK-JT-NEXT: [[RC_SROA_0_0_EXTRACT_TRUNC6:%.*]] = phi i32 [ [[RC_SROA_0_0_EXTRACT_TRUNC5]], [[IF_THEN]] ], [ [[RC_SROA_0_0_EXTRACT_TRUNC]], [[_ZL6CALLEEI_EXIT]] ]
181
- ; CHECK-JT-NEXT: ret i32 [[RC_SROA_0_0_EXTRACT_TRUNC6]]
187
+ ; CHECK-JT-NEXT: ret i32 [[RC_SROA_0_0_EXTRACT_TRUNC]]
182
188
;
183
189
184
190
entry:
0 commit comments