Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/X86/jump_sign.ll
Show First 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: cmovgl %ecx, %eax | ; CHECK-NEXT: cmovgl %ecx, %eax | ||||
; CHECK-NEXT: retl | ; CHECK-NEXT: retl | ||||
%cmp = icmp sgt i32 %a, %b | %cmp = icmp sgt i32 %a, %b | ||||
%sub = sub nsw i32 %a, %b | %sub = sub nsw i32 %a, %b | ||||
%cond = select i1 %cmp, i32 %b, i32 %sub | %cond = select i1 %cmp, i32 %b, i32 %sub | ||||
ret i32 %cond | ret i32 %cond | ||||
} | } | ||||
; If EFLAGS is live-out, we can't remove cmp if there exists | ; If EFLAGS is live-out, we can't remove cmp if there exists | ||||
xbolva00: cmp now removed | |||||
MatzeBAuthorUnsubmitted Good catch. So:
MatzeB: Good catch. So:
- I believe the comment to be outdated:
- When you look at r159888 adding… | |||||
; a swapped sub. | ; a swapped sub. | ||||
define i32 @func_l2(i32 %a, i32 %b) nounwind { | define i32 @func_l2(i32 %a, i32 %b) nounwind { | ||||
; CHECK-LABEL: func_l2: | ; CHECK-LABEL: func_l2: | ||||
; CHECK: # %bb.0: | ; CHECK: # %bb.0: | ||||
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx | ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx | ||||
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx | ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||||
; CHECK-NEXT: movl %ecx, %eax | ; CHECK-NEXT: movl %eax, %ecx | ||||
; CHECK-NEXT: subl %edx, %eax | ; CHECK-NEXT: subl %edx, %ecx | ||||
; CHECK-NEXT: jne .LBB8_2 | ; CHECK-NEXT: jne .LBB8_2 | ||||
; CHECK-NEXT: # %bb.1: # %if.then | ; CHECK-NEXT: # %bb.1: # %if.then | ||||
; CHECK-NEXT: cmpl %ecx, %edx | ; CHECK-NEXT: cmovll %ecx, %eax | ||||
; CHECK-NEXT: cmovlel %ecx, %eax | ; CHECK-NEXT: retl | ||||
; CHECK-NEXT: .LBB8_2: # %if.else | ; CHECK-NEXT: .LBB8_2: # %if.else | ||||
; CHECK-NEXT: movl %ecx, %eax | |||||
; CHECK-NEXT: retl | ; CHECK-NEXT: retl | ||||
%cmp = icmp eq i32 %b, %a | %cmp = icmp eq i32 %b, %a | ||||
%sub = sub nsw i32 %a, %b | %sub = sub nsw i32 %a, %b | ||||
br i1 %cmp, label %if.then, label %if.else | br i1 %cmp, label %if.then, label %if.else | ||||
if.then: | if.then: | ||||
%cmp2 = icmp sgt i32 %b, %a | %cmp2 = icmp sgt i32 %b, %a | ||||
%sel = select i1 %cmp2, i32 %sub, i32 %a | %sel = select i1 %cmp2, i32 %sub, i32 %a | ||||
▲ Show 20 Lines • Show All 269 Lines • Show Last 20 Lines |
cmp now removed