70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=x86_64 -mattr=+push2pop2 | FileCheck %s3 4 5; This test is to check if "pushq %rax" is emitted correctly for push2pop26; padding when it's built with -stack-clash-protection option.7 8define i32 @foo(ptr %src1, i32 %len, ptr %src2, ptr %dst, i1 %cmp, i32 %sub) #0 {9; CHECK-LABEL: foo:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: pushq %rax12; CHECK-NEXT: .cfi_def_cfa_offset 1613; CHECK-NEXT: push2 %r15, %rbp14; CHECK-NEXT: .cfi_def_cfa_offset 3215; CHECK-NEXT: push2 %r13, %r1416; CHECK-NEXT: .cfi_def_cfa_offset 4817; CHECK-NEXT: push2 %rbx, %r1218; CHECK-NEXT: .cfi_def_cfa_offset 6419; CHECK-NEXT: subq $16, %rsp20; CHECK-NEXT: .cfi_def_cfa_offset 8021; CHECK-NEXT: .cfi_offset %rbx, -6422; CHECK-NEXT: .cfi_offset %r12, -5623; CHECK-NEXT: .cfi_offset %r13, -4824; CHECK-NEXT: .cfi_offset %r14, -4025; CHECK-NEXT: .cfi_offset %r15, -3226; CHECK-NEXT: .cfi_offset %rbp, -2427; CHECK-NEXT: movl %r9d, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill28; CHECK-NEXT: movl %r8d, %ebp29; CHECK-NEXT: movq %rcx, %r1430; CHECK-NEXT: movq %rdx, %r1531; CHECK-NEXT: movl %esi, %r12d32; CHECK-NEXT: movq %rdi, %r1333; CHECK-NEXT: xorl %ebx, %ebx34; CHECK-NEXT: .p2align 435; CHECK-NEXT: .LBB0_1: # %while.body36; CHECK-NEXT: # =>This Inner Loop Header: Depth=137; CHECK-NEXT: movq %r15, %rdi38; CHECK-NEXT: movq %r13, %rsi39; CHECK-NEXT: movq %r14, %rdx40; CHECK-NEXT: xorl %ecx, %ecx41; CHECK-NEXT: movl %r12d, %r8d42; CHECK-NEXT: callq *%rbx43; CHECK-NEXT: testb $1, %bpl44; CHECK-NEXT: jne .LBB0_145; CHECK-NEXT: # %bb.2: # %while.end46; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload47; CHECK-NEXT: addq $16, %rsp48; CHECK-NEXT: .cfi_def_cfa_offset 6449; CHECK-NEXT: pop2 %r12, %rbx50; CHECK-NEXT: .cfi_def_cfa_offset 4851; CHECK-NEXT: pop2 %r14, %r1352; CHECK-NEXT: .cfi_def_cfa_offset 3253; CHECK-NEXT: pop2 %rbp, %r1554; CHECK-NEXT: .cfi_def_cfa_offset 1655; CHECK-NEXT: popq %rcx56; CHECK-NEXT: .cfi_def_cfa_offset 857; CHECK-NEXT: retq58entry:59 br label %while.body60 61while.body: ; preds = %while.body, %entry62 %call5 = tail call i32 null(ptr %src2, ptr %src1, ptr %dst, i32 0, i32 %len)63 br i1 %cmp, label %while.body, label %while.end64 65while.end: ; preds = %while.body66 ret i32 %sub67}68 69attributes #0 = { "probe-stack"="inline-asm"}70