The 2nd loop calculates spill costs but reports free registers as cost 0 anyway, so there is little benefit from having a separate early loop. Surprisingly this is not NFC, as many register are marked regDisabled so the first loop often picks up later registers unnecessarily instead of the first one available in the allocation order... Patch by Matthias Braun llvm-svn: 356499
24 lines
630 B
LLVM
24 lines
630 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -mtriple=mipsel -relocation-model=pic -O0 -mcpu=mips32 < %s | FileCheck %s
|
|
|
|
define void @test(i32 %x, i1* %p) nounwind {
|
|
; CHECK-LABEL: test:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: move $1, $4
|
|
; CHECK-NEXT: andi $2, $4, 1
|
|
; CHECK-NEXT: sb $2, 0($5)
|
|
; CHECK-NEXT: andi $1, $1, 1
|
|
; CHECK-NEXT: bgtz $1, $BB0_1
|
|
; CHECK-NEXT: nop
|
|
; CHECK-NEXT: # %bb.1: # %foo
|
|
; CHECK-NEXT: jr $ra
|
|
; CHECK-NEXT: nop
|
|
%y = and i32 %x, 1
|
|
%c = icmp eq i32 %y, 1
|
|
store i1 %c, i1* %p
|
|
br i1 %c, label %foo, label %foo
|
|
|
|
foo:
|
|
ret void
|
|
}
|