[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / stackmap-fast-isel.ll
blobdd25065f30639b91245728fce8bc26b19df976a6
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7                             | FileCheck %s
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -fast-isel -fast-isel-abort=1 | FileCheck %s
4 ; CHECK-LABEL:  .section  __LLVM_STACKMAPS,__llvm_stackmaps
5 ; CHECK-NEXT:  __LLVM_StackMaps:
6 ; Header
7 ; CHECK-NEXT:   .byte 3
8 ; CHECK-NEXT:   .byte 0
9 ; CHECK-NEXT:   .short 0
10 ; Num Functions
11 ; CHECK-NEXT:   .long 4
12 ; Num LargeConstants
13 ; CHECK-NEXT:   .long 3
14 ; Num Callsites
15 ; CHECK-NEXT:   .long 7
17 ; Functions and stack size
18 ; CHECK-NEXT:   .quad _constantargs
19 ; CHECK-NEXT:   .quad 8
20 ; CHECK-NEXT:   .quad 1
21 ; CHECK-NEXT:   .quad _liveConstant
22 ; CHECK-NEXT:   .quad 8
23 ; CHECK-NEXT:   .quad 1
24 ; CHECK-NEXT:   .quad _directFrameIdx
25 ; CHECK-NEXT:   .quad 40
26 ; CHECK-NEXT:   .quad 1
27 ; CHECK-NEXT:   .quad _longid
28 ; CHECK-NEXT:   .quad 8
29 ; CHECK-NEXT:   .quad 4
31 ; Large Constants
32 ; CHECK-NEXT:   .quad   2147483648
33 ; CHECK-NEXT:   .quad   4294967295
34 ; CHECK-NEXT:   .quad   4294967296
36 ; Callsites
37 ; Constant arguments
39 ; CHECK-NEXT:   .quad   1
40 ; CHECK-NEXT:   .long   L{{.*}}-_constantargs
41 ; CHECK-NEXT:   .short  0
42 ; CHECK-NEXT:   .short  12
43 ; SmallConstant
44 ; CHECK-NEXT:   .byte   4
45 ; CHECK-NEXT:   .byte   0
46 ; CHECK-NEXT:   .short  8
47 ; CHECK-NEXT:   .short  0
48 ; CHECK-NEXT:   .short  0
49 ; CHECK-NEXT:   .long   -1
50 ; SmallConstant
51 ; CHECK-NEXT:   .byte   4
52 ; CHECK-NEXT:   .byte   0
53 ; CHECK-NEXT:   .short  8
54 ; CHECK-NEXT:   .short  0
55 ; CHECK-NEXT:   .short  0
56 ; CHECK-NEXT:   .long   -1
57 ; SmallConstant
58 ; CHECK-NEXT:   .byte   4
59 ; CHECK-NEXT:   .byte   0
60 ; CHECK-NEXT:   .short  8
61 ; CHECK-NEXT:   .short  0
62 ; CHECK-NEXT:   .short  0
63 ; CHECK-NEXT:   .long   65536
64 ; SmallConstant
65 ; CHECK-NEXT:   .byte   4
66 ; CHECK-NEXT:   .byte   0
67 ; CHECK-NEXT:   .short  8
68 ; CHECK-NEXT:   .short  0
69 ; CHECK-NEXT:   .short  0
70 ; CHECK-NEXT:   .long   2000000000
71 ; SmallConstant
72 ; CHECK-NEXT:   .byte   4
73 ; CHECK-NEXT:   .byte   0
74 ; CHECK-NEXT:   .short  8
75 ; CHECK-NEXT:   .short  0
76 ; CHECK-NEXT:   .short  0
77 ; CHECK-NEXT:   .long   2147483647
78 ; SmallConstant
79 ; CHECK-NEXT:   .byte   4
80 ; CHECK-NEXT:   .byte   0
81 ; CHECK-NEXT:   .short  8
82 ; CHECK-NEXT:   .short  0
83 ; CHECK-NEXT:   .short  0
84 ; CHECK-NEXT:   .long   -1
85 ; SmallConstant
86 ; CHECK-NEXT:   .byte   4
87 ; CHECK-NEXT:   .byte   0
88 ; CHECK-NEXT:   .short  8
89 ; CHECK-NEXT:   .short  0
90 ; CHECK-NEXT:   .short  0
91 ; CHECK-NEXT:   .long   -1
92 ; SmallConstant
93 ; CHECK-NEXT:   .byte   4
94 ; CHECK-NEXT:   .byte   0
95 ; CHECK-NEXT:   .short  8
96 ; CHECK-NEXT:   .short  0
97 ; CHECK-NEXT:   .short  0
98 ; CHECK-NEXT:   .long   0
99 ; LargeConstant at index 0
100 ; CHECK-NEXT:   .byte   5
101 ; CHECK-NEXT:   .byte   0
102 ; CHECK-NEXT:   .short  8
103 ; CHECK-NEXT:   .short  0
104 ; CHECK-NEXT:   .short  0
105 ; CHECK-NEXT:   .long   0
106 ; LargeConstant at index 1
107 ; CHECK-NEXT:   .byte   5
108 ; CHECK-NEXT:   .byte   0
109 ; CHECK-NEXT:   .short  8
110 ; CHECK-NEXT:   .short  0
111 ; CHECK-NEXT:   .short  0
112 ; CHECK-NEXT:   .long   1
113 ; LargeConstant at index 2
114 ; CHECK-NEXT:   .byte   5
115 ; CHECK-NEXT:   .byte   0
116 ; CHECK-NEXT:   .short  8
117 ; CHECK-NEXT:   .short  0
118 ; CHECK-NEXT:   .short  0
119 ; CHECK-NEXT:   .long   2
120 ; SmallConstant
121 ; CHECK-NEXT:   .byte   4
122 ; CHECK-NEXT:   .byte   0
123 ; CHECK-NEXT:   .short  8
124 ; CHECK-NEXT:   .short  0
125 ; CHECK-NEXT:   .short  0
126 ; CHECK-NEXT:   .long   -1
128 define void @constantargs() {
129 entry:
130   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 15, i16 65535, i16 -1, i32 65536, i32 2000000000, i32 2147483647, i32 -1, i32 4294967295, i32 4294967296, i64 2147483648, i64 4294967295, i64 4294967296, i64 -1)
131   ret void
134 ; Map a constant value.
136 ; CHECK-LABEL:  .long L{{.*}}-_liveConstant
137 ; CHECK-NEXT:   .short 0
138 ; 1 location
139 ; CHECK-NEXT:   .short 1
140 ; Loc 0: SmallConstant
141 ; CHECK-NEXT:   .byte   4
142 ; CHECK-NEXT:   .byte   0
143 ; CHECK-NEXT:   .short  8
144 ; CHECK-NEXT:   .short  0
145 ; CHECK-NEXT:   .short  0
146 ; CHECK-NEXT:   .long   33
148 define void @liveConstant() {
149   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 5, i32 33)
150   ret void
153 ; Directly map an alloca's address.
155 ; Callsite 16
156 ; CHECK-LABEL:  .long L{{.*}}-_directFrameIdx
157 ; CHECK-NEXT:   .short 0
158 ; 1 location
159 ; CHECK-NEXT:   .short  1
160 ; Loc 0: Direct rbp - ofs
161 ; CHECK-NEXT:   .byte   2
162 ; CHECK-NEXT:   .byte   0
163 ; CHECK-NEXT:   .short  8
164 ; CHECK-NEXT:   .short  6
165 ; CHECK-NEXT:   .short  0
166 ; CHECK-NEXT:   .long
168 define void @directFrameIdx() {
169 entry:
170   %metadata1 = alloca i64, i32 3, align 8
171   store i64 11, i64* %metadata1
172   store i64 12, i64* %metadata1
173   store i64 13, i64* %metadata1
174   call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 0, i64* %metadata1)
175   ret void
178 ; Test a 64-bit ID.
180 ; CHECK:        .quad 4294967295
181 ; CHECK-LABEL:  .long L{{.*}}-_longid
182 ; CHECK:        .quad 4294967296
183 ; CHECK-LABEL:  .long L{{.*}}-_longid
184 ; CHECK:        .quad 9223372036854775807
185 ; CHECK-LABEL:  .long L{{.*}}-_longid
186 ; CHECK:        .quad -1
187 ; CHECK-LABEL:  .long L{{.*}}-_longid
188 define void @longid() {
189 entry:
190   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967295, i32 0)
191   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967296, i32 0)
192   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9223372036854775807, i32 0)
193   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 -1, i32 0)
194   ret void
197 declare void @llvm.experimental.stackmap(i64, i32, ...)