|
5 | 5 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-darwin -verify-machineinstrs | FileCheck %s -check-prefix=X64-Darwin
|
6 | 6 | ; RUN: llc < %s -mcpu=generic -mtriple=i686-mingw32 -verify-machineinstrs | FileCheck %s -check-prefix=X32-MinGW
|
7 | 7 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-freebsd -verify-machineinstrs | FileCheck %s -check-prefix=X64-FreeBSD
|
| 8 | +; RUN: llc < %s -mcpu=generic -mtriple=i686-dragonfly -verify-machineinstrs | FileCheck %s -check-prefix=X32-DFlyBSD |
| 9 | +; RUN: llc < %s -mcpu=generic -mtriple=x86_64-dragonfly -verify-machineinstrs | FileCheck %s -check-prefix=X64-DFlyBSD |
8 | 10 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-mingw32 -verify-machineinstrs | FileCheck %s -check-prefix=X64-MinGW
|
9 | 11 |
|
10 | 12 | ; We used to crash with filetype=obj
|
|
15 | 17 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-darwin -filetype=obj
|
16 | 18 | ; RUN: llc < %s -mcpu=generic -mtriple=i686-mingw32 -filetype=obj
|
17 | 19 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-freebsd -filetype=obj
|
| 20 | +; RUN: llc < %s -mcpu=generic -mtriple=i686-dragonfly -filetype=obj |
| 21 | +; RUN: llc < %s -mcpu=generic -mtriple=x86_64-dragonfly -filetype=obj |
18 | 22 | ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-mingw32 -filetype=obj
|
19 | 23 |
|
20 | 24 | ; RUN: not llc < %s -mcpu=generic -mtriple=x86_64-solaris 2> %t.log
|
@@ -114,6 +118,26 @@ define void @test_basic() #0 {
|
114 | 118 | ; X64-FreeBSD-NEXT: callq __morestack
|
115 | 119 | ; X64-FreeBSD-NEXT: ret
|
116 | 120 |
|
| 121 | +; X32-DFlyBSD-LABEL: test_basic: |
| 122 | + |
| 123 | +; X32-DFlyBSD: cmpl %fs:16, %esp |
| 124 | +; X32-DFlyBSD-NEXT: ja .LBB0_2 |
| 125 | + |
| 126 | +; X32-DFlyBSD: pushl $0 |
| 127 | +; X32-DFlyBSD-NEXT: pushl $48 |
| 128 | +; X32-DFlyBSD-NEXT: calll __morestack |
| 129 | +; X32-DFlyBSD-NEXT: ret |
| 130 | + |
| 131 | +; X64-DFlyBSD-LABEL: test_basic: |
| 132 | + |
| 133 | +; X64-DFlyBSD: cmpq %fs:32, %rsp |
| 134 | +; X64-DFlyBSD-NEXT: ja .LBB0_2 |
| 135 | + |
| 136 | +; X64-DFlyBSD: movabsq $40, %r10 |
| 137 | +; X64-DFlyBSD-NEXT: movabsq $0, %r11 |
| 138 | +; X64-DFlyBSD-NEXT: callq __morestack |
| 139 | +; X64-DFlyBSD-NEXT: ret |
| 140 | + |
117 | 141 | }
|
118 | 142 |
|
119 | 143 | define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
|
@@ -199,6 +223,24 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
|
199 | 223 | ; X64-FreeBSD-NEXT: ret
|
200 | 224 | ; X64-FreeBSD-NEXT: movq %rax, %r10
|
201 | 225 |
|
| 226 | +; X32-DFlyBSD: cmpl %fs:16, %esp |
| 227 | +; X32-DFlyBSD-NEXT: ja .LBB1_2 |
| 228 | + |
| 229 | +; X32-DFlyBSD: pushl $4 |
| 230 | +; X32-DFlyBSD-NEXT: pushl $52 |
| 231 | +; X32-DFlyBSD-NEXT: calll __morestack |
| 232 | +; X32-DFlyBSD-NEXT: ret |
| 233 | + |
| 234 | +; X64-DFlyBSD: cmpq %fs:32, %rsp |
| 235 | +; X64-DFlyBSD-NEXT: ja .LBB1_2 |
| 236 | + |
| 237 | +; X64-DFlyBSD: movq %r10, %rax |
| 238 | +; X64-DFlyBSD-NEXT: movabsq $56, %r10 |
| 239 | +; X64-DFlyBSD-NEXT: movabsq $0, %r11 |
| 240 | +; X64-DFlyBSD-NEXT: callq __morestack |
| 241 | +; X64-DFlyBSD-NEXT: ret |
| 242 | +; X64-DFlyBSD-NEXT: movq %rax, %r10 |
| 243 | + |
202 | 244 | }
|
203 | 245 |
|
204 | 246 | define void @test_large() #0 {
|
@@ -280,6 +322,24 @@ define void @test_large() #0 {
|
280 | 322 | ; X64-FreeBSD-NEXT: callq __morestack
|
281 | 323 | ; X64-FreeBSD-NEXT: ret
|
282 | 324 |
|
| 325 | +; X32-DFlyBSD: leal -40008(%esp), %ecx |
| 326 | +; X32-DFlyBSD-NEXT: cmpl %fs:16, %ecx |
| 327 | +; X32-DFlyBSD-NEXT: ja .LBB2_2 |
| 328 | + |
| 329 | +; X32-DFlyBSD: pushl $0 |
| 330 | +; X32-DFlyBSD-NEXT: pushl $40008 |
| 331 | +; X32-DFlyBSD-NEXT: calll __morestack |
| 332 | +; X32-DFlyBSD-NEXT: ret |
| 333 | + |
| 334 | +; X64-DFlyBSD: leaq -40008(%rsp), %r11 |
| 335 | +; X64-DFlyBSD-NEXT: cmpq %fs:32, %r11 |
| 336 | +; X64-DFlyBSD-NEXT: ja .LBB2_2 |
| 337 | + |
| 338 | +; X64-DFlyBSD: movabsq $40008, %r10 |
| 339 | +; X64-DFlyBSD-NEXT: movabsq $0, %r11 |
| 340 | +; X64-DFlyBSD-NEXT: callq __morestack |
| 341 | +; X64-DFlyBSD-NEXT: ret |
| 342 | + |
283 | 343 | }
|
284 | 344 |
|
285 | 345 | define fastcc void @test_fastcc() #0 {
|
@@ -368,6 +428,26 @@ define fastcc void @test_fastcc() #0 {
|
368 | 428 | ; X64-FreeBSD-NEXT: callq __morestack
|
369 | 429 | ; X64-FreeBSD-NEXT: ret
|
370 | 430 |
|
| 431 | +; X32-DFlyBSD-LABEL: test_fastcc: |
| 432 | + |
| 433 | +; X32-DFlyBSD: cmpl %fs:16, %esp |
| 434 | +; X32-DFlyBSD-NEXT: ja .LBB3_2 |
| 435 | + |
| 436 | +; X32-DFlyBSD: pushl $0 |
| 437 | +; X32-DFlyBSD-NEXT: pushl $48 |
| 438 | +; X32-DFlyBSD-NEXT: calll __morestack |
| 439 | +; X32-DFlyBSD-NEXT: ret |
| 440 | + |
| 441 | +; X64-DFlyBSD-LABEL: test_fastcc: |
| 442 | + |
| 443 | +; X64-DFlyBSD: cmpq %fs:32, %rsp |
| 444 | +; X64-DFlyBSD-NEXT: ja .LBB3_2 |
| 445 | + |
| 446 | +; X64-DFlyBSD: movabsq $40, %r10 |
| 447 | +; X64-DFlyBSD-NEXT: movabsq $0, %r11 |
| 448 | +; X64-DFlyBSD-NEXT: callq __morestack |
| 449 | +; X64-DFlyBSD-NEXT: ret |
| 450 | + |
371 | 451 | }
|
372 | 452 |
|
373 | 453 | define fastcc void @test_fastcc_large() #0 {
|
@@ -464,6 +544,28 @@ define fastcc void @test_fastcc_large() #0 {
|
464 | 544 | ; X64-FreeBSD-NEXT: callq __morestack
|
465 | 545 | ; X64-FreeBSD-NEXT: ret
|
466 | 546 |
|
| 547 | +; X32-DFlyBSD-LABEL: test_fastcc_large: |
| 548 | + |
| 549 | +; X32-DFlyBSD: leal -40008(%esp), %eax |
| 550 | +; X32-DFlyBSD-NEXT: cmpl %fs:16, %eax |
| 551 | +; X32-DFlyBSD-NEXT: ja .LBB4_2 |
| 552 | + |
| 553 | +; X32-DFlyBSD: pushl $0 |
| 554 | +; X32-DFlyBSD-NEXT: pushl $40008 |
| 555 | +; X32-DFlyBSD-NEXT: calll __morestack |
| 556 | +; X32-DFlyBSD-NEXT: ret |
| 557 | + |
| 558 | +; X64-DFlyBSD-LABEL: test_fastcc_large: |
| 559 | + |
| 560 | +; X64-DFlyBSD: leaq -40008(%rsp), %r11 |
| 561 | +; X64-DFlyBSD-NEXT: cmpq %fs:32, %r11 |
| 562 | +; X64-DFlyBSD-NEXT: ja .LBB4_2 |
| 563 | + |
| 564 | +; X64-DFlyBSD: movabsq $40008, %r10 |
| 565 | +; X64-DFlyBSD-NEXT: movabsq $0, %r11 |
| 566 | +; X64-DFlyBSD-NEXT: callq __morestack |
| 567 | +; X64-DFlyBSD-NEXT: ret |
| 568 | + |
467 | 569 | }
|
468 | 570 |
|
469 | 571 | define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
|
@@ -515,6 +617,12 @@ define void @test_nostack() #0 {
|
515 | 617 |
|
516 | 618 | ; X64-FreeBSD-LABEL: test_nostack:
|
517 | 619 | ; X64-FreeBSD-NOT: callq __morestack
|
| 620 | + |
| 621 | +; X32-DFlyBSD-LABEL: test_nostack: |
| 622 | +; X32-DFlyBSD-NOT: calll __morestack |
| 623 | + |
| 624 | +; X64-DFlyBSD-LABEL: test_nostack: |
| 625 | +; X64-DFlyBSD-NOT: callq __morestack |
518 | 626 | }
|
519 | 627 |
|
520 | 628 | attributes #0 = { "split-stack" }
|
0 commit comments