Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/AArch64/combine-comparisons-by-cse.ll
Show First 20 Lines • Show All 438 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: bl Update | ; CHECK-NEXT: bl Update | ||||
; CHECK-NEXT: sub x21, x21, #2 | ; CHECK-NEXT: sub x21, x21, #2 | ||||
; CHECK-NEXT: cmp x19, x21 | ; CHECK-NEXT: cmp x19, x21 | ||||
; CHECK-NEXT: b.lt .LBB6_1 | ; CHECK-NEXT: b.lt .LBB6_1 | ||||
; CHECK-NEXT: .LBB6_3: // %while.end | ; CHECK-NEXT: .LBB6_3: // %while.end | ||||
; CHECK-NEXT: ldp x20, x19, [sp, #32] // 16-byte Folded Reload | ; CHECK-NEXT: ldp x20, x19, [sp, #32] // 16-byte Folded Reload | ||||
; CHECK-NEXT: ldp x22, x21, [sp, #16] // 16-byte Folded Reload | ; CHECK-NEXT: ldp x22, x21, [sp, #16] // 16-byte Folded Reload | ||||
; CHECK-NEXT: ldr x30, [sp], #48 // 8-byte Folded Reload | ; CHECK-NEXT: ldr x30, [sp], #48 // 8-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -48 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
entry: | entry: | ||||
%size = getelementptr inbounds %struct.Struct, %struct.Struct* %hdCall, i64 0, i32 0 | %size = getelementptr inbounds %struct.Struct, %struct.Struct* %hdCall, i64 0, i32 0 | ||||
%0 = load i64, i64* %size, align 8 | %0 = load i64, i64* %size, align 8 | ||||
br label %land.rhs | br label %land.rhs | ||||
land.rhs: | land.rhs: | ||||
%rp.06 = phi i64 [ %0, %entry ], [ %sub, %while.body ] | %rp.06 = phi i64 [ %0, %entry ], [ %sub, %while.body ] | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: // %bb.6: | ; CHECK-NEXT: // %bb.6: | ||||
; CHECK-NEXT: mov w0, #123 | ; CHECK-NEXT: mov w0, #123 | ||||
; CHECK-NEXT: b .LBB7_8 | ; CHECK-NEXT: b .LBB7_8 | ||||
; CHECK-NEXT: .LBB7_7: // %if.end | ; CHECK-NEXT: .LBB7_7: // %if.end | ||||
; CHECK-NEXT: mov w0, wzr | ; CHECK-NEXT: mov w0, wzr | ||||
; CHECK-NEXT: .LBB7_8: // %return | ; CHECK-NEXT: .LBB7_8: // %return | ||||
; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload | ; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload | ||||
; CHECK-NEXT: ldr x30, [sp], #32 // 8-byte Folded Reload | ; CHECK-NEXT: ldr x30, [sp], #32 // 8-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -32 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
entry: | entry: | ||||
%0 = load i32, i32* @a, align 4 | %0 = load i32, i32* @a, align 4 | ||||
%cmp4 = icmp slt i32 %0, -1 | %cmp4 = icmp slt i32 %0, -1 | ||||
br i1 %cmp4, label %while.body.preheader, label %while.end | br i1 %cmp4, label %while.body.preheader, label %while.end | ||||
while.body.preheader: ; preds = %entry | while.body.preheader: ; preds = %entry | ||||
br label %while.body | br label %while.body | ||||
▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: ldr x9, [x9, :got_lo12:d] | ; CHECK-NEXT: ldr x9, [x9, :got_lo12:d] | ||||
; CHECK-NEXT: ldr w8, [x8] | ; CHECK-NEXT: ldr w8, [x8] | ||||
; CHECK-NEXT: ldr w9, [x9] | ; CHECK-NEXT: ldr w9, [x9] | ||||
; CHECK-NEXT: cmp w8, w9 | ; CHECK-NEXT: cmp w8, w9 | ||||
; CHECK-NEXT: b.ne .LBB8_6 | ; CHECK-NEXT: b.ne .LBB8_6 | ||||
; CHECK-NEXT: // %bb.5: | ; CHECK-NEXT: // %bb.5: | ||||
; CHECK-NEXT: mov w0, #123 | ; CHECK-NEXT: mov w0, #123 | ||||
; CHECK-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload | ; CHECK-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -16 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
; CHECK-NEXT: .LBB8_6: // %if.end | ; CHECK-NEXT: .LBB8_6: // %if.end | ||||
; CHECK-NEXT: mov w0, wzr | ; CHECK-NEXT: mov w0, wzr | ||||
; CHECK-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload | ; CHECK-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -16 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
entry: | entry: | ||||
%0 = load i32, i32* @a, align 4 | %0 = load i32, i32* @a, align 4 | ||||
%cmp4 = icmp slt i32 %0, 1 | %cmp4 = icmp slt i32 %0, 1 | ||||
br i1 %cmp4, label %while.body.preheader, label %while.end | br i1 %cmp4, label %while.body.preheader, label %while.end | ||||
while.body.preheader: ; preds = %entry | while.body.preheader: ; preds = %entry | ||||
br label %while.body | br label %while.body | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: fcmp d8, #0.0 | ; CHECK-NEXT: fcmp d8, #0.0 | ||||
; CHECK-NEXT: fcsel d0, d8, d0, gt | ; CHECK-NEXT: fcsel d0, d8, d0, gt | ||||
; CHECK-NEXT: fmov d1, #-2.00000000 | ; CHECK-NEXT: fmov d1, #-2.00000000 | ||||
; CHECK-NEXT: bl woo | ; CHECK-NEXT: bl woo | ||||
; CHECK-NEXT: mov w0, #4 | ; CHECK-NEXT: mov w0, #4 | ||||
; CHECK-NEXT: .LBB9_4: // %return | ; CHECK-NEXT: .LBB9_4: // %return | ||||
; CHECK-NEXT: ldp x30, x19, [sp, #16] // 16-byte Folded Reload | ; CHECK-NEXT: ldp x30, x19, [sp, #16] // 16-byte Folded Reload | ||||
; CHECK-NEXT: ldr d8, [sp], #32 // 8-byte Folded Reload | ; CHECK-NEXT: ldr d8, [sp], #32 // 8-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -32 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
; CHECK-LABEL-DAG: .LBB9_3 | ; CHECK-LABEL-DAG: .LBB9_3 | ||||
entry: | entry: | ||||
%cmp = icmp sgt i32 %argc, 1 | %cmp = icmp sgt i32 %argc, 1 | ||||
br i1 %cmp, label %land.lhs.true, label %if.end | br i1 %cmp, label %land.lhs.true, label %if.end | ||||
Show All 36 Lines | |||||
; CHECK-NEXT: cmp w0, #0 | ; CHECK-NEXT: cmp w0, #0 | ||||
; CHECK-NEXT: mov w8, #42 | ; CHECK-NEXT: mov w8, #42 | ||||
; CHECK-NEXT: csinc w8, w8, wzr, gt | ; CHECK-NEXT: csinc w8, w8, wzr, gt | ||||
; CHECK-NEXT: cmp w0, #2, lsl #12 // =8192 | ; CHECK-NEXT: cmp w0, #2, lsl #12 // =8192 | ||||
; CHECK-NEXT: mov w9, #128 | ; CHECK-NEXT: mov w9, #128 | ||||
; CHECK-NEXT: csel w0, w9, w8, ge | ; CHECK-NEXT: csel w0, w9, w8, ge | ||||
; CHECK-NEXT: bl zoo | ; CHECK-NEXT: bl zoo | ||||
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload | ; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload | ||||
; CHECK-NEXT: .cfi_adjust_cfa_offset -16 | |||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
; [...] | ; [...] | ||||
%tst_low = icmp sgt i32 %in, 8191 | %tst_low = icmp sgt i32 %in, 8191 | ||||
br i1 %tst_low, label %true, label %false | br i1 %tst_low, label %true, label %false | ||||
true: | true: | ||||
call i32 @zoo(i32 128) | call i32 @zoo(i32 128) | ||||
▲ Show 20 Lines • Show All 94 Lines • Show Last 20 Lines |