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: | %if --need=target_ARM32 --need=allow_dump \ | 7 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
7 ; RUN: --command FileCheck %s | 8 ; RUN: --command FileCheck %s |
8 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 9 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
9 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ | 10 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ |
10 ; RUN: -i %s --args -Om1 --skip-unimplemented \ | 11 ; RUN: -i %s --args -Om1 --skip-unimplemented \ |
| 12 ; RUN: -allow-externally-defined-symbols \ |
11 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 13 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
12 ; RUN: --command FileCheck %s | 14 ; RUN: --command FileCheck %s |
13 | 15 |
14 ; Boring tests ensuring float arguments are allocated "correctly." Unfortunately | 16 ; Boring tests ensuring float arguments are allocated "correctly." Unfortunately |
15 ; this test cannot verify whether the right arguments are being allocated to the | 17 ; this test cannot verify whether the right arguments are being allocated to the |
16 ; right register. | 18 ; right register. |
17 declare void @float1(float %p0) | 19 declare void @float1(float %p0) |
18 declare void @float2(float %p0, float %p1) | 20 declare void @float2(float %p0, float %p1) |
19 declare void @float3(float %p0, float %p1, float %p2) | 21 declare void @float3(float %p0, float %p1, float %p2) |
20 declare void @float4(float %p0, float %p1, float %p2, float %p3) | 22 declare void @float4(float %p0, float %p1, float %p2, float %p3) |
(...skipping 29 matching lines...) Expand all Loading... |
50 float %p10, float %p11, float %p12, float %p13, | 52 float %p10, float %p11, float %p12, float %p13, |
51 float %p14, float %p15) | 53 float %p14, float %p15) |
52 declare void @float17(float %p0, float %p1, float %p2, float %p3, float %p4, | 54 declare void @float17(float %p0, float %p1, float %p2, float %p3, float %p4, |
53 float %p5, float %p6, float %p7, float %p8, float %p9, | 55 float %p5, float %p6, float %p7, float %p8, float %p9, |
54 float %p10, float %p11, float %p12, float %p13, | 56 float %p10, float %p11, float %p12, float %p13, |
55 float %p14, float %p15, float %p16) | 57 float %p14, float %p15, float %p16) |
56 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, |
57 float %p5, float %p6, float %p7, float %p8, float %p9, | 59 float %p5, float %p6, float %p7, float %p8, float %p9, |
58 float %p10, float %p11, float %p12, float %p13, | 60 float %p10, float %p11, float %p12, float %p13, |
59 float %p14, float %p15, float %p16, float %p17) | 61 float %p14, float %p15, float %p16, float %p17) |
60 define void @floatHarness() nounwind { | 62 define internal void @floatHarness() nounwind { |
61 ; CHECK-LABEL: floatHarness | 63 ; CHECK-LABEL: floatHarness |
62 call void @float1(float 1.0) | 64 call void @float1(float 1.0) |
63 ; CHECK-DAG: vldr s0 | 65 ; CHECK-DAG: vldr s0 |
64 ; CHECK: bl {{.*}} float1 | 66 ; CHECK: bl {{.*}} float1 |
65 call void @float2(float 1.0, float 2.0) | 67 call void @float2(float 1.0, float 2.0) |
66 ; CHECK-DAG: vldr s0 | 68 ; CHECK-DAG: vldr s0 |
67 ; CHECK-DAG: vldr s1 | 69 ; CHECK-DAG: vldr s1 |
68 ; CHECK: bl {{.*}} float2 | 70 ; CHECK: bl {{.*}} float2 |
69 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) |
70 ; CHECK-DAG: vldr s0 | 72 ; CHECK-DAG: vldr s0 |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 declare void @double7(double %p0, double %p1, double %p2, double %p3, | 307 declare void @double7(double %p0, double %p1, double %p2, double %p3, |
306 double %p4, double %p5, double %p6) | 308 double %p4, double %p5, double %p6) |
307 declare void @double8(double %p0, double %p1, double %p2, double %p3, | 309 declare void @double8(double %p0, double %p1, double %p2, double %p3, |
308 double %p4, double %p5, double %p6, double %p7) | 310 double %p4, double %p5, double %p6, double %p7) |
309 declare void @double9(double %p0, double %p1, double %p2, double %p3, | 311 declare void @double9(double %p0, double %p1, double %p2, double %p3, |
310 double %p4, double %p5, double %p6, double %p7, | 312 double %p4, double %p5, double %p6, double %p7, |
311 double %p8) | 313 double %p8) |
312 declare void @double10(double %p0, double %p1, double %p2, double %p3, | 314 declare void @double10(double %p0, double %p1, double %p2, double %p3, |
313 double %p4, double %p5, double %p6, double %p7, | 315 double %p4, double %p5, double %p6, double %p7, |
314 double %p8, double %p9) | 316 double %p8, double %p9) |
315 define void @doubleHarness() nounwind { | 317 define internal void @doubleHarness() nounwind { |
316 ; CHECK-LABEL: doubleHarness | 318 ; CHECK-LABEL: doubleHarness |
317 call void @double1(double 1.0) | 319 call void @double1(double 1.0) |
318 ; CHECK-DAG: vldr d0 | 320 ; CHECK-DAG: vldr d0 |
319 ; CHECK: bl {{.*}} double1 | 321 ; CHECK: bl {{.*}} double1 |
320 call void @double2(double 1.0, double 2.0) | 322 call void @double2(double 1.0, double 2.0) |
321 ; CHECK-DAG: vldr d0 | 323 ; CHECK-DAG: vldr d0 |
322 ; CHECK-DAG: vldr d1 | 324 ; CHECK-DAG: vldr d1 |
323 ; CHECK: bl {{.*}} double2 | 325 ; CHECK: bl {{.*}} double2 |
324 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) |
325 ; CHECK-DAG: vldr d0 | 327 ; CHECK-DAG: vldr d0 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 double %p8, float %p9) | 424 double %p8, float %p9) |
423 declare void @testFDDDDDDDDDF(float %p0, double %p1, double %p2, double %p3, | 425 declare void @testFDDDDDDDDDF(float %p0, double %p1, double %p2, double %p3, |
424 double %p4, double %p5, double %p6, double %p7, | 426 double %p4, double %p5, double %p6, double %p7, |
425 double %p8, double %p9, float %p10) | 427 double %p8, double %p9, float %p10) |
426 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, | 428 declare void @testFDDDDDDDDFD(float %p0, double %p1, double %p2, double %p3, |
427 double %p4, double %p5, double %p6, double %p7, | 429 double %p4, double %p5, double %p6, double %p7, |
428 double %p8, float %p9, double %p10) | 430 double %p8, float %p9, double %p10) |
429 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, | 431 declare void @testFDDDDDDDDFDF(float %p0, double %p1, double %p2, double %p3, |
430 double %p4, double %p5, double %p6, double %p7, | 432 double %p4, double %p5, double %p6, double %p7, |
431 double %p8, float %p9, double %p10, float %p11) | 433 double %p8, float %p9, double %p10, float %p11) |
432 define void @packsFloats() nounwind { | 434 define internal void @packsFloats() nounwind { |
433 ; CHECK-LABEL: packsFloats | 435 ; CHECK-LABEL: packsFloats |
434 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) |
435 ; CHECK-DAG: vldr s0 | 437 ; CHECK-DAG: vldr s0 |
436 ; CHECK-DAG: vldr d1 | 438 ; CHECK-DAG: vldr d1 |
437 ; CHECK-DAG: vldr s1 | 439 ; CHECK-DAG: vldr s1 |
438 ; CHECK: bl {{.*}} testFDF | 440 ; CHECK: bl {{.*}} testFDF |
439 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) |
440 ; CHECK-DAG: vldr s0 | 442 ; CHECK-DAG: vldr s0 |
441 ; CHECK-DAG: vldr d1 | 443 ; CHECK-DAG: vldr d1 |
442 ; CHECK-DAG: vldr d2 | 444 ; CHECK-DAG: vldr d2 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 ; CHECK-DAG: vstr d{{.*}}, [sp] | 567 ; CHECK-DAG: vstr d{{.*}}, [sp] |
566 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] | 568 ; CHECK-DAG: vstr s{{.*}}, [sp, #8] |
567 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] | 569 ; CHECK-DAG: vstr d{{.*}}, [sp, #16] |
568 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] | 570 ; CHECK-DAG: vstr s{{.*}}, [sp, #24] |
569 ; CHECK: bl {{.*}} testFDDDDDDDDFD | 571 ; CHECK: bl {{.*}} testFDDDDDDDDFD |
570 | 572 |
571 ret void | 573 ret void |
572 } | 574 } |
573 | 575 |
574 ; TODO(jpp): add tests for stack alignment. | 576 ; TODO(jpp): add tests for stack alignment. |
OLD | NEW |