224 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefix=LIN-REF3; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+push2pop2 | FileCheck %s --check-prefix=LIN4; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+push2pop2,+ppx | FileCheck %s --check-prefix=LIN-PPX5; RUN: llc < %s -mtriple=x86_64-windows-msvc | FileCheck %s --check-prefix=WIN-REF6; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=+push2pop2 | FileCheck %s --check-prefix=WIN7; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=+push2pop2,+ppx | FileCheck %s --check-prefix=WIN-PPX8 9define i32 @csr6_alloc16(ptr %argv) {10; LIN-REF-LABEL: csr6_alloc16:11; LIN-REF: # %bb.0: # %entry12; LIN-REF-NEXT: pushq %rbp13; LIN-REF-NEXT: .cfi_def_cfa_offset 1614; LIN-REF-NEXT: pushq %r1515; LIN-REF-NEXT: .cfi_def_cfa_offset 2416; LIN-REF-NEXT: pushq %r1417; LIN-REF-NEXT: .cfi_def_cfa_offset 3218; LIN-REF-NEXT: pushq %r1319; LIN-REF-NEXT: .cfi_def_cfa_offset 4020; LIN-REF-NEXT: pushq %r1221; LIN-REF-NEXT: .cfi_def_cfa_offset 4822; LIN-REF-NEXT: pushq %rbx23; LIN-REF-NEXT: .cfi_def_cfa_offset 5624; LIN-REF-NEXT: subq $24, %rsp25; LIN-REF-NEXT: .cfi_def_cfa_offset 8026; LIN-REF-NEXT: .cfi_offset %rbx, -5627; LIN-REF-NEXT: .cfi_offset %r12, -4828; LIN-REF-NEXT: .cfi_offset %r13, -4029; LIN-REF-NEXT: .cfi_offset %r14, -3230; LIN-REF-NEXT: .cfi_offset %r15, -2431; LIN-REF-NEXT: .cfi_offset %rbp, -1632; LIN-REF-NEXT: #APP33; LIN-REF-NEXT: #NO_APP34; LIN-REF-NEXT: xorl %ecx, %ecx35; LIN-REF-NEXT: xorl %eax, %eax36; LIN-REF-NEXT: callq *%rcx37; LIN-REF-NEXT: addq $24, %rsp38; LIN-REF-NEXT: .cfi_def_cfa_offset 5639; LIN-REF-NEXT: popq %rbx40; LIN-REF-NEXT: .cfi_def_cfa_offset 4841; LIN-REF-NEXT: popq %r1242; LIN-REF-NEXT: .cfi_def_cfa_offset 4043; LIN-REF-NEXT: popq %r1344; LIN-REF-NEXT: .cfi_def_cfa_offset 3245; LIN-REF-NEXT: popq %r1446; LIN-REF-NEXT: .cfi_def_cfa_offset 2447; LIN-REF-NEXT: popq %r1548; LIN-REF-NEXT: .cfi_def_cfa_offset 1649; LIN-REF-NEXT: popq %rbp50; LIN-REF-NEXT: .cfi_def_cfa_offset 851; LIN-REF-NEXT: retq52;53; LIN-LABEL: csr6_alloc16:54; LIN: # %bb.0: # %entry55; LIN-NEXT: pushq %rax56; LIN-NEXT: .cfi_def_cfa_offset 1657; LIN-NEXT: push2 %r15, %rbp58; LIN-NEXT: .cfi_def_cfa_offset 3259; LIN-NEXT: push2 %r13, %r1460; LIN-NEXT: .cfi_def_cfa_offset 4861; LIN-NEXT: push2 %rbx, %r1262; LIN-NEXT: .cfi_def_cfa_offset 6463; LIN-NEXT: subq $32, %rsp64; LIN-NEXT: .cfi_def_cfa_offset 9665; LIN-NEXT: .cfi_offset %rbx, -6466; LIN-NEXT: .cfi_offset %r12, -5667; LIN-NEXT: .cfi_offset %r13, -4868; LIN-NEXT: .cfi_offset %r14, -4069; LIN-NEXT: .cfi_offset %r15, -3270; LIN-NEXT: .cfi_offset %rbp, -2471; LIN-NEXT: #APP72; LIN-NEXT: #NO_APP73; LIN-NEXT: xorl %ecx, %ecx74; LIN-NEXT: xorl %eax, %eax75; LIN-NEXT: callq *%rcx76; LIN-NEXT: addq $32, %rsp77; LIN-NEXT: .cfi_def_cfa_offset 6478; LIN-NEXT: pop2 %r12, %rbx79; LIN-NEXT: .cfi_def_cfa_offset 4880; LIN-NEXT: pop2 %r14, %r1381; LIN-NEXT: .cfi_def_cfa_offset 3282; LIN-NEXT: pop2 %rbp, %r1583; LIN-NEXT: .cfi_def_cfa_offset 1684; LIN-NEXT: popq %rax85; LIN-NEXT: .cfi_def_cfa_offset 886; LIN-NEXT: retq87;88; LIN-PPX-LABEL: csr6_alloc16:89; LIN-PPX: # %bb.0: # %entry90; LIN-PPX-NEXT: pushq %rax91; LIN-PPX-NEXT: .cfi_def_cfa_offset 1692; LIN-PPX-NEXT: push2p %r15, %rbp93; LIN-PPX-NEXT: .cfi_def_cfa_offset 3294; LIN-PPX-NEXT: push2p %r13, %r1495; LIN-PPX-NEXT: .cfi_def_cfa_offset 4896; LIN-PPX-NEXT: push2p %rbx, %r1297; LIN-PPX-NEXT: .cfi_def_cfa_offset 6498; LIN-PPX-NEXT: subq $32, %rsp99; LIN-PPX-NEXT: .cfi_def_cfa_offset 96100; LIN-PPX-NEXT: .cfi_offset %rbx, -64101; LIN-PPX-NEXT: .cfi_offset %r12, -56102; LIN-PPX-NEXT: .cfi_offset %r13, -48103; LIN-PPX-NEXT: .cfi_offset %r14, -40104; LIN-PPX-NEXT: .cfi_offset %r15, -32105; LIN-PPX-NEXT: .cfi_offset %rbp, -24106; LIN-PPX-NEXT: #APP107; LIN-PPX-NEXT: #NO_APP108; LIN-PPX-NEXT: xorl %ecx, %ecx109; LIN-PPX-NEXT: xorl %eax, %eax110; LIN-PPX-NEXT: callq *%rcx111; LIN-PPX-NEXT: addq $32, %rsp112; LIN-PPX-NEXT: .cfi_def_cfa_offset 64113; LIN-PPX-NEXT: pop2p %r12, %rbx114; LIN-PPX-NEXT: .cfi_def_cfa_offset 48115; LIN-PPX-NEXT: pop2p %r14, %r13116; LIN-PPX-NEXT: .cfi_def_cfa_offset 32117; LIN-PPX-NEXT: pop2p %rbp, %r15118; LIN-PPX-NEXT: .cfi_def_cfa_offset 16119; LIN-PPX-NEXT: popq %rax120; LIN-PPX-NEXT: .cfi_def_cfa_offset 8121; LIN-PPX-NEXT: retq122;123; WIN-REF-LABEL: csr6_alloc16:124; WIN-REF: # %bb.0: # %entry125; WIN-REF-NEXT: pushq %r15126; WIN-REF-NEXT: .seh_pushreg %r15127; WIN-REF-NEXT: pushq %r14128; WIN-REF-NEXT: .seh_pushreg %r14129; WIN-REF-NEXT: pushq %r13130; WIN-REF-NEXT: .seh_pushreg %r13131; WIN-REF-NEXT: pushq %r12132; WIN-REF-NEXT: .seh_pushreg %r12133; WIN-REF-NEXT: pushq %rbp134; WIN-REF-NEXT: .seh_pushreg %rbp135; WIN-REF-NEXT: pushq %rbx136; WIN-REF-NEXT: .seh_pushreg %rbx137; WIN-REF-NEXT: subq $56, %rsp138; WIN-REF-NEXT: .seh_stackalloc 56139; WIN-REF-NEXT: .seh_endprologue140; WIN-REF-NEXT: #APP141; WIN-REF-NEXT: #NO_APP142; WIN-REF-NEXT: xorl %eax, %eax143; WIN-REF-NEXT: callq *%rax144; WIN-REF-NEXT: nop145; WIN-REF-NEXT: .seh_startepilogue146; WIN-REF-NEXT: addq $56, %rsp147; WIN-REF-NEXT: popq %rbx148; WIN-REF-NEXT: popq %rbp149; WIN-REF-NEXT: popq %r12150; WIN-REF-NEXT: popq %r13151; WIN-REF-NEXT: popq %r14152; WIN-REF-NEXT: popq %r15153; WIN-REF-NEXT: .seh_endepilogue154; WIN-REF-NEXT: retq155; WIN-REF-NEXT: .seh_endproc156;157; WIN-LABEL: csr6_alloc16:158; WIN: # %bb.0: # %entry159; WIN-NEXT: pushq %rax160; WIN-NEXT: .seh_pushreg %rax161; WIN-NEXT: push2 %r14, %r15162; WIN-NEXT: .seh_pushreg %r15163; WIN-NEXT: .seh_pushreg %r14164; WIN-NEXT: push2 %r12, %r13165; WIN-NEXT: .seh_pushreg %r13166; WIN-NEXT: .seh_pushreg %r12167; WIN-NEXT: push2 %rbx, %rbp168; WIN-NEXT: .seh_pushreg %rbp169; WIN-NEXT: .seh_pushreg %rbx170; WIN-NEXT: subq $64, %rsp171; WIN-NEXT: .seh_stackalloc 64172; WIN-NEXT: .seh_endprologue173; WIN-NEXT: #APP174; WIN-NEXT: #NO_APP175; WIN-NEXT: xorl %eax, %eax176; WIN-NEXT: callq *%rax177; WIN-NEXT: nop178; WIN-NEXT: .seh_startepilogue179; WIN-NEXT: addq $64, %rsp180; WIN-NEXT: pop2 %rbp, %rbx181; WIN-NEXT: pop2 %r13, %r12182; WIN-NEXT: pop2 %r15, %r14183; WIN-NEXT: popq %rax184; WIN-NEXT: .seh_endepilogue185; WIN-NEXT: retq186; WIN-NEXT: .seh_endproc187;188; WIN-PPX-LABEL: csr6_alloc16:189; WIN-PPX: # %bb.0: # %entry190; WIN-PPX-NEXT: pushq %rax191; WIN-PPX-NEXT: .seh_pushreg %rax192; WIN-PPX-NEXT: push2p %r14, %r15193; WIN-PPX-NEXT: .seh_pushreg %r15194; WIN-PPX-NEXT: .seh_pushreg %r14195; WIN-PPX-NEXT: push2p %r12, %r13196; WIN-PPX-NEXT: .seh_pushreg %r13197; WIN-PPX-NEXT: .seh_pushreg %r12198; WIN-PPX-NEXT: push2p %rbx, %rbp199; WIN-PPX-NEXT: .seh_pushreg %rbp200; WIN-PPX-NEXT: .seh_pushreg %rbx201; WIN-PPX-NEXT: subq $64, %rsp202; WIN-PPX-NEXT: .seh_stackalloc 64203; WIN-PPX-NEXT: .seh_endprologue204; WIN-PPX-NEXT: #APP205; WIN-PPX-NEXT: #NO_APP206; WIN-PPX-NEXT: xorl %eax, %eax207; WIN-PPX-NEXT: callq *%rax208; WIN-PPX-NEXT: nop209; WIN-PPX-NEXT: .seh_startepilogue210; WIN-PPX-NEXT: addq $64, %rsp211; WIN-PPX-NEXT: pop2p %rbp, %rbx212; WIN-PPX-NEXT: pop2p %r13, %r12213; WIN-PPX-NEXT: pop2p %r15, %r14214; WIN-PPX-NEXT: popq %rax215; WIN-PPX-NEXT: .seh_endepilogue216; WIN-PPX-NEXT: retq217; WIN-PPX-NEXT: .seh_endproc218entry:219 tail call void asm sideeffect "", "~{rbp},~{r15},~{r14},~{r13},~{r12},~{rbx},~{dirflag},~{fpsr},~{flags}"()220 %a = alloca [3 x ptr], align 8221 %b = call ptr (...) null()222 ret i32 undef223}224