Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -verify-machineinstrs -mtriple=x86_64-pc-linux < %s | FileCheck %s
      2 ; RUN: llc -verify-machineinstrs -mtriple=x86_64-pc-linux-gnux32 < %s | FileCheck -check-prefix=X32ABI %s
      3 ; RUN: llc -verify-machineinstrs -mtriple=x86_64-pc-nacl < %s | FileCheck -check-prefix=NACL %s
      4 
      5 ; x32 uses %esp, %ebp as stack and frame pointers
      6 
      7 ; CHECK-LABEL: foo
      8 ; CHECK: pushq %rbp
      9 ; CHECK: movq %rsp, %rbp
     10 ; CHECK: movq %rdi, -8(%rbp)
     11 ; CHECK: popq %rbp
     12 ; X32ABI-LABEL: foo
     13 ; X32ABI: pushq %rbp
     14 ; X32ABI: movl %esp, %ebp
     15 ; X32ABI: movl %edi, -4(%ebp)
     16 ; X32ABI: popq %rbp
     17 ; NACL-LABEL: foo
     18 ; NACL: pushq %rbp
     19 ; NACL: movq %rsp, %rbp
     20 ; NACL: movl %edi, -4(%rbp)
     21 ; NACL: popq %rbp
     22 
     23 
     24 define void @foo(i32* %a) #0 {
     25 entry:
     26   %a.addr = alloca i32*, align 4
     27   %b = alloca i32*, align 4
     28   store i32* %a, i32** %a.addr, align 4
     29   ret void
     30 }
     31 
     32 attributes #0 = { nounwind uwtable "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"}
     33 
     34 
     35