mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[FastISel][AArch64] Optimize compare-and-branch for i1 to use 'tbz'.
Minor enhancement to use 'tbz' for i1 compare-and-branch to get rid of an 'and' instruction. This fixes rdar://problem/18784953. llvm-svn: 220712
This commit is contained in:
parent
87efb91a50
commit
76c57b0570
@ -2132,6 +2132,10 @@ bool AArch64FastISel::emitCompareAndBranch(const BranchInst *BI) {
|
||||
LHS = AndLHS;
|
||||
}
|
||||
}
|
||||
|
||||
if (VT == MVT::i1)
|
||||
TestBit = 0;
|
||||
|
||||
IsCmpNE = Predicate == CmpInst::ICMP_NE;
|
||||
} else if (Predicate == CmpInst::ICMP_SLT) {
|
||||
if (!isa<Constant>(RHS))
|
||||
|
@ -2,8 +2,7 @@
|
||||
|
||||
define i32 @icmp_eq_i1(i1 %a) {
|
||||
; CHECK-LABEL: icmp_eq_i1
|
||||
; CHECK: and [[REG:w[0-9]+]], w0, #0x1
|
||||
; CHECK: cbz [[REG]], {{LBB.+_2}}
|
||||
; CHECK: tbz w0, #0, {{LBB.+_2}}
|
||||
%1 = icmp eq i1 %a, 0
|
||||
br i1 %1, label %bb1, label %bb2
|
||||
bb2:
|
||||
|
Loading…
Reference in New Issue
Block a user