OLD | NEW |
1 ; Tests validating the vfp calling convention for ARM32. | 1 ; Tests validating the vfp calling convention for ARM32. |
2 ; | 2 ; |
3 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 3 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
4 ; RUN: --command %p2i --filetype=asm --assemble \ | 4 ; RUN: --command %p2i --filetype=asm --assemble \ |
5 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ | 5 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
6 ; RUN: -allow-externally-defined-symbols \ | 6 ; RUN: -allow-externally-defined-symbols \ |
7 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 7 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
8 ; RUN: --command FileCheck %s | 8 ; RUN: --command FileCheck %s |
9 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 9 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
10 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ | 10 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 float %p5, float %p6, float %p7, float %p8, float %p9, | 55 float %p5, float %p6, float %p7, float %p8, float %p9, |
56 float %p10, float %p11, float %p12, float %p13, | 56 float %p10, float %p11, float %p12, float %p13, |
57 float %p14, float %p15, float %p16) | 57 float %p14, float %p15, float %p16) |
58 declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4, | 58 declare void @float18(float %p0, float %p1, float %p2, float %p3, float %p4, |
59 float %p5, float %p6, float %p7, float %p8, float %p9, | 59 float %p5, float %p6, float %p7, float %p8, float %p9, |
60 float %p10, float %p11, float %p12, float %p13, | 60 float %p10, float %p11, float %p12, float %p13, |
61 float %p14, float %p15, float %p16, float %p17) | 61 float %p14, float %p15, float %p16, float %p17) |
62 define internal void @floatHarness() nounwind { | 62 define internal void @floatHarness() nounwind { |
63 ; CHECK-LABEL: floatHarness | 63 ; CHECK-LABEL: floatHarness |
64 call void @float1(float 1.0) | 64 call void @float1(float 1.0) |
65 ; CHECK-DAG: vldr s0 | 65 ; CHECK-DAG: vmov.f32 s0 |
66 ; CHECK: bl {{.*}} float1 | 66 ; CHECK: bl {{.*}} float1 |
67 call void @float2(float 1.0, float 2.0) | 67 call void @float2(float 1.0, float 2.0) |
68 ; CHECK-DAG: vldr s0 | 68 ; CHECK-DAG: vmov.f32 s0 |
69 ; CHECK-DAG: vldr s1 | 69 ; CHECK-DAG: vmov.f32 s1 |
70 ; CHECK: bl {{.*}} float2 | 70 ; CHECK: bl {{.*}} float2 |
71 call void @float3(float 1.0, float 2.0, float 3.0) | 71 call void @float3(float 1.0, float 2.0, float 3.0) |
72 ; CHECK-DAG: vldr s0 | 72 ; CHECK-DAG: vmov.f32 s0 |
73 ; CHECK-DAG: vldr s1 | 73 ; CHECK-DAG: vmov.f32 s1 |
74 ; CHECK-DAG: vldr s2 | 74 ; CHECK-DAG: vmov.f32 s2 |
75 ; CHECK: bl {{.*}} float3 | 75 ; CHECK: bl {{.*}} float3 |
76 call void @float4(float 1.0, float 2.0, float 3.0, float 4.0) | 76 call void @float4(float 1.0, float 2.0, float 3.0, float 4.0) |
77 ; CHECK-DAG: vldr s0 | 77 ; CHECK-DAG: vmov.f32 s0 |
78 ; CHECK-DAG: vldr s1 | 78 ; CHECK-DAG: vmov.f32 s1 |
79 ; CHECK-DAG: vldr s2 | 79 ; CHECK-DAG: vmov.f32 s2 |
80 ; CHECK-DAG: vldr s3 | 80 ; CHECK-DAG: vmov.f32 s3 |
81 ; CHECK: bl {{.*}} float4 | 81 ; CHECK: bl {{.*}} float4 |
82 call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0) | 82 call void @float5(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0) |
83 ; CHECK-DAG: vldr s0 | 83 ; CHECK-DAG: vmov.f32 s0 |
84 ; CHECK-DAG: vldr s1 | 84 ; CHECK-DAG: vmov.f32 s1 |
85 ; CHECK-DAG: vldr s2 | 85 ; CHECK-DAG: vmov.f32 s2 |
86 ; CHECK-DAG: vldr s3 | 86 ; CHECK-DAG: vmov.f32 s3 |
87 ; CHECK-DAG: vldr s4 | 87 ; CHECK-DAG: vmov.f32 s4 |
88 ; CHECK: bl {{.*}} float5 | 88 ; CHECK: bl {{.*}} float5 |
89 call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 89 call void @float6(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
90 float 6.0) | 90 float 6.0) |
91 ; CHECK-DAG: vldr s0 | 91 ; CHECK-DAG: vmov.f32 s0 |
92 ; CHECK-DAG: vldr s1 | 92 ; CHECK-DAG: vmov.f32 s1 |
93 ; CHECK-DAG: vldr s2 | 93 ; CHECK-DAG: vmov.f32 s2 |
94 ; CHECK-DAG: vldr s3 | 94 ; CHECK-DAG: vmov.f32 s3 |
95 ; CHECK-DAG: vldr s4 | 95 ; CHECK-DAG: vmov.f32 s4 |
96 ; CHECK-DAG: vldr s5 | 96 ; CHECK-DAG: vmov.f32 s5 |
97 ; CHECK: bl {{.*}} float6 | 97 ; CHECK: bl {{.*}} float6 |
98 call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 98 call void @float7(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
99 float 6.0, float 7.0) | 99 float 6.0, float 7.0) |
100 ; CHECK-DAG: vldr s0 | 100 ; CHECK-DAG: vmov.f32 s0 |
101 ; CHECK-DAG: vldr s1 | 101 ; CHECK-DAG: vmov.f32 s1 |
102 ; CHECK-DAG: vldr s2 | 102 ; CHECK-DAG: vmov.f32 s2 |
103 ; CHECK-DAG: vldr s3 | 103 ; CHECK-DAG: vmov.f32 s3 |
104 ; CHECK-DAG: vldr s4 | 104 ; CHECK-DAG: vmov.f32 s4 |
105 ; CHECK-DAG: vldr s5 | 105 ; CHECK-DAG: vmov.f32 s5 |
106 ; CHECK-DAG: vldr s6 | 106 ; CHECK-DAG: vmov.f32 s6 |
107 ; CHECK: bl {{.*}} float7 | 107 ; CHECK: bl {{.*}} float7 |
108 call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 108 call void @float8(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
109 float 6.0, float 7.0, float 8.0) | 109 float 6.0, float 7.0, float 8.0) |
110 ; CHECK-DAG: vldr s0 | 110 ; CHECK-DAG: vmov.f32 s0 |
111 ; CHECK-DAG: vldr s1 | 111 ; CHECK-DAG: vmov.f32 s1 |
112 ; CHECK-DAG: vldr s2 | 112 ; CHECK-DAG: vmov.f32 s2 |
113 ; CHECK-DAG: vldr s3 | 113 ; CHECK-DAG: vmov.f32 s3 |
114 ; CHECK-DAG: vldr s4 | 114 ; CHECK-DAG: vmov.f32 s4 |
115 ; CHECK-DAG: vldr s5 | 115 ; CHECK-DAG: vmov.f32 s5 |
116 ; CHECK-DAG: vldr s6 | 116 ; CHECK-DAG: vmov.f32 s6 |
117 ; CHECK-DAG: vldr s7 | 117 ; CHECK-DAG: vmov.f32 s7 |
118 ; CHECK: bl {{.*}} float8 | 118 ; CHECK: bl {{.*}} float8 |
119 call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 119 call void @float9(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
120 float 6.0, float 7.0, float 8.0, float 9.0) | 120 float 6.0, float 7.0, float 8.0, float 9.0) |
121 ; CHECK-DAG: vldr s0 | 121 ; CHECK-DAG: vmov.f32 s0 |
122 ; CHECK-DAG: vldr s1 | 122 ; CHECK-DAG: vmov.f32 s1 |
123 ; CHECK-DAG: vldr s2 | 123 ; CHECK-DAG: vmov.f32 s2 |
124 ; CHECK-DAG: vldr s3 | 124 ; CHECK-DAG: vmov.f32 s3 |
125 ; CHECK-DAG: vldr s4 | 125 ; CHECK-DAG: vmov.f32 s4 |
126 ; CHECK-DAG: vldr s5 | 126 ; CHECK-DAG: vmov.f32 s5 |
127 ; CHECK-DAG: vldr s6 | 127 ; CHECK-DAG: vmov.f32 s6 |
128 ; CHECK-DAG: vldr s7 | 128 ; CHECK-DAG: vmov.f32 s7 |
129 ; CHECK-DAG: vldr s8 | 129 ; CHECK-DAG: vmov.f32 s8 |
130 ; CHECK: bl {{.*}} float9 | 130 ; CHECK: bl {{.*}} float9 |
131 call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 131 call void @float10(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
132 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0) | 132 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0) |
133 ; CHECK-DAG: vldr s0 | 133 ; CHECK-DAG: vmov.f32 s0 |
134 ; CHECK-DAG: vldr s1 | 134 ; CHECK-DAG: vmov.f32 s1 |
135 ; CHECK-DAG: vldr s2 | 135 ; CHECK-DAG: vmov.f32 s2 |
136 ; CHECK-DAG: vldr s3 | 136 ; CHECK-DAG: vmov.f32 s3 |
137 ; CHECK-DAG: vldr s4 | 137 ; CHECK-DAG: vmov.f32 s4 |
138 ; CHECK-DAG: vldr s5 | 138 ; CHECK-DAG: vmov.f32 s5 |
139 ; CHECK-DAG: vldr s6 | 139 ; CHECK-DAG: vmov.f32 s6 |
140 ; CHECK-DAG: vldr s7 | 140 ; CHECK-DAG: vmov.f32 s7 |
141 ; CHECK-DAG: vldr s8 | 141 ; CHECK-DAG: vmov.f32 s8 |
142 ; CHECK-DAG: vldr s9 | 142 ; CHECK-DAG: vmov.f32 s9 |
143 ; CHECK: bl {{.*}} float10 | 143 ; CHECK: bl {{.*}} float10 |
144 call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 144 call void @float11(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
145 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 145 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
146 float 11.0) | 146 float 11.0) |
147 ; CHECK-DAG: vldr s0 | 147 ; CHECK-DAG: vmov.f32 s0 |
148 ; CHECK-DAG: vldr s1 | 148 ; CHECK-DAG: vmov.f32 s1 |
149 ; CHECK-DAG: vldr s2 | 149 ; CHECK-DAG: vmov.f32 s2 |
150 ; CHECK-DAG: vldr s3 | 150 ; CHECK-DAG: vmov.f32 s3 |
151 ; CHECK-DAG: vldr s4 | 151 ; CHECK-DAG: vmov.f32 s4 |
152 ; CHECK-DAG: vldr s5 | 152 ; CHECK-DAG: vmov.f32 s5 |
153 ; CHECK-DAG: vldr s6 | 153 ; CHECK-DAG: vmov.f32 s6 |
154 ; CHECK-DAG: vldr s7 | 154 ; CHECK-DAG: vmov.f32 s7 |
155 ; CHECK-DAG: vldr s8 | 155 ; CHECK-DAG: vmov.f32 s8 |
156 ; CHECK-DAG: vldr s9 | 156 ; CHECK-DAG: vmov.f32 s9 |
157 ; CHECK-DAG: vldr s10 | 157 ; CHECK-DAG: vmov.f32 s10 |
158 ; CHECK: bl {{.*}} float11 | 158 ; CHECK: bl {{.*}} float11 |
159 call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 159 call void @float12(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
160 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 160 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
161 float 11.0, float 12.0) | 161 float 11.0, float 12.0) |
162 ; CHECK-DAG: vldr s0 | 162 ; CHECK-DAG: vmov.f32 s0 |
163 ; CHECK-DAG: vldr s1 | 163 ; CHECK-DAG: vmov.f32 s1 |
164 ; CHECK-DAG: vldr s2 | 164 ; CHECK-DAG: vmov.f32 s2 |
165 ; CHECK-DAG: vldr s3 | 165 ; CHECK-DAG: vmov.f32 s3 |
166 ; CHECK-DAG: vldr s4 | 166 ; CHECK-DAG: vmov.f32 s4 |
167 ; CHECK-DAG: vldr s5 | 167 ; CHECK-DAG: vmov.f32 s5 |
168 ; CHECK-DAG: vldr s6 | 168 ; CHECK-DAG: vmov.f32 s6 |
169 ; CHECK-DAG: vldr s7 | 169 ; CHECK-DAG: vmov.f32 s7 |
170 ; CHECK-DAG: vldr s8 | 170 ; CHECK-DAG: vmov.f32 s8 |
171 ; CHECK-DAG: vldr s9 | 171 ; CHECK-DAG: vmov.f32 s9 |
172 ; CHECK-DAG: vldr s10 | 172 ; CHECK-DAG: vmov.f32 s10 |
173 ; CHECK-DAG: vldr s11 | 173 ; CHECK-DAG: vmov.f32 s11 |
174 ; CHECK: bl {{.*}} float12 | 174 ; CHECK: bl {{.*}} float12 |
175 call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 175 call void @float13(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
176 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 176 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
177 float 11.0, float 12.0, float 13.0) | 177 float 11.0, float 12.0, float 13.0) |
178 ; CHECK-DAG: vldr s0 | 178 ; CHECK-DAG: vmov.f32 s0 |
179 ; CHECK-DAG: vldr s1 | 179 ; CHECK-DAG: vmov.f32 s1 |
180 ; CHECK-DAG: vldr s2 | 180 ; CHECK-DAG: vmov.f32 s2 |
181 ; CHECK-DAG: vldr s3 | 181 ; CHECK-DAG: vmov.f32 s3 |
182 ; CHECK-DAG: vldr s4 | 182 ; CHECK-DAG: vmov.f32 s4 |
183 ; CHECK-DAG: vldr s5 | 183 ; CHECK-DAG: vmov.f32 s5 |
184 ; CHECK-DAG: vldr s6 | 184 ; CHECK-DAG: vmov.f32 s6 |
185 ; CHECK-DAG: vldr s7 | 185 ; CHECK-DAG: vmov.f32 s7 |
186 ; CHECK-DAG: vldr s8 | 186 ; CHECK-DAG: vmov.f32 s8 |
187 ; CHECK-DAG: vldr s9 | 187 ; CHECK-DAG: vmov.f32 s9 |
188 ; CHECK-DAG: vldr s10 | 188 ; CHECK-DAG: vmov.f32 s10 |
189 ; CHECK-DAG: vldr s11 | 189 ; CHECK-DAG: vmov.f32 s11 |
190 ; CHECK-DAG: vldr s12 | 190 ; CHECK-DAG: vmov.f32 s12 |
191 ; CHECK: bl {{.*}} float13 | 191 ; CHECK: bl {{.*}} float13 |
192 call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 192 call void @float14(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
193 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 193 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
194 float 11.0, float 12.0, float 13.0, float 14.0) | 194 float 11.0, float 12.0, float 13.0, float 14.0) |
195 ; CHECK-DAG: vldr s0 | 195 ; CHECK-DAG: vmov.f32 s0 |
196 ; CHECK-DAG: vldr s1 | 196 ; CHECK-DAG: vmov.f32 s1 |
197 ; CHECK-DAG: vldr s2 | 197 ; CHECK-DAG: vmov.f32 s2 |
198 ; CHECK-DAG: vldr s3 | 198 ; CHECK-DAG: vmov.f32 s3 |
199 ; CHECK-DAG: vldr s4 | 199 ; CHECK-DAG: vmov.f32 s4 |
200 ; CHECK-DAG: vldr s5 | 200 ; CHECK-DAG: vmov.f32 s5 |
201 ; CHECK-DAG: vldr s6 | 201 ; CHECK-DAG: vmov.f32 s6 |
202 ; CHECK-DAG: vldr s7 | 202 ; CHECK-DAG: vmov.f32 s7 |
203 ; CHECK-DAG: vldr s8 | 203 ; CHECK-DAG: vmov.f32 s8 |
204 ; CHECK-DAG: vldr s9 | 204 ; CHECK-DAG: vmov.f32 s9 |
205 ; CHECK-DAG: vldr s10 | 205 ; CHECK-DAG: vmov.f32 s10 |
206 ; CHECK-DAG: vldr s11 | 206 ; CHECK-DAG: vmov.f32 s11 |
207 ; CHECK-DAG: vldr s12 | 207 ; CHECK-DAG: vmov.f32 s12 |
208 ; CHECK-DAG: vldr s13 | 208 ; CHECK-DAG: vmov.f32 s13 |
209 ; CHECK: bl {{.*}} float14 | 209 ; CHECK: bl {{.*}} float14 |
210 call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 210 call void @float15(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
211 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 211 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
212 float 11.0, float 12.0, float 13.0, float 14.0, | 212 float 11.0, float 12.0, float 13.0, float 14.0, |
213 float 15.0) | 213 float 15.0) |
214 ; CHECK-DAG: vldr s0 | 214 ; CHECK-DAG: vmov.f32 s0 |
215 ; CHECK-DAG: vldr s1 | 215 ; CHECK-DAG: vmov.f32 s1 |
216 ; CHECK-DAG: vldr s2 | 216 ; CHECK-DAG: vmov.f32 s2 |
217 ; CHECK-DAG: vldr s3 | 217 ; CHECK-DAG: vmov.f32 s3 |
218 ; CHECK-DAG: vldr s4 | 218 ; CHECK-DAG: vmov.f32 s4 |
219 ; CHECK-DAG: vldr s5 | 219 ; CHECK-DAG: vmov.f32 s5 |
220 ; CHECK-DAG: vldr s6 | 220 ; CHECK-DAG: vmov.f32 s6 |
221 ; CHECK-DAG: vldr s7 | 221 ; CHECK-DAG: vmov.f32 s7 |
222 ; CHECK-DAG: vldr s8 | 222 ; CHECK-DAG: vmov.f32 s8 |
223 ; CHECK-DAG: vldr s9 | 223 ; CHECK-DAG: vmov.f32 s9 |
224 ; CHECK-DAG: vldr s10 | 224 ; CHECK-DAG: vmov.f32 s10 |
225 ; CHECK-DAG: vldr s11 | 225 ; CHECK-DAG: vmov.f32 s11 |
226 ; CHECK-DAG: vldr s12 | 226 ; CHECK-DAG: vmov.f32 s12 |
227 ; CHECK-DAG: vldr s13 | 227 ; CHECK-DAG: vmov.f32 s13 |
228 ; CHECK-DAG: vldr s14 | 228 ; CHECK-DAG: vmov.f32 s14 |
229 ; CHECK: bl {{.*}} float15 | 229 ; CHECK: bl {{.*}} float15 |
230 call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 230 call void @float16(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
231 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 231 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
232 float 11.0, float 12.0, float 13.0, float 14.0, | 232 float 11.0, float 12.0, float 13.0, float 14.0, |
233 float 15.0, float 16.0) | 233 float 15.0, float 16.0) |
234 ; CHECK-DAG: vldr s0 | 234 ; CHECK-DAG: vmov.f32 s0 |
235 ; CHECK-DAG: vldr s1 | 235 ; CHECK-DAG: vmov.f32 s1 |
236 ; CHECK-DAG: vldr s2 | 236 ; CHECK-DAG: vmov.f32 s2 |
237 ; CHECK-DAG: vldr s3 | 237 ; CHECK-DAG: vmov.f32 s3 |
238 ; CHECK-DAG: vldr s4 | 238 ; CHECK-DAG: vmov.f32 s4 |
239 ; CHECK-DAG: vldr s5 | 239 ; CHECK-DAG: vmov.f32 s5 |
240 ; CHECK-DAG: vldr s6 | 240 ; CHECK-DAG: vmov.f32 s6 |
241 ; CHECK-DAG: vldr s7 | 241 ; CHECK-DAG: vmov.f32 s7 |
242 ; CHECK-DAG: vldr s8 | 242 ; CHECK-DAG: vmov.f32 s8 |
243 ; CHECK-DAG: vldr s9 | 243 ; CHECK-DAG: vmov.f32 s9 |
244 ; CHECK-DAG: vldr s10 | 244 ; CHECK-DAG: vmov.f32 s10 |
245 ; CHECK-DAG: vldr s11 | 245 ; CHECK-DAG: vmov.f32 s11 |
246 ; CHECK-DAG: vldr s12 | 246 ; CHECK-DAG: vmov.f32 s12 |
247 ; CHECK-DAG: vldr s13 | 247 ; CHECK-DAG: vmov.f32 s13 |
248 ; CHECK-DAG: vldr s14 | 248 ; CHECK-DAG: vmov.f32 s14 |
249 ; CHECK-DAG: vldr s15 | 249 ; CHECK-DAG: vmov.f32 s15 |
250 ; CHECK: bl {{.*}} float16 | 250 ; CHECK: bl {{.*}} float16 |
251 call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 251 call void @float17(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
252 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 252 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
253 float 11.0, float 12.0, float 13.0, float 14.0, | 253 float 11.0, float 12.0, float 13.0, float 14.0, |
254 float 15.0, float 16.0, float 17.0) | 254 float 15.0, float 16.0, float 17.0) |
255 ; CHECK-DAG: vldr s0 | 255 ; CHECK-DAG: vmov.f32 s0 |
256 ; CHECK-DAG: vldr s1 | 256 ; CHECK-DAG: vmov.f32 s1 |
257 ; CHECK-DAG: vldr s2 | 257 ; CHECK-DAG: vmov.f32 s2 |
258 ; CHECK-DAG: vldr s3 | 258 ; CHECK-DAG: vmov.f32 s3 |
259 ; CHECK-DAG: vldr s4 | 259 ; CHECK-DAG: vmov.f32 s4 |
260 ; CHECK-DAG: vldr s5 | 260 ; CHECK-DAG: vmov.f32 s5 |
261 ; CHECK-DAG: vldr s6 | 261 ; CHECK-DAG: vmov.f32 s6 |
262 ; CHECK-DAG: vldr s7 | 262 ; CHECK-DAG: vmov.f32 s7 |
263 ; CHECK-DAG: vldr s8 | 263 ; CHECK-DAG: vmov.f32 s8 |
264 ; CHECK-DAG: vldr s9 | 264 ; CHECK-DAG: vmov.f32 s9 |
265 ; CHECK-DAG: vldr s10 | 265 ; CHECK-DAG: vmov.f32 s10 |
266 ; CHECK-DAG: vldr s11 | 266 ; CHECK-DAG: vmov.f32 s11 |
267 ; CHECK-DAG: vldr s12 | 267 ; CHECK-DAG: vmov.f32 s12 |
268 ; CHECK-DAG: vldr s13 | 268 ; CHECK-DAG: vmov.f32 s13 |
269 ; CHECK-DAG: vldr s14 | 269 ; CHECK-DAG: vmov.f32 s14 |
270 ; CHECK-DAG: vldr s15 | 270 ; CHECK-DAG: vmov.f32 s15 |
271 ; CHECK-DAG: vstr s{{.*}}, [sp] | 271 ; CHECK-DAG: vstr s{{.*}}, [sp] |
272 ; CHECK: bl {{.*}} float17 | 272 ; CHECK: bl {{.*}} float17 |
273 call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, | 273 call void @float18(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, |
274 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, | 274 float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, |
275 float 11.0, float 12.0, float 13.0, float 14.0, | 275 float 11.0, float 12.0, float 13.0, float 14.0, |
276 float 15.0, float 16.0, float 17.0, float 18.0) | 276 float 15.0, float 16.0, float 17.0, float 18.0) |
277 ; CHECK-DAG: vldr s0 | 277 ; CHECK-DAG: vmov.f32 s0 |
278 ; CHECK-DAG: vldr s1 | 278 ; CHECK-DAG: vmov.f32 s1 |
279 ; CHECK-DAG: vldr s2 | 279 ; CHECK-DAG: vmov.f32 s2 |
280 ; CHECK-DAG: vldr s3 | 280 ; CHECK-DAG: vmov.f32 s3 |
281 ; CHECK-DAG: vldr s4 | 281 ; CHECK-DAG: vmov.f32 s4 |
282 ; CHECK-DAG: vldr s5 | 282 ; CHECK-DAG: vmov.f32 s5 |
283 ; CHECK-DAG: vldr s6 | 283 ; CHECK-DAG: vmov.f32 s6 |
284 ; CHECK-DAG: vldr s7 | 284 ; CHECK-DAG: vmov.f32 s7 |
285 ; CHECK-DAG: vldr s8 | 285 ; CHECK-DAG: vmov.f32 s8 |
286 ; CHECK-DAG: vldr s9 | 286 ; CHECK-DAG: vmov.f32 s9 |
287 ; CHECK-DAG: vldr s10 | 287 ; CHECK-DAG: vmov.f32 s10 |
288 ; CHECK-DAG: vldr s11 | 288 ; CHECK-DAG: vmov.f32 s11 |
289 ; CHECK-DAG: vldr s12 | 289 ; CHECK-DAG: vmov.f32 s12 |
290 ; CHECK-DAG: vldr s13 | 290 ; CHECK-DAG: vmov.f32 s13 |
291 ; CHECK-DAG: vldr s14 | 291 ; CHECK-DAG: vmov.f32 s14 |
292 ; CHECK-DAG: vldr s15 | 292 ; CHECK-DAG: vmov.f32 s15 |
293 ; CHECK-DAG: vstr s{{.*}}, [sp] | 293 ; CHECK-DAG: vstr s{{.*}}, [sp] |
294 ; CHECK-DAG: vstr s{{.*}}, [sp, #4] | 294 ; CHECK-DAG: vstr s{{.*}}, [sp, #4] |
295 ; CHECK: bl {{.*}} float18 | 295 ; CHECK: bl {{.*}} float18 |
296 ret void | 296 ret void |
297 } | 297 } |
298 | 298 |
299 declare void @double1(double %p0) | 299 declare void @double1(double %p0) |
300 declare void @double2(double %p0, double %p1) | 300 declare void @double2(double %p0, double %p1) |
301 declare void @double3(double %p0, double %p1, double %p2) | 301 declare void @double3(double %p0, double %p1, double %p2) |
302 declare void @double4(double %p0, double %p1, double %p2, double %p3) | 302 declare void @double4(double %p0, double %p1, double %p2, double %p3) |
303 declare void @double5(double %p0, double %p1, double %p2, double %p3, | 303 declare void @double5(double %p0, double %p1, double %p2, double %p3, |
304 double %p4) | 304 double %p4) |
305 declare void @double6(double %p0, double %p1, double %p2, double %p3, | 305 declare void @double6(double %p0, double %p1, double %p2, double %p3, |
306 double %p4, double %p5) | 306 double %p4, double %p5) |
307 declare void @double7(double %p0, double %p1, double %p2, double %p3, | 307 declare void @double7(double %p0, double %p1, double %p2, double %p3, |
308 double %p4, double %p5, double %p6) | 308 double %p4, double %p5, double %p6) |
309 declare void @double8(double %p0, double %p1, double %p2, double %p3, | 309 declare void @double8(double %p0, double %p1, double %p2, double %p3, |
310 double %p4, double %p5, double %p6, double %p7) | 310 double %p4, double %p5, double %p6, double %p7) |
311 declare void @double9(double %p0, double %p1, double %p2, double %p3, | 311 declare void @double9(double %p0, double %p1, double %p2, double %p3, |
312 double %p4, double %p5, double %p6, double %p7, | 312 double %p4, double %p5, double %p6, double %p7, |
313 double %p8) | 313 double %p8) |
314 declare void @double10(double %p0, double %p1, double %p2, double %p3, | 314 declare void @double10(double %p0, double %p1, double %p2, double %p3, |
315 double %p4, double %p5, double %p6, double %p7, | 315 double %p4, double %p5, double %p6, double %p7, |
316 double %p8, double %p9) | 316 double %p8, double %p9) |
317 define internal void @doubleHarness() nounwind { | 317 define internal void @doubleHarness() nounwind { |
318 ; CHECK-LABEL: doubleHarness | 318 ; CHECK-LABEL: doubleHarness |
319 call void @double1(double 1.0) | 319 call void @double1(double 1.0) |
320 ; CHECK-DAG: vldr d0 | 320 ; CHECK-DAG: vmov.f64 d0 |
321 ; CHECK: bl {{.*}} double1 | 321 ; CHECK: bl {{.*}} double1 |
322 call void @double2(double 1.0, double 2.0) | 322 call void @double2(double 1.0, double 2.0) |
323 ; CHECK-DAG: vldr d0 | 323 ; CHECK-DAG: vmov.f64 d0 |
324 ; CHECK-DAG: vldr d1 | 324 ; CHECK-DAG: vmov.f64 d1 |
325 ; CHECK: bl {{.*}} double2 | 325 ; CHECK: bl {{.*}} double2 |
326 call void @double3(double 1.0, double 2.0, double 3.0) | 326 call void @double3(double 1.0, double 2.0, double 3.0) |
327 ; CHECK-DAG: vldr d0 | 327 ; CHECK-DAG: vmov.f64 d0 |
328 ; CHECK-DAG: vldr d1 | 328 ; CHECK-DAG: vmov.f64 d1 |
329 ; CHECK-DAG: vldr d2 | 329 ; CHECK-DAG: vmov.f64 d2 |
330 ; CHECK: bl {{.*}} double3 | 330 ; CHECK: bl {{.*}} double3 |
331 call void @double4(double 1.0, double 2.0, double 3.0, double 4.0) | 331 call void @double4(double 1.0, double 2.0, double 3.0, double 4.0) |
332 ; CHECK-DAG: vldr d0 | 332 ; CHECK-DAG: vmov.f64 d0 |
333 ; CHECK-DAG: vldr d1 | 333 ; CHECK-DAG: vmov.f64 d1 |
334 ; CHECK-DAG: vldr d2 | 334 ; CHECK-DAG: vmov.f64 d2 |
335 ; CHECK-DAG: vldr d3 | 335 ; CHECK-DAG: vmov.f64 d3 |
336 ; CHECK: bl {{.*}} double4 | 336 ; CHECK: bl {{.*}} double4 |
337 call void @double5(double 1.0, double 2.0, double 3.0, double 4.0, | 337 call void @double5(double 1.0, double 2.0, double 3.0, double 4.0, |
338 double 5.0) | 338 double 5.0) |
339 ; CHECK-DAG: vldr d0 | 339 ; CHECK-DAG: vmov.f64 d0 |
340 ; CHECK-DAG: vldr d1 | 340 ; CHECK-DAG: vmov.f64 d1 |
341 ; CHECK-DAG: vldr d2 | 341 ; CHECK-DAG: vmov.f64 d2 |
342 ; CHECK-DAG: vldr d3 | 342 ; CHECK-DAG: vmov.f64 d3 |
343 ; CHECK-DAG: vldr d4 | 343 ; CHECK-DAG: vmov.f64 d4 |
344 ; CHECK: bl {{.*}} double5 | 344 ; CHECK: bl {{.*}} double5 |
345 call void @double6(double 1.0, double 2.0, double 3.0, double 4.0, | 345 call void @double6(double 1.0, double 2.0, double 3.0, double 4.0, |
346 double 5.0, double 6.0) | 346 double 5.0, double 6.0) |
347 ; CHECK-DAG: vldr d0 | 347 ; CHECK-DAG: vmov.f64 d0 |
348 ; CHECK-DAG: vldr d1 | 348 ; CHECK-DAG: vmov.f64 d1 |
349 ; CHECK-DAG: vldr d2 | 349 ; CHECK-DAG: vmov.f64 d2 |
350 ; CHECK-DAG: vldr d3 | 350 ; CHECK-DAG: vmov.f64 d3 |
351 ; CHECK-DAG: vldr d4 | 351 ; CHECK-DAG: vmov.f64 d4 |
352 ; CHECK-DAG: vldr d5 | 352 ; CHECK-DAG: vmov.f64 d5 |
353 ; CHECK: bl {{.*}} double6 | 353 ; CHECK: bl {{.*}} double6 |
354 call void @double7(double 1.0, double 2.0, double 3.0, double 4.0, | 354 call void @double7(double 1.0, double 2.0, double 3.0, double 4.0, |
355 double 5.0, double 6.0, double 7.0) | 355 double 5.0, double 6.0, double 7.0) |
356 ; CHECK-DAG: vldr d0 | 356 ; CHECK-DAG: vmov.f64 d0 |
357 ; CHECK-DAG: vldr d1 | 357 ; CHECK-DAG: vmov.f64 d1 |
358 ; CHECK-DAG: vldr d2 | 358 ; CHECK-DAG: vmov.f64 d2 |
359 ; CHECK-DAG: vldr d3 | 359 ; CHECK-DAG: vmov.f64 d3 |
360 ; CHECK-DAG: vldr d4 | 360 ; CHECK-DAG: vmov.f64 d4 |
361 ; CHECK-DAG: vldr d5 | 361 ; CHECK-DAG: vmov.f64 d5 |
362 ; CHECK-DAG: vldr d6 | 362 ; CHECK-DAG: vmov.f64 d6 |
363 ; CHECK: bl {{.*}} double7 | 363 ; CHECK: bl {{.*}} double7 |
364 call void @double8(double 1.0, double 2.0, double 3.0, double 4.0, | 364 call void @double8(double 1.0, double 2.0, double 3.0, double 4.0, |
365 double 5.0, double 6.0, double 7.0, double 8.0) | 365 double 5.0, double 6.0, double 7.0, double 8.0) |
366 ; CHECK-DAG: vldr d0 | 366 ; CHECK-DAG: vmov.f64 d0 |
367 ; CHECK-DAG: vldr d1 | 367 ; CHECK-DAG: vmov.f64 d1 |
368 ; CHECK-DAG: vldr d2 | 368 ; CHECK-DAG: vmov.f64 d2 |
369 ; CHECK-DAG: vldr d3 | 369 ; CHECK-DAG: vmov.f64 d3 |
370 ; CHECK-DAG: vldr d4 | 370 ; CHECK-DAG: vmov.f64 d4 |
371 ; CHECK-DAG: vldr d5 | 371 ; CHECK-DAG: vmov.f64 d5 |
372 ; CHECK-DAG: vldr d6 | 372 ; CHECK-DAG: vmov.f64 d6 |
373 ; CHECK-DAG: vldr d7 | 373 ; CHECK-DAG: vmov.f64 d7 |
374 ; CHECK: bl {{.*}} double8 | 374 ; CHECK: bl {{.*}} double8 |
375 call void @double9(double 1.0, double 2.0, double 3.0, double 4.0, | 375 call void @double9(double 1.0, double 2.0, double 3.0, double 4.0, |
376 double 5.0, double 6.0, double 7.0, double 8.0, | 376 double 5.0, double 6.0, double 7.0, double 8.0, |
377 double 9.0) | 377 double 9.0) |
378 ; CHECK-DAG: vldr d0 | 378 ; CHECK-DAG: vmov.f64 d0 |
379 ; CHECK-DAG: vldr d1 | 379 ; CHECK-DAG: vmov.f64 d1 |
380 ; CHECK-DAG: vldr d2 | 380 ; CHECK-DAG: vmov.f64 d2 |
381 ; CHECK-DAG: vldr d3 | 381 ; CHECK-DAG: vmov.f64 d3 |
382 ; CHECK-DAG: vldr d4 | 382 ; CHECK-DAG: vmov.f64 d4 |
383 ; CHECK-DAG: vldr d5 | 383 ; CHECK-DAG: vmov.f64 d5 |
384 ; CHECK-DAG: vldr d6 | 384 ; CHECK-DAG: vmov.f64 d6 |
385 ; CHECK-DAG: vldr d7 | 385 ; CHECK-DAG: vmov.f64 d7 |
386 ; CHECK-DAG: vstr d{{.*}}, [sp] | 386 ; CHECK-DAG: vstr d{{.*}}, [sp] |
387 ; CHECK: bl {{.*}} double9 | 387 ; CHECK: bl {{.*}} double9 |
388 call void @double10(double 1.0, double 2.0, double 3.0, double 4.0, | 388 call void @double10(double 1.0, double 2.0, double 3.0, double 4.0, |
389 double 5.0, double 6.0, double 7.0, double 8.0, | 389 double 5.0, double 6.0, double 7.0, double 8.0, |
390 double 9.0, double 10.0) | 390 double 9.0, double 10.0) |
391 ; CHECK-DAG: vldr d0 | 391 ; CHECK-DAG: vmov.f64 d0 |
392 ; CHECK-DAG: vldr d1 | 392 ; CHECK-DAG: vmov.f64 d1 |
393 ; CHECK-DAG: vldr d2 | 393 ; CHECK-DAG: vmov.f64 d2 |
394 ; CHECK-DAG: vldr d3 | 394 ; CHECK-DAG: vmov.f64 d3 |
395 ; CHECK-DAG: vldr d4 | 395 ; CHECK-DAG: vmov.f64 d4 |
396 ; CHECK-DAG: vldr d5 | 396 ; CHECK-DAG: vmov.f64 d5 |
397 ; CHECK-DAG: vldr d6 | 397 ; CHECK-DAG: vmov.f64 d6 |
398 ; CHECK-DAG: vldr d7 | 398 ; CHECK-DAG: vmov.f64 d7 |
399 ; CHECK-DAG: vstr d{{.*}}, [sp] | 399 ; CHECK-DAG: vstr d{{.*}}, [sp] |
400 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] | 400 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] |
401 ; CHECK: bl {{.*}} double10 | 401 ; CHECK: bl {{.*}} double10 |
402 | 402 |
403 ret void | 403 ret void |
404 } | 404 } |
405 | 405 |
406 declare void @testFDF(float %p0, double %p1, float %p2) | 406 declare void @testFDF(float %p0, double %p1, float %p2) |
407 declare void @testFDDF(float %p0, double %p1, double %p2, float %p3) | 407 declare void @testFDDF(float %p0, double %p1, double %p2, float %p3) |
408 declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3, | 408 declare void @testFDDDF(float %p0, double %p1, double %p2, double %p3, |
(...skipping 18 matching lines...) Expand all Loading... |
427 double %p8, double %p9, float %p10) | 427 double %p8, double %p9, float %p10) |
428 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, | 428 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, |
429 double %p4, double %p5, double %p6, double %p7, | 429 double %p4, double %p5, double %p6, double %p7, |
430 double %p8, float %p9, double %p10) | 430 double %p8, float %p9, double %p10) |
431 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, | 431 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, |
432 double %p4, double %p5, double %p6, double %p7, | 432 double %p4, double %p5, double %p6, double %p7, |
433 double %p8, float %p9, double %p10, float %p11) | 433 double %p8, float %p9, double %p10, float %p11) |
434 define internal void @packsFloats() nounwind { | 434 define internal void @packsFloats() nounwind { |
435 ; CHECK-LABEL: packsFloats | 435 ; CHECK-LABEL: packsFloats |
436 call void @testFDF(float 1.0, double 2.0, float 3.0) | 436 call void @testFDF(float 1.0, double 2.0, float 3.0) |
437 ; CHECK-DAG: vldr s0 | 437 ; CHECK-DAG: vmov.f32 s0 |
438 ; CHECK-DAG: vldr d1 | 438 ; CHECK-DAG: vmov.f64 d1 |
439 ; CHECK-DAG: vldr s1 | 439 ; CHECK-DAG: vmov.f32 s1 |
440 ; CHECK: bl {{.*}} testFDF | 440 ; CHECK: bl {{.*}} testFDF |
441 call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0) | 441 call void @testFDDF(float 1.0, double 2.0, double 3.0, float 4.0) |
442 ; CHECK-DAG: vldr s0 | 442 ; CHECK-DAG: vmov.f32 s0 |
443 ; CHECK-DAG: vldr d1 | 443 ; CHECK-DAG: vmov.f64 d1 |
444 ; CHECK-DAG: vldr d2 | 444 ; CHECK-DAG: vmov.f64 d2 |
445 ; CHECK-DAG: vldr s1 | 445 ; CHECK-DAG: vmov.f32 s1 |
446 ; CHECK: bl {{.*}} testFDDF | 446 ; CHECK: bl {{.*}} testFDDF |
447 call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 447 call void @testFDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
448 float 5.0) | 448 float 5.0) |
449 ; CHECK-DAG: vldr s0 | 449 ; CHECK-DAG: vmov.f32 s0 |
450 ; CHECK-DAG: vldr d1 | 450 ; CHECK-DAG: vmov.f64 d1 |
451 ; CHECK-DAG: vldr d2 | 451 ; CHECK-DAG: vmov.f64 d2 |
452 ; CHECK-DAG: vldr d3 | 452 ; CHECK-DAG: vmov.f64 d3 |
453 ; CHECK-DAG: vldr s1 | 453 ; CHECK-DAG: vmov.f32 s1 |
454 ; CHECK: bl {{.*}} testFDDDF | 454 ; CHECK: bl {{.*}} testFDDDF |
455 call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 455 call void @testFDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
456 double 5.0, float 6.0) | 456 double 5.0, float 6.0) |
457 ; CHECK-DAG: vldr s0 | 457 ; CHECK-DAG: vmov.f32 s0 |
458 ; CHECK-DAG: vldr d1 | 458 ; CHECK-DAG: vmov.f64 d1 |
459 ; CHECK-DAG: vldr d2 | 459 ; CHECK-DAG: vmov.f64 d2 |
460 ; CHECK-DAG: vldr d3 | 460 ; CHECK-DAG: vmov.f64 d3 |
461 ; CHECK-DAG: vldr d4 | 461 ; CHECK-DAG: vmov.f64 d4 |
462 ; CHECK-DAG: vldr s1 | 462 ; CHECK-DAG: vmov.f32 s1 |
463 ; CHECK: bl {{.*}} testFDDDDF | 463 ; CHECK: bl {{.*}} testFDDDDF |
464 call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 464 call void @testFDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
465 double 5.0, double 6.0, float 7.0) | 465 double 5.0, double 6.0, float 7.0) |
466 ; CHECK-DAG: vldr s0 | 466 ; CHECK-DAG: vmov.f32 s0 |
467 ; CHECK-DAG: vldr d1 | 467 ; CHECK-DAG: vmov.f64 d1 |
468 ; CHECK-DAG: vldr d2 | 468 ; CHECK-DAG: vmov.f64 d2 |
469 ; CHECK-DAG: vldr d3 | 469 ; CHECK-DAG: vmov.f64 d3 |
470 ; CHECK-DAG: vldr d4 | 470 ; CHECK-DAG: vmov.f64 d4 |
471 ; CHECK-DAG: vldr d5 | 471 ; CHECK-DAG: vmov.f64 d5 |
472 ; CHECK-DAG: vldr s1 | 472 ; CHECK-DAG: vmov.f32 s1 |
473 ; CHECK: bl {{.*}} testFDDDDDF | 473 ; CHECK: bl {{.*}} testFDDDDDF |
474 call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 474 call void @testFDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
475 double 5.0, double 6.0, double 7.0, float 8.0) | 475 double 5.0, double 6.0, double 7.0, float 8.0) |
476 ; CHECK-DAG: vldr s0 | 476 ; CHECK-DAG: vmov.f32 s0 |
477 ; CHECK-DAG: vldr d1 | 477 ; CHECK-DAG: vmov.f64 d1 |
478 ; CHECK-DAG: vldr d2 | 478 ; CHECK-DAG: vmov.f64 d2 |
479 ; CHECK-DAG: vldr d3 | 479 ; CHECK-DAG: vmov.f64 d3 |
480 ; CHECK-DAG: vldr d4 | 480 ; CHECK-DAG: vmov.f64 d4 |
481 ; CHECK-DAG: vldr d5 | 481 ; CHECK-DAG: vmov.f64 d5 |
482 ; CHECK-DAG: vldr d6 | 482 ; CHECK-DAG: vmov.f64 d6 |
483 ; CHECK-DAG: vldr s1 | 483 ; CHECK-DAG: vmov.f32 s1 |
484 ; CHECK: bl {{.*}} testFDDDDDDF | 484 ; CHECK: bl {{.*}} testFDDDDDDF |
485 call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 485 call void @testFDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
486 double 5.0, double 6.0, double 7.0, double 8.0, | 486 double 5.0, double 6.0, double 7.0, double 8.0, |
487 float 9.0) | 487 float 9.0) |
488 ; CHECK-DAG: vldr s0 | 488 ; CHECK-DAG: vmov.f32 s0 |
489 ; CHECK-DAG: vldr d1 | 489 ; CHECK-DAG: vmov.f64 d1 |
490 ; CHECK-DAG: vldr d2 | 490 ; CHECK-DAG: vmov.f64 d2 |
491 ; CHECK-DAG: vldr d3 | 491 ; CHECK-DAG: vmov.f64 d3 |
492 ; CHECK-DAG: vldr d4 | 492 ; CHECK-DAG: vmov.f64 d4 |
493 ; CHECK-DAG: vldr d5 | 493 ; CHECK-DAG: vmov.f64 d5 |
494 ; CHECK-DAG: vldr d6 | 494 ; CHECK-DAG: vmov.f64 d6 |
495 ; CHECK-DAG: vldr d7 | 495 ; CHECK-DAG: vmov.f64 d7 |
496 ; CHECK-DAG: vldr s1 | 496 ; CHECK-DAG: vmov.f32 s1 |
497 ; CHECK: bl {{.*}} testFDDDDDDDF | 497 ; CHECK: bl {{.*}} testFDDDDDDDF |
498 call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, | 498 call void @testFDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, |
499 double 5.0, double 6.0, double 7.0, double 8.0, | 499 double 5.0, double 6.0, double 7.0, double 8.0, |
500 float 9.0, double 10.0) | 500 float 9.0, double 10.0) |
501 ; CHECK-DAG: vldr s0 | 501 ; CHECK-DAG: vmov.f32 s0 |
502 ; CHECK-DAG: vldr d1 | 502 ; CHECK-DAG: vmov.f64 d1 |
503 ; CHECK-DAG: vldr d2 | 503 ; CHECK-DAG: vmov.f64 d2 |
504 ; CHECK-DAG: vldr d3 | 504 ; CHECK-DAG: vmov.f64 d3 |
505 ; CHECK-DAG: vldr d4 | 505 ; CHECK-DAG: vmov.f64 d4 |
506 ; CHECK-DAG: vldr d5 | 506 ; CHECK-DAG: vmov.f64 d5 |
507 ; CHECK-DAG: vldr d6 | 507 ; CHECK-DAG: vmov.f64 d6 |
508 ; CHECK-DAG: vldr d7 | 508 ; CHECK-DAG: vmov.f64 d7 |
509 ; CHECK-DAG: vstr d{{.*}}, [sp] | 509 ; CHECK-DAG: vstr d{{.*}}, [sp] |
510 ; CHECK-DAG: vldr s1 | 510 ; CHECK-DAG: vmov.f32 s1 |
511 ; CHECK: bl {{.*}} testFDDDDDDDFD | 511 ; CHECK: bl {{.*}} testFDDDDDDDFD |
512 call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 512 call void @testFDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
513 double 5.0, double 6.0, double 7.0, double 8.0, | 513 double 5.0, double 6.0, double 7.0, double 8.0, |
514 double 9.0, float 10.0) | 514 double 9.0, float 10.0) |
515 ; CHECK-DAG: vldr s0 | 515 ; CHECK-DAG: vmov.f32 s0 |
516 ; CHECK-DAG: vldr d1 | 516 ; CHECK-DAG: vmov.f64 d1 |
517 ; CHECK-DAG: vldr d2 | 517 ; CHECK-DAG: vmov.f64 d2 |
518 ; CHECK-DAG: vldr d3 | 518 ; CHECK-DAG: vmov.f64 d3 |
519 ; CHECK-DAG: vldr d4 | 519 ; CHECK-DAG: vmov.f64 d4 |
520 ; CHECK-DAG: vldr d5 | 520 ; CHECK-DAG: vmov.f64 d5 |
521 ; CHECK-DAG: vldr d6 | 521 ; CHECK-DAG: vmov.f64 d6 |
522 ; CHECK-DAG: vldr d7 | 522 ; CHECK-DAG: vmov.f64 d7 |
523 ; CHECK-DAG: vstr d{{.*}}, [sp] | 523 ; CHECK-DAG: vstr d{{.*}}, [sp] |
524 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 524 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
525 ; CHECK: bl {{.*}} testFDDDDDDDDF | 525 ; CHECK: bl {{.*}} testFDDDDDDDDF |
526 call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, | 526 call void @testFDDDDDDDDDF(float 1.0, double 2.0, double 3.0, double 4.0, |
527 double 5.0, double 6.0, double 7.0, double 8.0, | 527 double 5.0, double 6.0, double 7.0, double 8.0, |
528 double 9.0, double 10.0, float 11.0) | 528 double 9.0, double 10.0, float 11.0) |
529 ; CHECK-DAG: vldr s0 | 529 ; CHECK-DAG: vmov.f32 s0 |
530 ; CHECK-DAG: vldr d1 | 530 ; CHECK-DAG: vmov.f64 d1 |
531 ; CHECK-DAG: vldr d2 | 531 ; CHECK-DAG: vmov.f64 d2 |
532 ; CHECK-DAG: vldr d3 | 532 ; CHECK-DAG: vmov.f64 d3 |
533 ; CHECK-DAG: vldr d4 | 533 ; CHECK-DAG: vmov.f64 d4 |
534 ; CHECK-DAG: vldr d5 | 534 ; CHECK-DAG: vmov.f64 d5 |
535 ; CHECK-DAG: vldr d6 | 535 ; CHECK-DAG: vmov.f64 d6 |
536 ; CHECK-DAG: vldr d7 | 536 ; CHECK-DAG: vmov.f64 d7 |
537 ; CHECK-DAG: vstr d{{.*}}, [sp] | 537 ; CHECK-DAG: vstr d{{.*}}, [sp] |
538 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] | 538 ; CHECK-DAG: vstr d{{.*}}, [sp, #8] |
539 ; CHECK-DAG: vstr s{{.*}}, [sp, #16] | 539 ; CHECK-DAG: vstr s{{.*}}, [sp, #16] |
540 ; CHECK: bl {{.*}} testFDDDDDDDDDF | 540 ; CHECK: bl {{.*}} testFDDDDDDDDDF |
541 call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, | 541 call void @testFDDDDDDDDFD(float 1.0, double 2.0, double 3.0, double 4.0, |
542 double 5.0, double 6.0, double 7.0, double 8.0, | 542 double 5.0, double 6.0, double 7.0, double 8.0, |
543 double 9.0, float 10.0, double 11.0) | 543 double 9.0, float 10.0, double 11.0) |
544 ; CHECK-DAG: vldr s0 | 544 ; CHECK-DAG: vmov.f32 s0 |
545 ; CHECK-DAG: vldr d1 | 545 ; CHECK-DAG: vmov.f64 d1 |
546 ; CHECK-DAG: vldr d2 | 546 ; CHECK-DAG: vmov.f64 d2 |
547 ; CHECK-DAG: vldr d3 | 547 ; CHECK-DAG: vmov.f64 d3 |
548 ; CHECK-DAG: vldr d4 | 548 ; CHECK-DAG: vmov.f64 d4 |
549 ; CHECK-DAG: vldr d5 | 549 ; CHECK-DAG: vmov.f64 d5 |
550 ; CHECK-DAG: vldr d6 | 550 ; CHECK-DAG: vmov.f64 d6 |
551 ; CHECK-DAG: vldr d7 | 551 ; CHECK-DAG: vmov.f64 d7 |
552 ; CHECK-DAG: vstr d{{.*}}, [sp] | 552 ; CHECK-DAG: vstr d{{.*}}, [sp] |
553 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 553 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
554 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] | 554 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] |
555 ; CHECK: bl {{.*}} testFDDDDDDDDFD | 555 ; CHECK: bl {{.*}} testFDDDDDDDDFD |
556 call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0, | 556 call void @testFDDDDDDDDFDF(float 1.0, double 2.0, double 3.0, double 4.0, |
557 double 5.0, double 6.0, double 7.0, double 8.0, | 557 double 5.0, double 6.0, double 7.0, double 8.0, |
558 double 9.0, float 10.0, double 11.0, float 12.0) | 558 double 9.0, float 10.0, double 11.0, float 12.0) |
559 ; CHECK-DAG: vldr s0 | 559 ; CHECK-DAG: vmov.f32 s0 |
560 ; CHECK-DAG: vldr d1 | 560 ; CHECK-DAG: vmov.f64 d1 |
561 ; CHECK-DAG: vldr d2 | 561 ; CHECK-DAG: vmov.f64 d2 |
562 ; CHECK-DAG: vldr d3 | 562 ; CHECK-DAG: vmov.f64 d3 |
563 ; CHECK-DAG: vldr d4 | 563 ; CHECK-DAG: vmov.f64 d4 |
564 ; CHECK-DAG: vldr d5 | 564 ; CHECK-DAG: vmov.f64 d5 |
565 ; CHECK-DAG: vldr d6 | 565 ; CHECK-DAG: vmov.f64 d6 |
566 ; CHECK-DAG: vldr d7 | 566 ; CHECK-DAG: vmov.f64 d7 |
567 ; CHECK-DAG: vstr d{{.*}}, [sp] | 567 ; CHECK-DAG: vstr d{{.*}}, [sp] |
568 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 568 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
569 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] | 569 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] |
570 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] | 570 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] |
571 ; CHECK: bl {{.*}} testFDDDDDDDDFD | 571 ; CHECK: bl {{.*}} testFDDDDDDDDFD |
572 | 572 |
573 ret void | 573 ret void |
574 } | 574 } |
575 | 575 |
576 ; TODO(jpp): add tests for stack alignment. | 576 ; TODO(jpp): add tests for stack alignment. |
OLD | NEW |