@@ -125,9 +125,10 @@ define i64 @fshr_select_no_combine(i64 %a, i64 %b, i64 %c) {
125125; (select (icmp x, 0, eq), 0, (sdiv x, y)) -> (sdiv x, y)
126126define i64 @sdiv_select (i64 %a , i64 %b ) {
127127; 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]]
131132;
132133 %cond = icmp eq i64 %a , 0
133134 %div = sdiv i64 %a , %b
@@ -138,9 +139,10 @@ define i64 @sdiv_select(i64 %a, i64 %b) {
138139; (select (icmp x, 0, eq), 0, (udiv x, y)) -> (udiv x, y)
139140define i64 @udiv_select (i64 %a , i64 %b ) {
140141; 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]]
144146;
145147 %cond = icmp eq i64 %a , 0
146148 %div = udiv i64 %a , %b
0 commit comments