xref: /llvm-project/llvm/test/Analysis/BranchProbabilityInfo/fcmp.ll (revision bb6497ffa6a88d1b3a32101d9b6519094d75ef2a)
1; RUN: opt < %s -passes='print<branch-prob>' -disable-output 2>&1 | FileCheck %s
2
3; This function tests the floating point unorder comparison. The probability
4; of NaN should be extremely small.
5; CHECK: Printing analysis {{.*}} for function 'uno'
6; CHECK:  edge %0 -> %a probability is 0x00000800 / 0x80000000 = 0.00%
7; CHECK:  edge %0 -> %b probability is 0x7ffff800 / 0x80000000 = 100.00% [HOT edge]
8
9define void @uno(float %val1, float %val2) {
10  %cond = fcmp uno float %val1, %val2
11  br i1 %cond, label %a, label %b
12
13a:
14  call void @fa()
15  ret void
16
17b:
18  call void @fb()
19  ret void
20}
21
22; This function tests the floating point order comparison.
23; CHECK: Printing analysis {{.*}} for function 'ord'
24; CHECK:  edge %0 -> %a probability is 0x7ffff800 / 0x80000000 = 100.00% [HOT edge]
25; CHECK:  edge %0 -> %b probability is 0x00000800 / 0x80000000 = 0.00%
26
27define void @ord(float %val1, float %val2) {
28  %cond = fcmp ord float %val1, %val2
29  br i1 %cond, label %a, label %b
30
31a:
32  call void @fa()
33  ret void
34
35b:
36  call void @fb()
37  ret void
38}
39
40declare void @fa()
41declare void @fb()
42