forked from OSchip/llvm-project
[MIRPrinter] Print raw branch probabilities as expected by MIRParser
Fixes PR28751. Reviewers: MatzeB, qcolombet Subscribers: mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D26775 llvm-svn: 287368
This commit is contained in:
parent
2a3d10ae61
commit
b51774ac8c
|
@ -488,7 +488,8 @@ bool MIParser::parseBasicBlockSuccessors(MachineBasicBlock &MBB) {
|
|||
lex();
|
||||
unsigned Weight = 0;
|
||||
if (consumeIfPresent(MIToken::lparen)) {
|
||||
if (Token.isNot(MIToken::IntegerLiteral))
|
||||
if (Token.isNot(MIToken::IntegerLiteral) &&
|
||||
Token.isNot(MIToken::HexLiteral))
|
||||
return error("expected an integer literal after '('");
|
||||
if (getUnsigned(Weight))
|
||||
return true;
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/ModuleSlotTracker.h"
|
||||
#include "llvm/MC/MCSymbol.h"
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
@ -481,7 +482,9 @@ void MIPrinter::print(const MachineBasicBlock &MBB) {
|
|||
OS << ", ";
|
||||
printMBBReference(**I);
|
||||
if (MBB.hasSuccessorProbabilities())
|
||||
OS << '(' << MBB.getSuccProbability(I) << ')';
|
||||
OS << '('
|
||||
<< format("0x%08" PRIx32, MBB.getSuccProbability(I).getNumerator())
|
||||
<< ')';
|
||||
}
|
||||
OS << "\n";
|
||||
HasLineAttributes = true;
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
; RUN: llc -stop-after machine-sink %s -o %t.mir
|
||||
; RUN: FileCheck %s < %t.mir
|
||||
; RUN: llc %t.mir -run-pass machine-sink
|
||||
; Check that branch probabilities are printed in a format that can then be parsed.
|
||||
|
||||
declare void @foo()
|
||||
declare void @bar()
|
||||
|
||||
define void @test(i1 %c) {
|
||||
; CHECK-LABEL: name: test
|
||||
entry:
|
||||
br i1 %c, label %then, label %else
|
||||
|
||||
then:
|
||||
call void @foo()
|
||||
br label %end
|
||||
; CHECK: successors: %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}}), %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}})
|
||||
|
||||
else:
|
||||
call void @bar()
|
||||
br label %end
|
||||
; CHECK: successors: %{{[a-z0-9\-\.]+}}({{0x[0-9a-f]+}})
|
||||
|
||||
end:
|
||||
ret void
|
||||
}
|
|
@ -35,7 +35,7 @@ liveins:
|
|||
# CHECK-LABEL: name: foo
|
||||
# CHECK: body: |
|
||||
# CHECK-NEXT: bb.0.entry:
|
||||
# CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%)
|
||||
# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000)
|
||||
# CHECK-NEXT: liveins: %edi
|
||||
# CHECK: CMP32ri8 %edi, 10, implicit-def %eflags
|
||||
# CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
|
||||
|
@ -79,7 +79,7 @@ liveins:
|
|||
# CHECK-LABEL: name: bar
|
||||
# CHECK: body: |
|
||||
# CHECK-NEXT: bb.0.entry:
|
||||
# CHECK-NEXT: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%)
|
||||
# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000)
|
||||
# CHECK-NEXT: liveins: %edi
|
||||
# CHECK: CMP32ri8 %edi, 10, implicit-def %eflags
|
||||
# CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
name: foo
|
||||
body: |
|
||||
; CHECK-LABEL: bb.0.entry:
|
||||
; CHECK: successors: %bb.1.less({{[0-9a-fx/= ]+}}33.00%), %bb.2.exit({{[0-9a-fx/= ]+}}67.00%)
|
||||
; CHECK: successors: %bb.1.less(0x2a3d70a4), %bb.2.exit(0x55c28f5c)
|
||||
; CHECK-LABEL: bb.1.less:
|
||||
bb.0.entry:
|
||||
successors: %bb.1.less (33), %bb.2.exit(67)
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
name: foo
|
||||
body: |
|
||||
; CHECK-LABEL: bb.0.entry:
|
||||
; CHECK: successors: %bb.1.less(0x40000000 / 0x80000000 = 50.00%), %bb.2.exit(0x40000000 / 0x80000000 = 50.00%)
|
||||
; CHECK: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000)
|
||||
; CHECK-LABEL: bb.1.less:
|
||||
bb.0.entry:
|
||||
successors: %bb.1.less, %bb.2.exit
|
||||
|
@ -58,7 +58,7 @@ body: |
|
|||
; Verify that we can have multiple lists of successors that will be merged
|
||||
; into one.
|
||||
; CHECK-LABEL: bb.0.entry:
|
||||
; CHECK: successors: %bb.1(0x80000000 / 0x80000000 = 100.00%), %bb.2(0x00000000 / 0x80000000 = 0.00%)
|
||||
; CHECK: successors: %bb.1(0x80000000), %bb.2(0x00000000)
|
||||
bb.0.entry:
|
||||
liveins: %edi
|
||||
successors: %bb.1
|
||||
|
|
Loading…
Reference in New Issue