1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test/CodeGen/Thumb2/cbnz.ll
Kyle Butt 9386601a22 CodeGen: Allow small copyable blocks to "break" the CFG.
When choosing the best successor for a block, ordinarily we would have preferred
a block that preserves the CFG unless there is a strong probability the other
direction. For small blocks that can be duplicated we now skip that requirement
as well, subject to some simple frequency calculations.

Differential Revision: https://reviews.llvm.org/D28583

llvm-svn: 293716
2017-01-31 23:48:32 +00:00

55 lines
884 B
LLVM

; RUN: llc -mtriple thumbv7-unknown-linux -o - %s | FileCheck %s
declare void @x()
declare void @y()
define void @f(i32 %x, i32 %y) {
; CHECK-LABEL: f:
; CHECK: cbnz
%p = icmp eq i32 %x, 0
br i1 %p, label %t, label %f
t:
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
; CHECK: cbz
%q = icmp eq i32 %y, 0
br i1 %q, label %t2, label %f
t2:
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
call void @x()
br label %f
f:
call void @y()
ret void
}