Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/X86/use-cr-result-of-dom-icmp-st.ll
Show First 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | |||||
; CHECK: # %bb.0: # %entry | ; CHECK: # %bb.0: # %entry | ||||
; CHECK-NEXT: movq %rsi, %rax | ; CHECK-NEXT: movq %rsi, %rax | ||||
; CHECK-NEXT: movq %rdi, %rdx | ; CHECK-NEXT: movq %rdi, %rdx | ||||
; CHECK-NEXT: movl %eax, %ecx | ; CHECK-NEXT: movl %eax, %ecx | ||||
; CHECK-NEXT: shlq %cl, %rdx | ; CHECK-NEXT: shlq %cl, %rdx | ||||
; CHECK-NEXT: cmpq $1, %rdx | ; CHECK-NEXT: cmpq $1, %rdx | ||||
; CHECK-NEXT: jg .LBB3_2 | ; CHECK-NEXT: jg .LBB3_2 | ||||
; CHECK-NEXT: # %bb.1: # %if.end | ; CHECK-NEXT: # %bb.1: # %if.end | ||||
; CHECK-NEXT: testq %rdx, %rdx | |||||
; CHECK-NEXT: movl $1, %ecx | ; CHECK-NEXT: movl $1, %ecx | ||||
; CHECK-NEXT: cmovleq %rcx, %rax | ; CHECK-NEXT: cmovlq %rcx, %rax | ||||
; CHECK-NEXT: imulq %rdi, %rax | ; CHECK-NEXT: imulq %rdi, %rax | ||||
; CHECK-NEXT: .LBB3_2: # %return | ; CHECK-NEXT: .LBB3_2: # %return | ||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
entry: | entry: | ||||
%shl = shl i64 %a, %b | %shl = shl i64 %a, %b | ||||
%cmp = icmp sgt i64 %shl, 1 | %cmp = icmp sgt i64 %shl, 1 | ||||
br i1 %cmp, label %return, label %if.end | br i1 %cmp, label %return, label %if.end | ||||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | |||||
define i64 @ll_a_1(i64 %a, i64 %b) { | define i64 @ll_a_1(i64 %a, i64 %b) { | ||||
; CHECK-LABEL: ll_a_1: | ; CHECK-LABEL: ll_a_1: | ||||
; CHECK: # %bb.0: # %entry | ; CHECK: # %bb.0: # %entry | ||||
; CHECK-NEXT: movq %rsi, %rax | ; CHECK-NEXT: movq %rsi, %rax | ||||
; CHECK-NEXT: cmpq $1, %rdi | ; CHECK-NEXT: cmpq $1, %rdi | ||||
; CHECK-NEXT: jg .LBB8_2 | ; CHECK-NEXT: jg .LBB8_2 | ||||
; CHECK-NEXT: # %bb.1: # %if.end | ; CHECK-NEXT: # %bb.1: # %if.end | ||||
; CHECK-NEXT: testq %rdi, %rdi | |||||
; CHECK-NEXT: movl $1, %ecx | ; CHECK-NEXT: movl $1, %ecx | ||||
; CHECK-NEXT: cmovleq %rcx, %rax | ; CHECK-NEXT: cmovlq %rcx, %rax | ||||
; CHECK-NEXT: imulq %rdi, %rax | ; CHECK-NEXT: imulq %rdi, %rax | ||||
; CHECK-NEXT: .LBB8_2: # %return | ; CHECK-NEXT: .LBB8_2: # %return | ||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
entry: | entry: | ||||
%cmp = icmp sgt i64 %a, 1 | %cmp = icmp sgt i64 %a, 1 | ||||
br i1 %cmp, label %return, label %if.end | br i1 %cmp, label %return, label %if.end | ||||
if.end: ; preds = %entry | if.end: ; preds = %entry | ||||
▲ Show 20 Lines • Show All 137 Lines • ▼ Show 20 Lines | |||||
; CHECK-LABEL: i_a_op_b_1: | ; CHECK-LABEL: i_a_op_b_1: | ||||
; CHECK: # %bb.0: # %entry | ; CHECK: # %bb.0: # %entry | ||||
; CHECK-NEXT: movl %esi, %ecx | ; CHECK-NEXT: movl %esi, %ecx | ||||
; CHECK-NEXT: movl %edi, %eax | ; CHECK-NEXT: movl %edi, %eax | ||||
; CHECK-NEXT: shll %cl, %eax | ; CHECK-NEXT: shll %cl, %eax | ||||
; CHECK-NEXT: cmpl $1, %eax | ; CHECK-NEXT: cmpl $1, %eax | ||||
; CHECK-NEXT: jg .LBB13_2 | ; CHECK-NEXT: jg .LBB13_2 | ||||
; CHECK-NEXT: # %bb.1: # %if.end | ; CHECK-NEXT: # %bb.1: # %if.end | ||||
; CHECK-NEXT: testl %eax, %eax | |||||
; CHECK-NEXT: movl $1, %eax | ; CHECK-NEXT: movl $1, %eax | ||||
; CHECK-NEXT: cmovlel %eax, %ecx | ; CHECK-NEXT: cmovll %eax, %ecx | ||||
; CHECK-NEXT: imull %edi, %ecx | ; CHECK-NEXT: imull %edi, %ecx | ||||
; CHECK-NEXT: .LBB13_2: # %return | ; CHECK-NEXT: .LBB13_2: # %return | ||||
; CHECK-NEXT: movslq %ecx, %rax | ; CHECK-NEXT: movslq %ecx, %rax | ||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
entry: | entry: | ||||
%shl = shl i32 %a, %b | %shl = shl i32 %a, %b | ||||
%cmp = icmp sgt i32 %shl, 1 | %cmp = icmp sgt i32 %shl, 1 | ||||
br i1 %cmp, label %return, label %if.end | br i1 %cmp, label %return, label %if.end | ||||
▲ Show 20 Lines • Show All 132 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
define i64 @i_a_1(i32 signext %a, i32 signext %b) { | define i64 @i_a_1(i32 signext %a, i32 signext %b) { | ||||
; CHECK-LABEL: i_a_1: | ; CHECK-LABEL: i_a_1: | ||||
; CHECK: # %bb.0: # %entry | ; CHECK: # %bb.0: # %entry | ||||
; CHECK-NEXT: cmpl $1, %edi | ; CHECK-NEXT: cmpl $1, %edi | ||||
; CHECK-NEXT: jg .LBB18_2 | ; CHECK-NEXT: jg .LBB18_2 | ||||
; CHECK-NEXT: # %bb.1: # %if.end | ; CHECK-NEXT: # %bb.1: # %if.end | ||||
; CHECK-NEXT: testl %edi, %edi | |||||
; CHECK-NEXT: movl $1, %eax | ; CHECK-NEXT: movl $1, %eax | ||||
; CHECK-NEXT: cmovlel %eax, %esi | ; CHECK-NEXT: cmovll %eax, %esi | ||||
; CHECK-NEXT: imull %edi, %esi | ; CHECK-NEXT: imull %edi, %esi | ||||
; CHECK-NEXT: .LBB18_2: # %return | ; CHECK-NEXT: .LBB18_2: # %return | ||||
; CHECK-NEXT: movslq %esi, %rax | ; CHECK-NEXT: movslq %esi, %rax | ||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
entry: | entry: | ||||
%cmp = icmp sgt i32 %a, 1 | %cmp = icmp sgt i32 %a, 1 | ||||
br i1 %cmp, label %return, label %if.end | br i1 %cmp, label %return, label %if.end | ||||
Show All 39 Lines |