| 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 |