annotate llvm/test/Transforms/GlobalOpt/fastcc.ll @ 201:a96fbbdf2d0f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Jun 2021 21:07:06 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; RUN: opt < %s -globalopt -S | FileCheck %s
anatofuz
parents:
diff changeset
2
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
3 declare token @llvm.call.preallocated.setup(i32)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
4 declare i8* @llvm.call.preallocated.arg(token, i32)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
5
150
anatofuz
parents:
diff changeset
6 define internal i32 @f(i32* %m) {
anatofuz
parents:
diff changeset
7 ; CHECK-LABEL: define internal fastcc i32 @f
anatofuz
parents:
diff changeset
8 %v = load i32, i32* %m
anatofuz
parents:
diff changeset
9 ret i32 %v
anatofuz
parents:
diff changeset
10 }
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 define internal x86_thiscallcc i32 @g(i32* %m) {
anatofuz
parents:
diff changeset
13 ; CHECK-LABEL: define internal fastcc i32 @g
anatofuz
parents:
diff changeset
14 %v = load i32, i32* %m
anatofuz
parents:
diff changeset
15 ret i32 %v
anatofuz
parents:
diff changeset
16 }
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 ; Leave this one alone, because the user went out of their way to request this
anatofuz
parents:
diff changeset
19 ; convention.
anatofuz
parents:
diff changeset
20 define internal coldcc i32 @h(i32* %m) {
anatofuz
parents:
diff changeset
21 ; CHECK-LABEL: define internal coldcc i32 @h
anatofuz
parents:
diff changeset
22 %v = load i32, i32* %m
anatofuz
parents:
diff changeset
23 ret i32 %v
anatofuz
parents:
diff changeset
24 }
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 define internal i32 @j(i32* %m) {
anatofuz
parents:
diff changeset
27 ; CHECK-LABEL: define internal i32 @j
anatofuz
parents:
diff changeset
28 %v = load i32, i32* %m
anatofuz
parents:
diff changeset
29 ret i32 %v
anatofuz
parents:
diff changeset
30 }
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 define internal i32 @inalloca(i32* inalloca %p) {
anatofuz
parents:
diff changeset
33 ; CHECK-LABEL: define internal fastcc i32 @inalloca(i32* %p)
anatofuz
parents:
diff changeset
34 %rv = load i32, i32* %p
anatofuz
parents:
diff changeset
35 ret i32 %rv
anatofuz
parents:
diff changeset
36 }
anatofuz
parents:
diff changeset
37
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
38 define internal i32 @preallocated(i32* preallocated(i32) %p) {
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
39 ; TODO: handle preallocated:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
40 ; CHECK-NOT-LABEL: define internal fastcc i32 @preallocated(i32* %p)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
41 %rv = load i32, i32* %p
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
42 ret i32 %rv
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
43 }
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
44
150
anatofuz
parents:
diff changeset
45 define void @call_things() {
anatofuz
parents:
diff changeset
46 %m = alloca i32
anatofuz
parents:
diff changeset
47 call i32 @f(i32* %m)
anatofuz
parents:
diff changeset
48 call x86_thiscallcc i32 @g(i32* %m)
anatofuz
parents:
diff changeset
49 call coldcc i32 @h(i32* %m)
anatofuz
parents:
diff changeset
50 call i32 @j(i32* %m)
anatofuz
parents:
diff changeset
51 %args = alloca inalloca i32
anatofuz
parents:
diff changeset
52 call i32 @inalloca(i32* inalloca %args)
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
53 ; TODO: handle preallocated
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
54 ;%c = call token @llvm.call.preallocated.setup(i32 1)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
55 ;%N = call i8* @llvm.call.preallocated.arg(token %c, i32 0) preallocated(i32)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
56 ;%n = bitcast i8* %N to i32*
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
57 ;call i32 @preallocated(i32* preallocated(i32) %n) ["preallocated"(token %c)]
150
anatofuz
parents:
diff changeset
58 ret void
anatofuz
parents:
diff changeset
59 }
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 @llvm.used = appending global [1 x i8*] [
anatofuz
parents:
diff changeset
62 i8* bitcast (i32(i32*)* @j to i8*)
anatofuz
parents:
diff changeset
63 ], section "llvm.metadata"
anatofuz
parents:
diff changeset
64
anatofuz
parents:
diff changeset
65 ; CHECK-LABEL: define void @call_things()
anatofuz
parents:
diff changeset
66 ; CHECK: call fastcc i32 @f
anatofuz
parents:
diff changeset
67 ; CHECK: call fastcc i32 @g
anatofuz
parents:
diff changeset
68 ; CHECK: call coldcc i32 @h
anatofuz
parents:
diff changeset
69 ; CHECK: call i32 @j
anatofuz
parents:
diff changeset
70 ; CHECK: call fastcc i32 @inalloca(i32* %args)