mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 00:17:01 +00:00
Revert "blockfreq: Rewrite BlockFrequencyInfoImpl" (#2)
This reverts commit r206666, as planned. Still stumped on why the bots are failing. Sanitizer bots haven't turned anything up. If anyone can help me debug either of the failures (referenced in r206666) I'll owe them a beer. (In the meantime, I'll be auditing my patch for undefined behaviour.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206677 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,165 +0,0 @@
|
||||
; RUN: opt < %s -analyze -block-freq | FileCheck %s
|
||||
|
||||
; CHECK-LABEL: Printing analysis {{.*}} for function 'double_exit':
|
||||
; CHECK-NEXT: block-frequency-info: double_exit
|
||||
define i32 @double_exit(i32 %N) {
|
||||
; Mass = 1
|
||||
; Frequency = 1
|
||||
; CHECK-NEXT: entry: float = 1.0, int = [[ENTRY:[0-9]+]]
|
||||
entry:
|
||||
br label %outer
|
||||
|
||||
; Mass = 1
|
||||
; Backedge mass = 1/3, exit mass = 2/3
|
||||
; Loop scale = 3/2
|
||||
; Psuedo-edges = exit
|
||||
; Psuedo-mass = 1
|
||||
; Frequency = 1*3/2*1 = 3/2
|
||||
; CHECK-NEXT: outer: float = 1.5,
|
||||
outer:
|
||||
%I.0 = phi i32 [ 0, %entry ], [ %inc6, %outer.inc ]
|
||||
%Return.0 = phi i32 [ 0, %entry ], [ %Return.1, %outer.inc ]
|
||||
%cmp = icmp slt i32 %I.0, %N
|
||||
br i1 %cmp, label %inner, label %exit, !prof !2 ; 2:1
|
||||
|
||||
; Mass = 1
|
||||
; Backedge mass = 3/5, exit mass = 2/5
|
||||
; Loop scale = 5/2
|
||||
; Pseudo-edges = outer.inc @ 1/5, exit @ 1/5
|
||||
; Pseudo-mass = 2/3
|
||||
; Frequency = 3/2*1*5/2*2/3 = 5/2
|
||||
; CHECK-NEXT: inner: float = 2.5,
|
||||
inner:
|
||||
%Return.1 = phi i32 [ %Return.0, %outer ], [ %call4, %inner.inc ]
|
||||
%J.0 = phi i32 [ %I.0, %outer ], [ %inc, %inner.inc ]
|
||||
%cmp2 = icmp slt i32 %J.0, %N
|
||||
br i1 %cmp2, label %inner.body, label %outer.inc, !prof !1 ; 4:1
|
||||
|
||||
; Mass = 4/5
|
||||
; Frequency = 5/2*4/5 = 2
|
||||
; CHECK-NEXT: inner.body: float = 2.0,
|
||||
inner.body:
|
||||
%call = call i32 @c2(i32 %I.0, i32 %J.0)
|
||||
%tobool = icmp ne i32 %call, 0
|
||||
br i1 %tobool, label %exit, label %inner.inc, !prof !0 ; 3:1
|
||||
|
||||
; Mass = 3/5
|
||||
; Frequency = 5/2*3/5 = 3/2
|
||||
; CHECK-NEXT: inner.inc: float = 1.5,
|
||||
inner.inc:
|
||||
%call4 = call i32 @logic2(i32 %Return.1, i32 %I.0, i32 %J.0)
|
||||
%inc = add nsw i32 %J.0, 1
|
||||
br label %inner
|
||||
|
||||
; Mass = 1/3
|
||||
; Frequency = 3/2*1/3 = 1/2
|
||||
; CHECK-NEXT: outer.inc: float = 0.5,
|
||||
outer.inc:
|
||||
%inc6 = add nsw i32 %I.0, 1
|
||||
br label %outer
|
||||
|
||||
; Mass = 1
|
||||
; Frequency = 1
|
||||
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
|
||||
exit:
|
||||
%Return.2 = phi i32 [ %Return.1, %inner.body ], [ %Return.0, %outer ]
|
||||
ret i32 %Return.2
|
||||
}
|
||||
|
||||
!0 = metadata !{metadata !"branch_weights", i32 1, i32 3}
|
||||
!1 = metadata !{metadata !"branch_weights", i32 4, i32 1}
|
||||
!2 = metadata !{metadata !"branch_weights", i32 2, i32 1}
|
||||
|
||||
declare i32 @c2(i32, i32)
|
||||
declare i32 @logic2(i32, i32, i32)
|
||||
|
||||
; CHECK-LABEL: Printing analysis {{.*}} for function 'double_exit_in_loop':
|
||||
; CHECK-NEXT: block-frequency-info: double_exit_in_loop
|
||||
define i32 @double_exit_in_loop(i32 %N) {
|
||||
; Mass = 1
|
||||
; Frequency = 1
|
||||
; CHECK-NEXT: entry: float = 1.0, int = [[ENTRY:[0-9]+]]
|
||||
entry:
|
||||
br label %outer
|
||||
|
||||
; Mass = 1
|
||||
; Backedge mass = 1/2, exit mass = 1/2
|
||||
; Loop scale = 2
|
||||
; Pseudo-edges = exit
|
||||
; Psuedo-mass = 1
|
||||
; Frequency = 1*2*1 = 2
|
||||
; CHECK-NEXT: outer: float = 2.0,
|
||||
outer:
|
||||
%I.0 = phi i32 [ 0, %entry ], [ %inc12, %outer.inc ]
|
||||
%Return.0 = phi i32 [ 0, %entry ], [ %Return.3, %outer.inc ]
|
||||
%cmp = icmp slt i32 %I.0, %N
|
||||
br i1 %cmp, label %middle, label %exit, !prof !3 ; 1:1
|
||||
|
||||
; Mass = 1
|
||||
; Backedge mass = 1/3, exit mass = 2/3
|
||||
; Loop scale = 3/2
|
||||
; Psuedo-edges = outer.inc
|
||||
; Psuedo-mass = 1/2
|
||||
; Frequency = 2*1*3/2*1/2 = 3/2
|
||||
; CHECK-NEXT: middle: float = 1.5,
|
||||
middle:
|
||||
%J.0 = phi i32 [ %I.0, %outer ], [ %inc9, %middle.inc ]
|
||||
%Return.1 = phi i32 [ %Return.0, %outer ], [ %Return.2, %middle.inc ]
|
||||
%cmp2 = icmp slt i32 %J.0, %N
|
||||
br i1 %cmp2, label %inner, label %outer.inc, !prof !2 ; 2:1
|
||||
|
||||
; Mass = 1
|
||||
; Backedge mass = 3/5, exit mass = 2/5
|
||||
; Loop scale = 5/2
|
||||
; Pseudo-edges = middle.inc @ 1/5, outer.inc @ 1/5
|
||||
; Pseudo-mass = 2/3
|
||||
; Frequency = 3/2*1*5/2*2/3 = 5/2
|
||||
; CHECK-NEXT: inner: float = 2.5,
|
||||
inner:
|
||||
%Return.2 = phi i32 [ %Return.1, %middle ], [ %call7, %inner.inc ]
|
||||
%K.0 = phi i32 [ %J.0, %middle ], [ %inc, %inner.inc ]
|
||||
%cmp5 = icmp slt i32 %K.0, %N
|
||||
br i1 %cmp5, label %inner.body, label %middle.inc, !prof !1 ; 4:1
|
||||
|
||||
; Mass = 4/5
|
||||
; Frequency = 5/2*4/5 = 2
|
||||
; CHECK-NEXT: inner.body: float = 2.0,
|
||||
inner.body:
|
||||
%call = call i32 @c3(i32 %I.0, i32 %J.0, i32 %K.0)
|
||||
%tobool = icmp ne i32 %call, 0
|
||||
br i1 %tobool, label %outer.inc, label %inner.inc, !prof !0 ; 3:1
|
||||
|
||||
; Mass = 3/5
|
||||
; Frequency = 5/2*3/5 = 3/2
|
||||
; CHECK-NEXT: inner.inc: float = 1.5,
|
||||
inner.inc:
|
||||
%call7 = call i32 @logic3(i32 %Return.2, i32 %I.0, i32 %J.0, i32 %K.0)
|
||||
%inc = add nsw i32 %K.0, 1
|
||||
br label %inner
|
||||
|
||||
; Mass = 1/3
|
||||
; Frequency = 3/2*1/3 = 1/2
|
||||
; CHECK-NEXT: middle.inc: float = 0.5,
|
||||
middle.inc:
|
||||
%inc9 = add nsw i32 %J.0, 1
|
||||
br label %middle
|
||||
|
||||
; Mass = 1/2
|
||||
; Frequency = 2*1/2 = 1
|
||||
; CHECK-NEXT: outer.inc: float = 1.0,
|
||||
outer.inc:
|
||||
%Return.3 = phi i32 [ %Return.2, %inner.body ], [ %Return.1, %middle ]
|
||||
%inc12 = add nsw i32 %I.0, 1
|
||||
br label %outer
|
||||
|
||||
; Mass = 1
|
||||
; Frequency = 1
|
||||
; CHECK-NEXT: exit: float = 1.0, int = [[ENTRY]]
|
||||
exit:
|
||||
ret i32 %Return.0
|
||||
}
|
||||
|
||||
!3 = metadata !{metadata !"branch_weights", i32 1, i32 1}
|
||||
|
||||
declare i32 @c3(i32, i32, i32)
|
||||
declare i32 @logic3(i32, i32, i32, i32)
|
||||
Reference in New Issue
Block a user