1
+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
+ ; RUN: llc < %s -mtriple=x86_64 -mattr=+branch-hint -enable-branch-hint | FileCheck %s
3
+ ; RUN: llc < %s -mtriple=x86_64 -mattr=+branch-hint -enable-branch-hint -branch-hint-probability-threshold=50 | FileCheck %s
4
+ ; RUN: llc < %s -mtriple=x86_64 -mattr=+branch-hint -enable-branch-hint -branch-hint-probability-threshold=60 -tail-dup-placement=false | FileCheck --check-prefix=TH60 %s
5
+
6
+
7
+ ; Design: Add DS segment override prefix for condition branch who has high
8
+ ; probability to take (which is greater than the probability threshold of
9
+ ; enabling branch hint).
10
+
11
+ define void @p51 (i32 %x , ptr %p ) {
12
+ ; CHECK-LABEL: p51:
13
+ ; CHECK: # %bb.0: # %entry
14
+ ; CHECK-NEXT: testl %edi, %edi
15
+ ; CHECK-NEXT: ds
16
+ ; CHECK-NEXT: je .LBB0_2
17
+ ; CHECK-NEXT: # %bb.1: # %if.then
18
+ ; CHECK-NEXT: movl %edi, (%rsi)
19
+ ; CHECK-NEXT: .LBB0_2: # %if.end
20
+ ; CHECK-NEXT: retq
21
+ ;
22
+ ; TH60-LABEL: p51:
23
+ ; TH60: # %bb.0: # %entry
24
+ ; TH60-NEXT: testl %edi, %edi
25
+ ; TH60-NEXT: je .LBB0_2
26
+ ; TH60-NEXT: # %bb.1: # %if.then
27
+ ; TH60-NEXT: movl %edi, (%rsi)
28
+ ; TH60-NEXT: .LBB0_2: # %if.end
29
+ ; TH60-NEXT: retq
30
+ entry:
31
+ %tobool.not = icmp eq i32 %x , 0
32
+ br i1 %tobool.not , label %if.end , label %if.then , !prof !0
33
+
34
+ if.then:
35
+ store i32 %x , ptr %p , align 4
36
+ br label %if.end
37
+
38
+ if.end:
39
+ ret void
40
+ }
41
+
42
+ define void @p61 (i32 %x , ptr %p ) {
43
+ ; CHECK-LABEL: p61:
44
+ ; CHECK: # %bb.0: # %entry
45
+ ; CHECK-NEXT: testl %edi, %edi
46
+ ; CHECK-NEXT: jne .LBB1_1
47
+ ; CHECK-NEXT: # %bb.2: # %if.end
48
+ ; CHECK-NEXT: retq
49
+ ; CHECK-NEXT: .LBB1_1: # %if.then
50
+ ; CHECK-NEXT: movl %edi, (%rsi)
51
+ ; CHECK-NEXT: retq
52
+ ;
53
+ ; TH60-LABEL: p61:
54
+ ; TH60: # %bb.0: # %entry
55
+ ; TH60-NEXT: testl %edi, %edi
56
+ ; TH60-NEXT: ds
57
+ ; TH60-NEXT: je .LBB1_2
58
+ ; TH60-NEXT: # %bb.1: # %if.then
59
+ ; TH60-NEXT: movl %edi, (%rsi)
60
+ ; TH60-NEXT: .LBB1_2: # %if.end
61
+ ; TH60-NEXT: retq
62
+ entry:
63
+ %tobool.not = icmp eq i32 %x , 0
64
+ br i1 %tobool.not , label %if.end , label %if.then , !prof !1
65
+
66
+ if.then:
67
+ store i32 %x , ptr %p , align 4
68
+ br label %if.end
69
+
70
+ if.end:
71
+ ret void
72
+ }
73
+
74
+ !0 = !{!"branch_weights" , i32 51 , i32 49 }
75
+ !1 = !{!"branch_weights" , i32 61 , i32 39 }
0 commit comments