1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-linux -verify-machineinstrs | FileCheck %s -check-prefix=X32-Linux 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux -verify-machineinstrs | FileCheck %s -check-prefix=X64-Linux 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux -code-model=large -verify-machineinstrs | FileCheck %s -check-prefix=X64-Linux-Large 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux-gnux32 -verify-machineinstrs | FileCheck %s -check-prefix=X32ABI 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-darwin -verify-machineinstrs | FileCheck %s -check-prefix=X32-Darwin 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-darwin -verify-machineinstrs | FileCheck %s -check-prefix=X64-Darwin 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-mingw32 -verify-machineinstrs | FileCheck %s -check-prefix=X32-MinGW 8*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-freebsd -verify-machineinstrs | FileCheck %s -check-prefix=X64-FreeBSD 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-dragonfly -verify-machineinstrs | FileCheck %s -check-prefix=X32-DFlyBSD 10*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-dragonfly -verify-machineinstrs | FileCheck %s -check-prefix=X64-DFlyBSD 11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-mingw32 -verify-machineinstrs | FileCheck %s -check-prefix=X64-MinGW 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; We used to crash with filetype=obj 14*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-linux -filetype=obj -o /dev/null 15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux -filetype=obj -o /dev/null 16*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux-gnux32 -filetype=obj -o /dev/null 17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-darwin -filetype=obj -o /dev/null 18*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-darwin -filetype=obj -o /dev/null 19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-mingw32 -filetype=obj -o /dev/null 20*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-freebsd -filetype=obj -o /dev/null 21*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=i686-dragonfly -filetype=obj -o /dev/null 22*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-dragonfly -filetype=obj -o /dev/null 23*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mcpu=generic -mtriple=x86_64-mingw32 -filetype=obj -o /dev/null 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; RUN: not llc < %s -mcpu=generic -mtriple=x86_64-solaris 2> %t.log 26*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -input-file=%t.log -check-prefix=X64-Solaris 27*9880d681SAndroid Build Coastguard Worker; RUN: not llc < %s -mcpu=generic -mtriple=i686-freebsd 2> %t.log 28*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -input-file=%t.log -check-prefix=X32-FreeBSD 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; X64-Solaris: Segmented stacks not supported on this platform 31*9880d681SAndroid Build Coastguard Worker; X32-FreeBSD: Segmented stacks not supported on FreeBSD i386 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; Just to prevent the alloca from being optimized away 34*9880d681SAndroid Build Coastguard Workerdeclare void @dummy_use(i32*, i32) 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine void @test_basic() #0 { 37*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10 38*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 10) 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; X32-Linux-LABEL: test_basic: 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; X32-Linux: cmpl %gs:48, %esp 44*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ja .LBB0_2 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; X32-Linux: pushl $0 47*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: pushl $44 48*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: calll __morestack 49*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ret 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; X64-Linux-LABEL: test_basic: 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; X64-Linux: cmpq %fs:112, %rsp 54*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ja .LBB0_2 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker; X64-Linux: movabsq $40, %r10 57*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $0, %r11 58*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: callq __morestack 59*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ret 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-LABEL: test_basic: 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large: cmpq %fs:112, %rsp 64*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: ja .LBB0_2 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large: movabsq $40, %r10 67*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: movabsq $0, %r11 68*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: callq *__morestack_addr(%rip) 69*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: ret 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker; X32ABI-LABEL: test_basic: 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; X32ABI: cmpl %fs:64, %esp 74*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ja .LBB0_2 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; X32ABI: movl $40, %r10d 77*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $0, %r11d 78*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: callq __morestack 79*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ret 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker; X32-Darwin-LABEL: test_basic: 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker; X32-Darwin: movl $432, %ecx 84*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%ecx), %esp 85*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB0_2 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $0 88*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $60 89*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 90*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker; X64-Darwin-LABEL: test_basic: 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; X64-Darwin: cmpq %gs:816, %rsp 95*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ja LBB0_2 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker; X64-Darwin: movabsq $40, %r10 98*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $0, %r11 99*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: callq ___morestack 100*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ret 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker; X32-MinGW-LABEL: test_basic: 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker; X32-MinGW: cmpl %fs:20, %esp 105*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ja LBB0_2 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker; X32-MinGW: pushl $0 108*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: pushl $40 109*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: calll ___morestack 110*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ret 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_basic: 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker; X64-MinGW: cmpq %gs:40, %rsp 115*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: ja .LBB0_2 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker; X64-MinGW: movabsq $72, %r10 118*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $32, %r11 119*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: callq __morestack 120*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: retq 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-LABEL: test_basic: 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: cmpq %fs:24, %rsp 125*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ja .LBB0_2 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: movabsq $40, %r10 128*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $0, %r11 129*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: callq __morestack 130*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ret 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-LABEL: test_basic: 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: cmpl %fs:16, %esp 135*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ja .LBB0_2 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: pushl $0 138*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: pushl $40 139*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: calll __morestack 140*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ret 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-LABEL: test_basic: 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: cmpq %fs:32, %rsp 145*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ja .LBB0_2 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: movabsq $40, %r10 148*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $0, %r11 149*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: callq __morestack 150*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ret 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine i32 @test_nested(i32 * nest %closure, i32 %other) #0 { 155*9880d681SAndroid Build Coastguard Worker %addend = load i32 , i32 * %closure 156*9880d681SAndroid Build Coastguard Worker %result = add i32 %other, %addend 157*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10 158*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 10) 159*9880d681SAndroid Build Coastguard Worker ret i32 %result 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker; X32-Linux: cmpl %gs:48, %esp 162*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ja .LBB1_2 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker; X32-Linux: pushl $4 165*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: pushl $44 166*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: calll __morestack 167*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ret 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker; X64-Linux: cmpq %fs:112, %rsp 170*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ja .LBB1_2 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker; X64-Linux: movq %r10, %rax 173*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $56, %r10 174*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $0, %r11 175*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: callq __morestack 176*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ret 177*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movq %rax, %r10 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker; X32ABI: cmpl %fs:64, %esp 180*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ja .LBB1_2 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker; X32ABI: movl %r10d, %eax 183*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $56, %r10d 184*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $0, %r11d 185*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: callq __morestack 186*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ret 187*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movq %rax, %r10 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker; X32-Darwin: movl $432, %edx 190*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%edx), %esp 191*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB1_2 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $4 194*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $60 195*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 196*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Worker; X64-Darwin: cmpq %gs:816, %rsp 199*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ja LBB1_2 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker; X64-Darwin: movq %r10, %rax 202*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $56, %r10 203*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $0, %r11 204*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: callq ___morestack 205*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ret 206*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movq %rax, %r10 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Worker; X32-MinGW: cmpl %fs:20, %esp 209*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ja LBB1_2 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker; X32-MinGW: pushl $4 212*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: pushl $44 213*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: calll ___morestack 214*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ret 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_nested: 217*9880d681SAndroid Build Coastguard Worker; X64-MinGW: cmpq %gs:40, %rsp 218*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: ja .LBB1_2 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Worker; X64-MinGW: movq %r10, %rax 221*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $88, %r10 222*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $32, %r11 223*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: callq __morestack 224*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: retq 225*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movq %rax, %r10 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: cmpq %fs:24, %rsp 228*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ja .LBB1_2 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: movq %r10, %rax 231*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $56, %r10 232*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $0, %r11 233*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: callq __morestack 234*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ret 235*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movq %rax, %r10 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: cmpl %fs:16, %esp 238*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ja .LBB1_2 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: pushl $4 241*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: pushl $44 242*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: calll __morestack 243*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ret 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: cmpq %fs:32, %rsp 246*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ja .LBB1_2 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: movq %r10, %rax 249*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $56, %r10 250*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $0, %r11 251*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: callq __morestack 252*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ret 253*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movq %rax, %r10 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdefine void @test_large() #0 { 258*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10000 259*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 0) 260*9880d681SAndroid Build Coastguard Worker ret void 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker; X32-Linux: leal -40012(%esp), %ecx 263*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: cmpl %gs:48, %ecx 264*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ja .LBB2_2 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Worker; X32-Linux: pushl $0 267*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: pushl $40012 268*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: calll __morestack 269*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ret 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker; X64-Linux: leaq -40008(%rsp), %r11 272*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: cmpq %fs:112, %r11 273*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ja .LBB2_2 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Worker; X64-Linux: movabsq $40008, %r10 276*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $0, %r11 277*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: callq __morestack 278*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ret 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Worker; X32ABI: leal -40008(%rsp), %r11d 281*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: cmpl %fs:64, %r11d 282*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ja .LBB2_2 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Worker; X32ABI: movl $40008, %r10d 285*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $0, %r11d 286*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: callq __morestack 287*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ret 288*9880d681SAndroid Build Coastguard Worker 289*9880d681SAndroid Build Coastguard Worker; X32-Darwin: leal -40012(%esp), %ecx 290*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: movl $432, %eax 291*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%eax), %ecx 292*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB2_2 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $0 295*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $40012 296*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 297*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 298*9880d681SAndroid Build Coastguard Worker 299*9880d681SAndroid Build Coastguard Worker; X64-Darwin: leaq -40008(%rsp), %r11 300*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: cmpq %gs:816, %r11 301*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ja LBB2_2 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker; X64-Darwin: movabsq $40008, %r10 304*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $0, %r11 305*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: callq ___morestack 306*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ret 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker; X32-MinGW: leal -40000(%esp), %ecx 309*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: cmpl %fs:20, %ecx 310*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ja LBB2_2 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Worker; X32-MinGW: pushl $0 313*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: pushl $40000 314*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: calll ___morestack 315*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ret 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_large: 318*9880d681SAndroid Build Coastguard Worker; X64-MinGW: leaq -40040(%rsp), %r11 319*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: cmpq %gs:40, %r11 320*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: ja .LBB2_2 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Worker; X64-MinGW: movabsq $40040, %r10 323*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $32, %r11 324*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: callq __morestack 325*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: retq 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: leaq -40008(%rsp), %r11 328*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: cmpq %fs:24, %r11 329*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ja .LBB2_2 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: movabsq $40008, %r10 332*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $0, %r11 333*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: callq __morestack 334*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ret 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: leal -40000(%esp), %ecx 337*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: cmpl %fs:16, %ecx 338*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ja .LBB2_2 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: pushl $0 341*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: pushl $40000 342*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: calll __morestack 343*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ret 344*9880d681SAndroid Build Coastguard Worker 345*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: leaq -40008(%rsp), %r11 346*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: cmpq %fs:32, %r11 347*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ja .LBB2_2 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: movabsq $40008, %r10 350*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $0, %r11 351*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: callq __morestack 352*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ret 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker} 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Workerdefine fastcc void @test_fastcc() #0 { 357*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10 358*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 10) 359*9880d681SAndroid Build Coastguard Worker ret void 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Worker; X32-Linux-LABEL: test_fastcc: 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard Worker; X32-Linux: cmpl %gs:48, %esp 364*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ja .LBB3_2 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker; X32-Linux: pushl $0 367*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: pushl $44 368*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: calll __morestack 369*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ret 370*9880d681SAndroid Build Coastguard Worker 371*9880d681SAndroid Build Coastguard Worker; X64-Linux-LABEL: test_fastcc: 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker; X64-Linux: cmpq %fs:112, %rsp 374*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ja .LBB3_2 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Worker; X64-Linux: movabsq $40, %r10 377*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $0, %r11 378*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: callq __morestack 379*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ret 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker; X32ABI-LABEL: test_fastcc: 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Worker; X32ABI: cmpl %fs:64, %esp 384*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ja .LBB3_2 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Worker; X32ABI: movl $40, %r10d 387*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $0, %r11d 388*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: callq __morestack 389*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ret 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Worker; X32-Darwin-LABEL: test_fastcc: 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Worker; X32-Darwin: movl $432, %eax 394*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%eax), %esp 395*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB3_2 396*9880d681SAndroid Build Coastguard Worker 397*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $0 398*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $60 399*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 400*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Worker; X64-Darwin-LABEL: test_fastcc: 403*9880d681SAndroid Build Coastguard Worker 404*9880d681SAndroid Build Coastguard Worker; X64-Darwin: cmpq %gs:816, %rsp 405*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ja LBB3_2 406*9880d681SAndroid Build Coastguard Worker 407*9880d681SAndroid Build Coastguard Worker; X64-Darwin: movabsq $40, %r10 408*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $0, %r11 409*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: callq ___morestack 410*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ret 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Worker; X32-MinGW-LABEL: test_fastcc: 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Worker; X32-MinGW: cmpl %fs:20, %esp 415*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ja LBB3_2 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker; X32-MinGW: pushl $0 418*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: pushl $40 419*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: calll ___morestack 420*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ret 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_fastcc: 423*9880d681SAndroid Build Coastguard Worker 424*9880d681SAndroid Build Coastguard Worker; X64-MinGW: cmpq %gs:40, %rsp 425*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: ja .LBB3_2 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Worker; X64-MinGW: movabsq $72, %r10 428*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $32, %r11 429*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: callq __morestack 430*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: retq 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-LABEL: test_fastcc: 433*9880d681SAndroid Build Coastguard Worker 434*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: cmpq %fs:24, %rsp 435*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ja .LBB3_2 436*9880d681SAndroid Build Coastguard Worker 437*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: movabsq $40, %r10 438*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $0, %r11 439*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: callq __morestack 440*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ret 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-LABEL: test_fastcc: 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: cmpl %fs:16, %esp 445*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ja .LBB3_2 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: pushl $0 448*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: pushl $40 449*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: calll __morestack 450*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ret 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-LABEL: test_fastcc: 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: cmpq %fs:32, %rsp 455*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ja .LBB3_2 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: movabsq $40, %r10 458*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $0, %r11 459*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: callq __morestack 460*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ret 461*9880d681SAndroid Build Coastguard Worker 462*9880d681SAndroid Build Coastguard Worker} 463*9880d681SAndroid Build Coastguard Worker 464*9880d681SAndroid Build Coastguard Workerdefine fastcc void @test_fastcc_large() #0 { 465*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10000 466*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 0) 467*9880d681SAndroid Build Coastguard Worker ret void 468*9880d681SAndroid Build Coastguard Worker 469*9880d681SAndroid Build Coastguard Worker; X32-Linux-LABEL: test_fastcc_large: 470*9880d681SAndroid Build Coastguard Worker 471*9880d681SAndroid Build Coastguard Worker; X32-Linux: leal -40012(%esp), %eax 472*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: cmpl %gs:48, %eax 473*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ja .LBB4_2 474*9880d681SAndroid Build Coastguard Worker 475*9880d681SAndroid Build Coastguard Worker; X32-Linux: pushl $0 476*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: pushl $40012 477*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: calll __morestack 478*9880d681SAndroid Build Coastguard Worker; X32-Linux-NEXT: ret 479*9880d681SAndroid Build Coastguard Worker 480*9880d681SAndroid Build Coastguard Worker; X64-Linux-LABEL: test_fastcc_large: 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Worker; X64-Linux: leaq -40008(%rsp), %r11 483*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: cmpq %fs:112, %r11 484*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ja .LBB4_2 485*9880d681SAndroid Build Coastguard Worker 486*9880d681SAndroid Build Coastguard Worker; X64-Linux: movabsq $40008, %r10 487*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: movabsq $0, %r11 488*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: callq __morestack 489*9880d681SAndroid Build Coastguard Worker; X64-Linux-NEXT: ret 490*9880d681SAndroid Build Coastguard Worker 491*9880d681SAndroid Build Coastguard Worker; X32ABI-LABEL: test_fastcc_large: 492*9880d681SAndroid Build Coastguard Worker 493*9880d681SAndroid Build Coastguard Worker; X32ABI: leal -40008(%rsp), %r11d 494*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: cmpl %fs:64, %r11d 495*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ja .LBB4_2 496*9880d681SAndroid Build Coastguard Worker 497*9880d681SAndroid Build Coastguard Worker; X32ABI: movl $40008, %r10d 498*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: movl $0, %r11d 499*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: callq __morestack 500*9880d681SAndroid Build Coastguard Worker; X32ABI-NEXT: ret 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Worker; X32-Darwin-LABEL: test_fastcc_large: 503*9880d681SAndroid Build Coastguard Worker 504*9880d681SAndroid Build Coastguard Worker; X32-Darwin: leal -40012(%esp), %eax 505*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: movl $432, %ecx 506*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%ecx), %eax 507*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB4_2 508*9880d681SAndroid Build Coastguard Worker 509*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $0 510*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $40012 511*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 512*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Worker; X64-Darwin-LABEL: test_fastcc_large: 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker; X64-Darwin: leaq -40008(%rsp), %r11 517*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: cmpq %gs:816, %r11 518*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ja LBB4_2 519*9880d681SAndroid Build Coastguard Worker 520*9880d681SAndroid Build Coastguard Worker; X64-Darwin: movabsq $40008, %r10 521*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: movabsq $0, %r11 522*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: callq ___morestack 523*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NEXT: ret 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Worker; X32-MinGW-LABEL: test_fastcc_large: 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker; X32-MinGW: leal -40000(%esp), %eax 528*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: cmpl %fs:20, %eax 529*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ja LBB4_2 530*9880d681SAndroid Build Coastguard Worker 531*9880d681SAndroid Build Coastguard Worker; X32-MinGW: pushl $0 532*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: pushl $40000 533*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: calll ___morestack 534*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NEXT: ret 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_fastcc_large: 537*9880d681SAndroid Build Coastguard Worker 538*9880d681SAndroid Build Coastguard Worker; X64-MinGW: leaq -40040(%rsp), %r11 539*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: cmpq %gs:40, %r11 540*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: ja .LBB4_2 541*9880d681SAndroid Build Coastguard Worker 542*9880d681SAndroid Build Coastguard Worker; X64-MinGW: movabsq $40040, %r10 543*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: movabsq $32, %r11 544*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: callq __morestack 545*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NEXT: retq 546*9880d681SAndroid Build Coastguard Worker 547*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-LABEL: test_fastcc_large: 548*9880d681SAndroid Build Coastguard Worker 549*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: leaq -40008(%rsp), %r11 550*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: cmpq %fs:24, %r11 551*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ja .LBB4_2 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD: movabsq $40008, %r10 554*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: movabsq $0, %r11 555*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: callq __morestack 556*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NEXT: ret 557*9880d681SAndroid Build Coastguard Worker 558*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-LABEL: test_fastcc_large: 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: leal -40000(%esp), %eax 561*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: cmpl %fs:16, %eax 562*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ja .LBB4_2 563*9880d681SAndroid Build Coastguard Worker 564*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD: pushl $0 565*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: pushl $40000 566*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: calll __morestack 567*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NEXT: ret 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-LABEL: test_fastcc_large: 570*9880d681SAndroid Build Coastguard Worker 571*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: leaq -40008(%rsp), %r11 572*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: cmpq %fs:32, %r11 573*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ja .LBB4_2 574*9880d681SAndroid Build Coastguard Worker 575*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD: movabsq $40008, %r10 576*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: movabsq $0, %r11 577*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: callq __morestack 578*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NEXT: ret 579*9880d681SAndroid Build Coastguard Worker 580*9880d681SAndroid Build Coastguard Worker} 581*9880d681SAndroid Build Coastguard Worker 582*9880d681SAndroid Build Coastguard Workerdefine fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 { 583*9880d681SAndroid Build Coastguard Worker %mem = alloca i32, i32 10000 584*9880d681SAndroid Build Coastguard Worker call void @dummy_use (i32* %mem, i32 %a) 585*9880d681SAndroid Build Coastguard Worker ret void 586*9880d681SAndroid Build Coastguard Worker 587*9880d681SAndroid Build Coastguard Worker; This is testing that the Mac implementation preserves ecx 588*9880d681SAndroid Build Coastguard Worker 589*9880d681SAndroid Build Coastguard Worker; X32-Darwin-LABEL: test_fastcc_large_with_ecx_arg: 590*9880d681SAndroid Build Coastguard Worker 591*9880d681SAndroid Build Coastguard Worker; X32-Darwin: leal -40012(%esp), %eax 592*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl %ecx 593*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: movl $432, %ecx 594*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: cmpl %gs:(%ecx), %eax 595*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: popl %ecx 596*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ja LBB5_2 597*9880d681SAndroid Build Coastguard Worker 598*9880d681SAndroid Build Coastguard Worker; X32-Darwin: pushl $0 599*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: pushl $40012 600*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: calll ___morestack 601*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NEXT: ret 602*9880d681SAndroid Build Coastguard Worker 603*9880d681SAndroid Build Coastguard Worker} 604*9880d681SAndroid Build Coastguard Worker 605*9880d681SAndroid Build Coastguard Workerdefine void @test_nostack() #0 { 606*9880d681SAndroid Build Coastguard Worker ret void 607*9880d681SAndroid Build Coastguard Worker 608*9880d681SAndroid Build Coastguard Worker; X32-Linux-LABEL: test_nostack: 609*9880d681SAndroid Build Coastguard Worker; X32-Linux-NOT: calll __morestack 610*9880d681SAndroid Build Coastguard Worker 611*9880d681SAndroid Build Coastguard Worker; X64-Linux-LABEL: test_nostack: 612*9880d681SAndroid Build Coastguard Worker; X32-Linux-NOT: callq __morestack 613*9880d681SAndroid Build Coastguard Worker 614*9880d681SAndroid Build Coastguard Worker; X32ABI-LABEL: test_nostack: 615*9880d681SAndroid Build Coastguard Worker; X32ABI-NOT: callq __morestack 616*9880d681SAndroid Build Coastguard Worker 617*9880d681SAndroid Build Coastguard Worker; X32-Darwin-LABEL: test_nostack: 618*9880d681SAndroid Build Coastguard Worker; X32-Darwin-NOT: calll __morestack 619*9880d681SAndroid Build Coastguard Worker 620*9880d681SAndroid Build Coastguard Worker; X64-Darwin-LABEL: test_nostack: 621*9880d681SAndroid Build Coastguard Worker; X64-Darwin-NOT: callq __morestack 622*9880d681SAndroid Build Coastguard Worker 623*9880d681SAndroid Build Coastguard Worker; X32-MinGW-LABEL: test_nostack: 624*9880d681SAndroid Build Coastguard Worker; X32-MinGW-NOT: calll __morestack 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Worker; X64-MinGW-LABEL: test_nostack: 627*9880d681SAndroid Build Coastguard Worker; X64-MinGW-NOT: callq __morestack 628*9880d681SAndroid Build Coastguard Worker 629*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-LABEL: test_nostack: 630*9880d681SAndroid Build Coastguard Worker; X64-FreeBSD-NOT: callq __morestack 631*9880d681SAndroid Build Coastguard Worker 632*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-LABEL: test_nostack: 633*9880d681SAndroid Build Coastguard Worker; X32-DFlyBSD-NOT: calll __morestack 634*9880d681SAndroid Build Coastguard Worker 635*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-LABEL: test_nostack: 636*9880d681SAndroid Build Coastguard Worker; X64-DFlyBSD-NOT: callq __morestack 637*9880d681SAndroid Build Coastguard Worker} 638*9880d681SAndroid Build Coastguard Worker 639*9880d681SAndroid Build Coastguard Workerattributes #0 = { "split-stack" } 640*9880d681SAndroid Build Coastguard Worker 641*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large: .rodata 642*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: __morestack_addr: 643*9880d681SAndroid Build Coastguard Worker; X64-Linux-Large-NEXT: .quad __morestack 644