mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 12:33:33 +02:00
5747eb82f8
The patch in http://reviews.llvm.org/D13745 is broken into four parts: 1. New interfaces without functional changes. 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights. 3. Use new interfaces in all other passes. 4. Remove old interfaces. This the second patch above. In this patch SelectionDAG starts to use probability-based interfaces in MBB to add successors but other MC passes are still using weight-based interfaces. Therefore, we need to maintain correct weight list in MBB even when probability-based interfaces are used. This is done by updating weight list in probability-based interfaces by treating the numerator of probabilities as weights. This change affects many test cases that check successor weight values. I will update those test cases once this patch looks good to you. Differential revision: http://reviews.llvm.org/D14361 llvm-svn: 253965
35 lines
1.3 KiB
LLVM
35 lines
1.3 KiB
LLVM
; RUN: llc < %s -mtriple=x86_64-apple-darwin -print-machineinstrs=expand-isel-pseudos -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
;; Make sure a transformation in SelectionDAGBuilder that converts "or + br" to
|
|
;; two branches correctly updates the branch probability.
|
|
|
|
@max_regno = common global i32 0, align 4
|
|
|
|
define void @test(i32* %old, i32 %final) {
|
|
for.cond:
|
|
br label %for.cond2
|
|
|
|
for.cond2: ; preds = %for.inc, %for.cond
|
|
%i.1 = phi i32 [ %inc19, %for.inc ], [ 0, %for.cond ]
|
|
%bit.0 = phi i32 [ %shl, %for.inc ], [ 1, %for.cond ]
|
|
%tobool = icmp eq i32 %bit.0, 0
|
|
%v3 = load i32, i32* @max_regno, align 4
|
|
%cmp4 = icmp eq i32 %i.1, %v3
|
|
%or.cond = or i1 %tobool, %cmp4
|
|
br i1 %or.cond, label %for.inc20, label %for.inc, !prof !0
|
|
; CHECK: BB#1: derived from LLVM BB %for.cond2
|
|
; CHECK: Successors according to CFG: BB#3(32756933) BB#4(2114726715)
|
|
; CHECK: BB#4: derived from LLVM BB %for.cond2
|
|
; CHECK: Successors according to CFG: BB#3(33264335) BB#2(2114219313)
|
|
|
|
for.inc: ; preds = %for.cond2
|
|
%shl = shl i32 %bit.0, 1
|
|
%inc19 = add nsw i32 %i.1, 1
|
|
br label %for.cond2
|
|
|
|
for.inc20: ; preds = %for.cond2
|
|
ret void
|
|
}
|
|
|
|
!0 = !{!"branch_weights", i32 112017436, i32 -735157296}
|