| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=skylake | FileCheck %s | |
| declare void @capture(ptr) | |
| define void @test_natural() "no-realign-stack" { | |
| ; CHECK-LABEL: test_natural: | |
| ; CHECK: # %bb.0: | |
| ; CHECK-NEXT: pushq %rax | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 | |
| ; CHECK-NEXT: movq %rsp, %rdi | |
| ; CHECK-NEXT: callq capture@PLT | |
| ; CHECK-NEXT: popq %rax | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 8 | |
| ; CHECK-NEXT: retq | |
| %a = alloca i64 | |
| call void @capture(ptr %a) | |
| ret void | |
| } | |
| define void @test_realign() { | |
| ; CHECK-LABEL: test_realign: | |
| ; CHECK: # %bb.0: | |
| ; CHECK-NEXT: pushq %rbp | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 | |
| ; CHECK-NEXT: .cfi_offset %rbp, -16 | |
| ; CHECK-NEXT: movq %rsp, %rbp | |
| ; CHECK-NEXT: .cfi_def_cfa_register %rbp | |
| ; CHECK-NEXT: andq $-64, %rsp | |
| ; CHECK-NEXT: subq $64, %rsp | |
| ; CHECK-NEXT: movq %rsp, %rdi | |
| ; CHECK-NEXT: callq capture@PLT | |
| ; CHECK-NEXT: movq %rbp, %rsp | |
| ; CHECK-NEXT: popq %rbp | |
| ; CHECK-NEXT: .cfi_def_cfa %rsp, 8 | |
| ; CHECK-NEXT: retq | |
| %a = alloca i64, align 64 | |
| call void @capture(ptr %a) | |
| ret void | |
| } | |
| define void @test_norealign() "no-realign-stack" { | |
| ; CHECK-LABEL: test_norealign: | |
| ; CHECK: # %bb.0: | |
| ; CHECK-NEXT: pushq %rax | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 | |
| ; CHECK-NEXT: movq %rsp, %rdi | |
| ; CHECK-NEXT: callq capture@PLT | |
| ; CHECK-NEXT: popq %rax | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 8 | |
| ; CHECK-NEXT: retq | |
| %a = alloca i64, align 64 | |
| call void @capture(ptr %a) | |
| ret void | |
| } |