mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
3c3f64c605
Sinking the and closer to a compare against zero is beneficial on PPC as it allows us to emit record-form instructions. In the future, we may expand this to a larger set of operations that feed compares against zero since PPC has lots of record-form instructions. Differential revision: https://reviews.llvm.org/D46060 llvm-svn: 331416
54 lines
1.5 KiB
LLVM
54 lines
1.5 KiB
LLVM
; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8 \
|
|
; RUN: -verify-machineinstrs | FileCheck %s
|
|
declare void @free()
|
|
|
|
define dso_local fastcc void @test2() {
|
|
; CHECK-LABEL: test2
|
|
entry:
|
|
switch i16 undef, label %sw.default [
|
|
i16 10, label %sw.bb52
|
|
i16 134, label %sw.bb54
|
|
]
|
|
|
|
sw.default: ; preds = %entry
|
|
unreachable
|
|
|
|
|
|
sw.bb52: ; preds = %entry, %entry, %entry, %entry, %entry, %entry
|
|
br i1 undef, label %if.then14.i, label %sw.epilog.i642
|
|
|
|
if.then14.i: ; preds = %sw.bb52
|
|
%call39.i = call i64 @test() #3
|
|
%and.i126.i = and i64 %call39.i, 1
|
|
br i1 undef, label %dummy.exit.i, label %if.then.i.i.i636
|
|
|
|
if.then.i.i.i636: ; preds = %if.then14.i
|
|
%0 = load i8*, i8** undef, align 8
|
|
call void @free() #3
|
|
br label %dummy.exit.i
|
|
|
|
dummy.exit.i: ; preds = %if.then.i.i.i636, %if.then14.i
|
|
; CHECK: # %dummy.exit.i
|
|
; CHECK-NEXT: andi.
|
|
; CHECK-NEXT: bc 12
|
|
%cond82.i = icmp eq i64 %and.i126.i, 0
|
|
br i1 %cond82.i, label %if.end50.i, label %dummy.exit
|
|
|
|
if.end50.i: ; preds = %dummy.exit.i
|
|
unreachable
|
|
|
|
sw.epilog.i642: ; preds = %sw.bb52
|
|
unreachable
|
|
|
|
dummy.exit: ; preds = %dummy.exit.i
|
|
unreachable
|
|
|
|
sw.bb54: ; preds = %entry, %entry
|
|
call fastcc void @test3()
|
|
unreachable
|
|
}
|
|
|
|
declare dso_local fastcc void @test3()
|
|
|
|
declare i64 @test()
|