4
4
define i64 @expect_i64 (i64 %arg0 ) {
5
5
; CHECK-LABEL: name: expect_i64
6
6
; CHECK: bb.1 (%ir-block.0):
7
- ; CHECK: liveins: $x0
8
- ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
9
- ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY [[COPY]](s64)
10
- ; CHECK: $x0 = COPY [[COPY1]](s64)
11
- ; CHECK: RET_ReallyLR implicit $x0
7
+ ; CHECK-NEXT: liveins: $x0
8
+ ; CHECK-NEXT: {{ $}}
9
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
10
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY [[COPY]](s64)
11
+ ; CHECK-NEXT: $x0 = COPY [[COPY1]](s64)
12
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
12
13
%expval = call i64 @llvm.expect.i64 (i64 %arg0 , i64 1 )
13
14
ret i64 %expval
14
15
}
15
16
17
+ define i64 @expect_with_probability_i64 (i64 %arg0 ) {
18
+ ; CHECK-LABEL: name: expect_with_probability_i64
19
+ ; CHECK: bb.1 (%ir-block.0):
20
+ ; CHECK-NEXT: liveins: $x0
21
+ ; CHECK-NEXT: {{ $}}
22
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
23
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
24
+ ; CHECK-NEXT: [[INT:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.expect.with.probability), [[COPY]](s64), [[C]](s64), double 5.000000e-01
25
+ ; CHECK-NEXT: $x0 = COPY [[INT]](s64)
26
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
27
+ %expval = call i64 @llvm.expect.with.probability.i64 (i64 %arg0 , i64 1 , double 0 .5 )
28
+ ret i64 %expval
29
+ }
30
+
16
31
define ptr @ptr_annotate (ptr %arg0 , ptr %arg1 , ptr %arg2 , i32 %arg3 ) {
17
32
; CHECK-LABEL: name: ptr_annotate
18
33
; CHECK: bb.1 (%ir-block.0):
19
- ; CHECK: liveins: $w3, $x0, $x1, $x2
20
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
21
- ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
22
- ; CHECK: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
23
- ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
24
- ; CHECK: [[COPY4:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
25
- ; CHECK: $x0 = COPY [[COPY4]](p0)
26
- ; CHECK: RET_ReallyLR implicit $x0
34
+ ; CHECK-NEXT: liveins: $w3, $x0, $x1, $x2
35
+ ; CHECK-NEXT: {{ $}}
36
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
37
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
38
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
39
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
40
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
41
+ ; CHECK-NEXT: $x0 = COPY [[COPY4]](p0)
42
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
27
43
%call = call ptr @llvm.ptr.annotation.p0 (ptr %arg0 , ptr %arg1 , ptr %arg2 , i32 %arg3 , ptr null )
28
44
ret ptr %call
29
45
}
@@ -34,40 +50,44 @@ define ptr @ptr_annotate(ptr %arg0, ptr %arg1, ptr %arg2, i32 %arg3) {
34
50
define i32 @annotation (i32 %a ) {
35
51
; CHECK-LABEL: name: annotation
36
52
; CHECK: bb.1 (%ir-block.0):
37
- ; CHECK: liveins: $w0
38
- ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
39
- ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
40
- ; CHECK: $w0 = COPY [[COPY1]](s32)
41
- ; CHECK: RET_ReallyLR implicit $w0
53
+ ; CHECK-NEXT: liveins: $w0
54
+ ; CHECK-NEXT: {{ $}}
55
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
56
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
57
+ ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32)
58
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
42
59
%call = call i32 @llvm.annotation.i32 (i32 %a , ptr @.str , ptr @.str1 , i32 2 )
43
60
ret i32 %call
44
61
}
45
62
46
63
define ptr @launder_invariant_group (ptr %p ) {
47
64
; CHECK-LABEL: name: launder_invariant_group
48
65
; CHECK: bb.1 (%ir-block.0):
49
- ; CHECK: liveins: $x0
50
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
51
- ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
52
- ; CHECK: $x0 = COPY [[COPY1]](p0)
53
- ; CHECK: RET_ReallyLR implicit $x0
66
+ ; CHECK-NEXT: liveins: $x0
67
+ ; CHECK-NEXT: {{ $}}
68
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
69
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
70
+ ; CHECK-NEXT: $x0 = COPY [[COPY1]](p0)
71
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
54
72
%q = call ptr @llvm.launder.invariant.group.p0 (ptr %p )
55
73
ret ptr %q
56
74
}
57
75
58
76
define ptr @strip_invariant_group (ptr %p ) {
59
77
; CHECK-LABEL: name: strip_invariant_group
60
78
; CHECK: bb.1 (%ir-block.0):
61
- ; CHECK: liveins: $x0
62
- ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
63
- ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
64
- ; CHECK: $x0 = COPY [[COPY1]](p0)
65
- ; CHECK: RET_ReallyLR implicit $x0
79
+ ; CHECK-NEXT: liveins: $x0
80
+ ; CHECK-NEXT: {{ $}}
81
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
82
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
83
+ ; CHECK-NEXT: $x0 = COPY [[COPY1]](p0)
84
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
66
85
%q = call ptr @llvm.strip.invariant.group.p0 (ptr %p )
67
86
ret ptr %q
68
87
}
69
88
70
89
declare i64 @llvm.expect.i64 (i64 , i64 ) #0
90
+ declare i64 @llvm.expect.with.probability.i64 (i64 , i64 , double ) #0
71
91
declare ptr @llvm.ptr.annotation.p0 (ptr , ptr , ptr , i32 , ptr ) #1
72
92
declare i32 @llvm.annotation.i32 (i32 , ptr , ptr , i32 ) #1
73
93
declare ptr @llvm.launder.invariant.group.p0 (ptr ) #2
0 commit comments