@@ -125,9 +125,10 @@ define i64 @fshr_select_no_combine(i64 %a, i64 %b, i64 %c) {
125
125
; (select (icmp x, 0, eq), 0, (sdiv x, y)) -> (sdiv x, y)
126
126
define i64 @sdiv_select (i64 %a , i64 %b ) {
127
127
; CHECK-LABEL: @sdiv_select(
128
- ; CHECK-NEXT: [[B_FR:%.*]] = freeze i64 [[B:%.*]]
129
- ; CHECK-NEXT: [[DIV:%.*]] = sdiv i64 [[A:%.*]], [[B_FR]]
130
- ; CHECK-NEXT: ret i64 [[DIV]]
128
+ ; CHECK-NEXT: [[COND:%.*]] = icmp eq i64 [[A:%.*]], 0
129
+ ; CHECK-NEXT: [[DIV:%.*]] = sdiv i64 [[A]], [[B_FR:%.*]]
130
+ ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], i64 0, i64 [[DIV]]
131
+ ; CHECK-NEXT: ret i64 [[SELECT]]
131
132
;
132
133
%cond = icmp eq i64 %a , 0
133
134
%div = sdiv i64 %a , %b
@@ -138,9 +139,10 @@ define i64 @sdiv_select(i64 %a, i64 %b) {
138
139
; (select (icmp x, 0, eq), 0, (udiv x, y)) -> (udiv x, y)
139
140
define i64 @udiv_select (i64 %a , i64 %b ) {
140
141
; CHECK-LABEL: @udiv_select(
141
- ; CHECK-NEXT: [[B_FR:%.*]] = freeze i64 [[B:%.*]]
142
- ; CHECK-NEXT: [[DIV:%.*]] = udiv i64 [[A:%.*]], [[B_FR]]
143
- ; CHECK-NEXT: ret i64 [[DIV]]
142
+ ; CHECK-NEXT: [[COND:%.*]] = icmp eq i64 [[A:%.*]], 0
143
+ ; CHECK-NEXT: [[DIV:%.*]] = udiv i64 [[A]], [[B_FR:%.*]]
144
+ ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], i64 0, i64 [[DIV]]
145
+ ; CHECK-NEXT: ret i64 [[SELECT]]
144
146
;
145
147
%cond = icmp eq i64 %a , 0
146
148
%div = udiv i64 %a , %b
0 commit comments