1e578e970SPetar Jovanovic; RUN: llc < %s -march=mips -mcpu=mips2 -relocation-model=pic | FileCheck %s \ 2db4601e6SSimon Atanasyan; RUN: --check-prefixes=ALL,GP32,GP32-M 3e578e970SPetar Jovanovic; RUN: llc < %s -march=mips -mcpu=mips32 -relocation-model=pic | FileCheck %s \ 4db4601e6SSimon Atanasyan; RUN: --check-prefixes=ALL,GP32,GP32-M 5e578e970SPetar Jovanovic; RUN: llc < %s -march=mips -mcpu=mips32r6 -relocation-model=pic | FileCheck %s \ 6db4601e6SSimon Atanasyan; RUN: --check-prefixes=ALL,GP32,GP32-M 7db4601e6SSimon Atanasyan; RUN: llc < %s -march=mips -mcpu=mips32r2 -mattr=+micromips -relocation-model=pic | FileCheck %s \ 8db4601e6SSimon Atanasyan; RUN: --check-prefixes=ALL,GP32,GP32-MM,GP32-MMR2 9db4601e6SSimon Atanasyan; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips -relocation-model=pic | FileCheck %s \ 10db4601e6SSimon Atanasyan; RUN: --check-prefixes=ALL,GP32,GP32-MM,GP32-MMR6 11e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips3 -relocation-model=pic | FileCheck %s \ 120d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N64 13e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips64 -relocation-model=pic | FileCheck %s \ 140d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N64 15e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips64r6 -relocation-model=pic | FileCheck %s \ 160d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N64 17e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips3 -target-abi n32 -relocation-model=pic | FileCheck %s \ 180d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N32 19e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips64 -target-abi n32 -relocation-model=pic | FileCheck %s \ 200d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N32 21e578e970SPetar Jovanovic; RUN: llc < %s -march=mips64 -mcpu=mips64r6 -target-abi n32 -relocation-model=pic | FileCheck %s \ 220d97270aSDaniel Sanders; RUN: --check-prefixes=ALL,GP64,N32 23bb698c7dSVasileios Kalintiris 24bb698c7dSVasileios Kalintiris; Check dynamic stack realignment in functions without variable-sized objects. 25bb698c7dSVasileios Kalintiris 26bb698c7dSVasileios Kalintirisdeclare void @helper_01(i32, i32, i32, i32, i32*) 27bb698c7dSVasileios Kalintiris 28bb698c7dSVasileios Kalintiris; O32 ABI 29bb698c7dSVasileios Kalintirisdefine void @func_01() { 30bb698c7dSVasileios Kalintirisentry: 31bb698c7dSVasileios Kalintiris; GP32-LABEL: func_01: 32bb698c7dSVasileios Kalintiris 33bb698c7dSVasileios Kalintiris ; prologue 34bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. This particular case 35bb698c7dSVasileios Kalintiris ; needs a frame of up to between 16 and 512-bytes but currently 36bb698c7dSVasileios Kalintiris ; allocates between 1024 and 1536 bytes 37db4601e6SSimon Atanasyan ; GP32-M: addiu $sp, $sp, -1024 38db4601e6SSimon Atanasyan ; GP32-MMR2: addiusp -1024 39db4601e6SSimon Atanasyan ; GP32-MMR6: addiu $sp, $sp, -1024 40bb698c7dSVasileios Kalintiris ; GP32: sw $ra, 1020($sp) 41bb698c7dSVasileios Kalintiris ; GP32: sw $fp, 1016($sp) 42bb698c7dSVasileios Kalintiris ; 43bb698c7dSVasileios Kalintiris ; GP32: move $fp, $sp 44bb698c7dSVasileios Kalintiris ; GP32: addiu $[[T0:[0-9]+|ra|gp]], $zero, -512 45bb698c7dSVasileios Kalintiris ; GP32-NEXT: and $sp, $sp, $[[T0]] 46bb698c7dSVasileios Kalintiris 47bb698c7dSVasileios Kalintiris ; body 48bb698c7dSVasileios Kalintiris ; GP32: addiu $[[T1:[0-9]+]], $sp, 512 49db4601e6SSimon Atanasyan ; GP32-M: sw $[[T1]], 16($sp) 50db4601e6SSimon Atanasyan ; GP32-MM: sw16 $[[T1]], 16(${{[0-9]+}}) 51bb698c7dSVasileios Kalintiris 52bb698c7dSVasileios Kalintiris ; epilogue 53bb698c7dSVasileios Kalintiris ; GP32: move $sp, $fp 54bb698c7dSVasileios Kalintiris ; GP32: lw $fp, 1016($sp) 55bb698c7dSVasileios Kalintiris ; GP32: lw $ra, 1020($sp) 56db4601e6SSimon Atanasyan ; GP32-M: addiu $sp, $sp, 1024 57db4601e6SSimon Atanasyan ; GP32-MMR2: addiusp 1024 58db4601e6SSimon Atanasyan ; GP32-MMR6: addiu $sp, $sp, 1024 59bb698c7dSVasileios Kalintiris 60bb698c7dSVasileios Kalintiris %a = alloca i32, align 512 61bb698c7dSVasileios Kalintiris call void @helper_01(i32 0, i32 0, i32 0, i32 0, i32* %a) 62bb698c7dSVasileios Kalintiris ret void 63bb698c7dSVasileios Kalintiris} 64bb698c7dSVasileios Kalintiris 65bb698c7dSVasileios Kalintirisdeclare void @helper_02(i32, i32, i32, i32, 66bb698c7dSVasileios Kalintiris i32, i32, i32, i32, i32*) 67bb698c7dSVasileios Kalintiris 68*5a8db275SJon Roelofs; N32/N64 ABIs 69bb698c7dSVasileios Kalintirisdefine void @func_02() { 70bb698c7dSVasileios Kalintirisentry: 71bb698c7dSVasileios Kalintiris; GP64-LABEL: func_02: 72bb698c7dSVasileios Kalintiris 73bb698c7dSVasileios Kalintiris ; prologue 74bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. This particular case 75bb698c7dSVasileios Kalintiris ; needs a frame of up to between 16 and 512-bytes but currently 76bb698c7dSVasileios Kalintiris ; allocates between 1024 and 1536 bytes 77bb698c7dSVasileios Kalintiris ; N32: addiu $sp, $sp, -1024 78bb698c7dSVasileios Kalintiris ; N64: daddiu $sp, $sp, -1024 79bb698c7dSVasileios Kalintiris ; GP64: sd $ra, 1016($sp) 80bb698c7dSVasileios Kalintiris ; GP64: sd $fp, 1008($sp) 81bb698c7dSVasileios Kalintiris ; N32: sd $gp, 1000($sp) 82bb698c7dSVasileios Kalintiris ; 83bb698c7dSVasileios Kalintiris ; GP64: move $fp, $sp 84bb698c7dSVasileios Kalintiris ; N32: addiu $[[T0:[0-9]+|ra]], $zero, -512 85bb698c7dSVasileios Kalintiris ; N64: daddiu $[[T0:[0-9]+|ra]], $zero, -512 86bb698c7dSVasileios Kalintiris ; GP64-NEXT: and $sp, $sp, $[[T0]] 87bb698c7dSVasileios Kalintiris 88bb698c7dSVasileios Kalintiris ; body 89bb698c7dSVasileios Kalintiris ; N32: addiu $[[T1:[0-9]+]], $sp, 512 90bb698c7dSVasileios Kalintiris ; N64: daddiu $[[T1:[0-9]+]], $sp, 512 91bb698c7dSVasileios Kalintiris ; GP64: sd $[[T1]], 0($sp) 92bb698c7dSVasileios Kalintiris 93bb698c7dSVasileios Kalintiris ; epilogue 94bb698c7dSVasileios Kalintiris ; GP64: move $sp, $fp 95bb698c7dSVasileios Kalintiris ; N32: ld $gp, 1000($sp) 96bb698c7dSVasileios Kalintiris ; GP64: ld $fp, 1008($sp) 97bb698c7dSVasileios Kalintiris ; GP64: ld $ra, 1016($sp) 98bb698c7dSVasileios Kalintiris ; N32: addiu $sp, $sp, 1024 99bb698c7dSVasileios Kalintiris ; N64: daddiu $sp, $sp, 1024 100bb698c7dSVasileios Kalintiris 101bb698c7dSVasileios Kalintiris %a = alloca i32, align 512 102bb698c7dSVasileios Kalintiris call void @helper_02(i32 0, i32 0, i32 0, i32 0, 103bb698c7dSVasileios Kalintiris i32 0, i32 0, i32 0, i32 0, i32* %a) 104bb698c7dSVasileios Kalintiris ret void 105bb698c7dSVasileios Kalintiris} 106bb698c7dSVasileios Kalintiris 107bb698c7dSVasileios Kalintiris; Verify that we use $fp for referencing incoming arguments. 108bb698c7dSVasileios Kalintiris 109bb698c7dSVasileios Kalintirisdeclare void @helper_03(i32, i32, i32, i32, i32*, i32*) 110bb698c7dSVasileios Kalintiris 111*5a8db275SJon Roelofs; O32 ABI 112bb698c7dSVasileios Kalintirisdefine void @func_03(i32 %p0, i32 %p1, i32 %p2, i32 %p3, i32* %b) { 113bb698c7dSVasileios Kalintirisentry: 114bb698c7dSVasileios Kalintiris; GP32-LABEL: func_03: 115bb698c7dSVasileios Kalintiris 116bb698c7dSVasileios Kalintiris ; body 117bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 118bb698c7dSVasileios Kalintiris ; GP32-DAG: addiu $[[T0:[0-9]+]], $sp, 512 119db4601e6SSimon Atanasyan ; GP32-M-DAG: sw $[[T0]], 16($sp) 120db4601e6SSimon Atanasyan ; GP32-MM-DAG: sw16 $[[T0]], 16(${{[0-9]+}}) 121bb698c7dSVasileios Kalintiris ; GP32-DAG: lw $[[T1:[0-9]+]], 1040($fp) 122db4601e6SSimon Atanasyan ; GP32-M-DAG: sw $[[T1]], 20($sp) 123db4601e6SSimon Atanasyan ; GP32-MM-DAG: sw16 $[[T1]], 20(${{[0-9]+}}) 124bb698c7dSVasileios Kalintiris 125bb698c7dSVasileios Kalintiris %a = alloca i32, align 512 126bb698c7dSVasileios Kalintiris call void @helper_03(i32 0, i32 0, i32 0, i32 0, i32* %a, i32* %b) 127bb698c7dSVasileios Kalintiris ret void 128bb698c7dSVasileios Kalintiris} 129bb698c7dSVasileios Kalintiris 130bb698c7dSVasileios Kalintirisdeclare void @helper_04(i32, i32, i32, i32, 131bb698c7dSVasileios Kalintiris i32, i32, i32, i32, i32*, i32*) 132bb698c7dSVasileios Kalintiris 133*5a8db275SJon Roelofs; N32/N64 ABIs 134bb698c7dSVasileios Kalintirisdefine void @func_04(i32 %p0, i32 %p1, i32 %p2, i32 %p3, 135bb698c7dSVasileios Kalintiris i32 %p4, i32 %p5, i32 %p6, i32 %p7, 136bb698c7dSVasileios Kalintiris i32* %b) { 137bb698c7dSVasileios Kalintirisentry: 138bb698c7dSVasileios Kalintiris; GP64-LABEL: func_04: 139bb698c7dSVasileios Kalintiris 140bb698c7dSVasileios Kalintiris ; body 141bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 142bb698c7dSVasileios Kalintiris ; N32-DAG: addiu $[[T0:[0-9]+]], $sp, 512 143bb698c7dSVasileios Kalintiris ; N64-DAG: daddiu $[[T0:[0-9]+]], $sp, 512 144bb698c7dSVasileios Kalintiris ; GP64-DAG: sd $[[T0]], 0($sp) 145bb698c7dSVasileios Kalintiris ; GP64-DAG: ld $[[T1:[0-9]+]], 1024($fp) 146bb698c7dSVasileios Kalintiris ; GP64-DAG: sd $[[T1]], 8($sp) 147bb698c7dSVasileios Kalintiris 148bb698c7dSVasileios Kalintiris %a = alloca i32, align 512 149bb698c7dSVasileios Kalintiris call void @helper_04(i32 0, i32 0, i32 0, i32 0, 150bb698c7dSVasileios Kalintiris i32 0, i32 0, i32 0, i32 0, i32* %a, i32* %b) 151bb698c7dSVasileios Kalintiris ret void 152bb698c7dSVasileios Kalintiris} 153bb698c7dSVasileios Kalintiris 154bb698c7dSVasileios Kalintiris; Check dynamic stack realignment in functions with variable-sized objects. 155bb698c7dSVasileios Kalintiris 156*5a8db275SJon Roelofs; O32 ABI 157bb698c7dSVasileios Kalintirisdefine void @func_05(i32 %sz) { 158bb698c7dSVasileios Kalintirisentry: 159bb698c7dSVasileios Kalintiris; GP32-LABEL: func_05: 160bb698c7dSVasileios Kalintiris 161bb698c7dSVasileios Kalintiris ; prologue 162bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 163db4601e6SSimon Atanasyan ; GP32-M: addiu $sp, $sp, -1024 164db4601e6SSimon Atanasyan ; GP32-MMR2: addiusp -1024 165db4601e6SSimon Atanasyan ; GP32-MMR6: addiu $sp, $sp, -1024 16655ac7458SSimon Atanasyan ; GP32: sw $ra, 1020($sp) 16755ac7458SSimon Atanasyan ; GP32: sw $fp, 1016($sp) 16855ac7458SSimon Atanasyan ; GP32: sw $23, 1012($sp) 169bb698c7dSVasileios Kalintiris ; 170bb698c7dSVasileios Kalintiris ; GP32: move $fp, $sp 171bb698c7dSVasileios Kalintiris ; GP32: addiu $[[T0:[0-9]+|gp]], $zero, -512 172bb698c7dSVasileios Kalintiris ; GP32-NEXT: and $sp, $sp, $[[T0]] 173bb698c7dSVasileios Kalintiris ; GP32-NEXT: move $23, $sp 174bb698c7dSVasileios Kalintiris 175bb698c7dSVasileios Kalintiris ; body 176bb698c7dSVasileios Kalintiris ; GP32: addiu $[[T1:[0-9]+]], $zero, 222 177bb698c7dSVasileios Kalintiris ; GP32: sw $[[T1]], 508($23) 178bb698c7dSVasileios Kalintiris 179bb698c7dSVasileios Kalintiris ; epilogue 180bb698c7dSVasileios Kalintiris ; GP32: move $sp, $fp 18155ac7458SSimon Atanasyan ; GP32: lw $23, 1012($sp) 18255ac7458SSimon Atanasyan ; GP32: lw $fp, 1016($sp) 18355ac7458SSimon Atanasyan ; GP32: lw $ra, 1020($sp) 184db4601e6SSimon Atanasyan ; GP32-M: addiu $sp, $sp, 1024 185db4601e6SSimon Atanasyan ; GP32-MMR2: addiusp 1024 186db4601e6SSimon Atanasyan ; GP32-MMR6: addiu $sp, $sp, 1024 187bb698c7dSVasileios Kalintiris 188bb698c7dSVasileios Kalintiris %a0 = alloca i32, i32 %sz, align 512 189bb698c7dSVasileios Kalintiris %a1 = alloca i32, align 4 190bb698c7dSVasileios Kalintiris 191bb698c7dSVasileios Kalintiris store volatile i32 111, i32* %a0, align 512 192bb698c7dSVasileios Kalintiris store volatile i32 222, i32* %a1, align 4 193bb698c7dSVasileios Kalintiris 194bb698c7dSVasileios Kalintiris ret void 195bb698c7dSVasileios Kalintiris} 196bb698c7dSVasileios Kalintiris 197*5a8db275SJon Roelofs; N32/N64 ABIs 198bb698c7dSVasileios Kalintirisdefine void @func_06(i32 %sz) { 199bb698c7dSVasileios Kalintirisentry: 200bb698c7dSVasileios Kalintiris; GP64-LABEL: func_06: 201bb698c7dSVasileios Kalintiris 202bb698c7dSVasileios Kalintiris ; prologue 203bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 204bb698c7dSVasileios Kalintiris ; N32: addiu $sp, $sp, -1024 205bb698c7dSVasileios Kalintiris ; N64: daddiu $sp, $sp, -1024 20655ac7458SSimon Atanasyan ; GP64: sd $ra, 1016($sp) 20755ac7458SSimon Atanasyan ; GP64: sd $fp, 1008($sp) 20855ac7458SSimon Atanasyan ; GP64: sd $23, 1000($sp) 209bb698c7dSVasileios Kalintiris ; 210bb698c7dSVasileios Kalintiris ; GP64: move $fp, $sp 211bb698c7dSVasileios Kalintiris ; GP64: addiu $[[T0:[0-9]+|gp]], $zero, -512 212bb698c7dSVasileios Kalintiris ; GP64-NEXT: and $sp, $sp, $[[T0]] 213bb698c7dSVasileios Kalintiris ; GP64-NEXT: move $23, $sp 214bb698c7dSVasileios Kalintiris 215bb698c7dSVasileios Kalintiris ; body 216bb698c7dSVasileios Kalintiris ; GP64: addiu $[[T1:[0-9]+]], $zero, 222 217bb698c7dSVasileios Kalintiris ; GP64: sw $[[T1]], 508($23) 218bb698c7dSVasileios Kalintiris 219bb698c7dSVasileios Kalintiris ; epilogue 220bb698c7dSVasileios Kalintiris ; GP64: move $sp, $fp 22155ac7458SSimon Atanasyan ; GP64: ld $23, 1000($sp) 22255ac7458SSimon Atanasyan ; GP64: ld $fp, 1008($sp) 22355ac7458SSimon Atanasyan ; GP64: ld $ra, 1016($sp) 224bb698c7dSVasileios Kalintiris ; N32: addiu $sp, $sp, 1024 225bb698c7dSVasileios Kalintiris ; N64: daddiu $sp, $sp, 1024 226bb698c7dSVasileios Kalintiris 227bb698c7dSVasileios Kalintiris %a0 = alloca i32, i32 %sz, align 512 228bb698c7dSVasileios Kalintiris %a1 = alloca i32, align 4 229bb698c7dSVasileios Kalintiris 230bb698c7dSVasileios Kalintiris store volatile i32 111, i32* %a0, align 512 231bb698c7dSVasileios Kalintiris store volatile i32 222, i32* %a1, align 4 232bb698c7dSVasileios Kalintiris 233bb698c7dSVasileios Kalintiris ret void 234bb698c7dSVasileios Kalintiris} 235bb698c7dSVasileios Kalintiris 236bb698c7dSVasileios Kalintiris; Verify that we use $fp for referencing incoming arguments and $sp for 237bb698c7dSVasileios Kalintiris; building outbound arguments for nested function calls. 238bb698c7dSVasileios Kalintiris 239bb698c7dSVasileios Kalintiris; O32 ABI 240bb698c7dSVasileios Kalintirisdefine void @func_07(i32 %p0, i32 %p1, i32 %p2, i32 %p3, i32 %sz) { 241bb698c7dSVasileios Kalintirisentry: 242bb698c7dSVasileios Kalintiris; GP32-LABEL: func_07: 243bb698c7dSVasileios Kalintiris 244bb698c7dSVasileios Kalintiris ; body 245bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 246bb698c7dSVasileios Kalintiris ; GP32-DAG: lw $[[T0:[0-9]+]], 1040($fp) 247bb698c7dSVasileios Kalintiris ; 248bb698c7dSVasileios Kalintiris ; GP32-DAG: addiu $[[T1:[0-9]+]], $zero, 222 249bb698c7dSVasileios Kalintiris ; GP32-DAG: sw $[[T1]], 508($23) 250bb698c7dSVasileios Kalintiris ; 251db4601e6SSimon Atanasyan ; GP32-M-DAG: sw $[[T2:[0-9]+]], 16($sp) 252db4601e6SSimon Atanasyan ; GP32-MM-DAG: sw16 $[[T2:[0-9]+]], 16($[[T3:[0-9]+]]) 253bb698c7dSVasileios Kalintiris 254bb698c7dSVasileios Kalintiris %a0 = alloca i32, i32 %sz, align 512 255bb698c7dSVasileios Kalintiris %a1 = alloca i32, align 4 256bb698c7dSVasileios Kalintiris 257bb698c7dSVasileios Kalintiris store volatile i32 111, i32* %a0, align 512 258bb698c7dSVasileios Kalintiris store volatile i32 222, i32* %a1, align 4 259bb698c7dSVasileios Kalintiris 260bb698c7dSVasileios Kalintiris call void @helper_01(i32 0, i32 0, i32 0, i32 0, i32* %a1) 261bb698c7dSVasileios Kalintiris 262bb698c7dSVasileios Kalintiris ret void 263bb698c7dSVasileios Kalintiris} 264bb698c7dSVasileios Kalintiris 265*5a8db275SJon Roelofs; N32/N64 ABIs 266bb698c7dSVasileios Kalintirisdefine void @func_08(i32 %p0, i32 %p1, i32 %p2, i32 %p3, 267bb698c7dSVasileios Kalintiris i32 %p4, i32 %p5, i32 %p6, i32 %p7, 268bb698c7dSVasileios Kalintiris i32 %sz) { 269bb698c7dSVasileios Kalintirisentry: 270bb698c7dSVasileios Kalintiris; GP64-LABEL: func_08: 271bb698c7dSVasileios Kalintiris 272bb698c7dSVasileios Kalintiris ; body 273bb698c7dSVasileios Kalintiris ; FIXME: We are currently over-allocating stack space. 274bb698c7dSVasileios Kalintiris ; N32-DAG: lw $[[T0:[0-9]+]], 1028($fp) 275bb698c7dSVasileios Kalintiris ; N64-DAG: lwu $[[T0:[0-9]+]], 1028($fp) 276bb698c7dSVasileios Kalintiris ; 277bb698c7dSVasileios Kalintiris ; GP64-DAG: addiu $[[T1:[0-9]+]], $zero, 222 278bb698c7dSVasileios Kalintiris ; GP64-DAG: sw $[[T1]], 508($23) 279bb698c7dSVasileios Kalintiris ; 280bb698c7dSVasileios Kalintiris ; GP64-DAG: sd $[[T2:[0-9]+]], 0($sp) 281bb698c7dSVasileios Kalintiris 282bb698c7dSVasileios Kalintiris %a0 = alloca i32, i32 %sz, align 512 283bb698c7dSVasileios Kalintiris %a1 = alloca i32, align 4 284bb698c7dSVasileios Kalintiris 285bb698c7dSVasileios Kalintiris store volatile i32 111, i32* %a0, align 512 286bb698c7dSVasileios Kalintiris store volatile i32 222, i32* %a1, align 4 287bb698c7dSVasileios Kalintiris 288bb698c7dSVasileios Kalintiris call void @helper_02(i32 0, i32 0, i32 0, i32 0, 289bb698c7dSVasileios Kalintiris i32 0, i32 0, i32 0, i32 0, i32* %a1) 290bb698c7dSVasileios Kalintiris ret void 291bb698c7dSVasileios Kalintiris} 292bb698c7dSVasileios Kalintiris 293bb698c7dSVasileios Kalintiris; Check that we do not perform dynamic stack realignment in the presence of 294bb698c7dSVasileios Kalintiris; the "no-realign-stack" function attribute. 295bb698c7dSVasileios Kalintirisdefine void @func_09() "no-realign-stack" { 296bb698c7dSVasileios Kalintirisentry: 297bb698c7dSVasileios Kalintiris; ALL-LABEL: func_09: 298bb698c7dSVasileios Kalintiris 299bb698c7dSVasileios Kalintiris ; ALL-NOT: and $sp, $sp, $[[T0:[0-9]+|ra|gp]] 300bb698c7dSVasileios Kalintiris 301bb698c7dSVasileios Kalintiris %a = alloca i32, align 512 302bb698c7dSVasileios Kalintiris call void @helper_01(i32 0, i32 0, i32 0, i32 0, i32* %a) 303bb698c7dSVasileios Kalintiris ret void 304bb698c7dSVasileios Kalintiris} 305bb698c7dSVasileios Kalintiris 306bb698c7dSVasileios Kalintirisdefine void @func_10(i32 %sz) "no-realign-stack" { 307bb698c7dSVasileios Kalintirisentry: 308bb698c7dSVasileios Kalintiris; ALL-LABEL: func_10: 309bb698c7dSVasileios Kalintiris 310bb698c7dSVasileios Kalintiris ; ALL-NOT: and $sp, $sp, $[[T0:[0-9]+|ra|gp]] 311bb698c7dSVasileios Kalintiris 312bb698c7dSVasileios Kalintiris %a0 = alloca i32, i32 %sz, align 512 313bb698c7dSVasileios Kalintiris %a1 = alloca i32, align 4 314bb698c7dSVasileios Kalintiris 315bb698c7dSVasileios Kalintiris store volatile i32 111, i32* %a0, align 512 316bb698c7dSVasileios Kalintiris store volatile i32 222, i32* %a1, align 4 317bb698c7dSVasileios Kalintiris 318bb698c7dSVasileios Kalintiris ret void 319bb698c7dSVasileios Kalintiris} 320