50 lines · plain
1; RUN: llc -verify-machineinstrs < %s | FileCheck %s2 3; The purpose of this test is to construct a scenario where an odd number4; of callee-saved GPRs as well as an odd number of callee-saved FPRs are5; used. This caused the frame pointer to be aligned to a multiple of 86; on non-Darwin platforms, rather than a multiple of 16 as usual.7 8target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"9target triple = "aarch64-unknown-linux-gnu"10 11@a = global i64 0, align 412 13 14define i64 @b() uwtable {15entry:16 %call = tail call i64 @d()17 %0 = alloca i8, i64 ptrtoint (ptr @d to i64), align 1618 %1 = ptrtoint ptr %0 to i6419 store i64 %1, ptr @a, align 420 %call1 = call i64 @e()21 %conv = sitofp i64 %call1 to float22 %2 = load i64, ptr @a, align 423 %call2 = call i64 @f(i64 %2)24 %conv3 = fptosi float %conv to i6425 ret i64 %conv326}27 28; CHECK-LABEL: b:29; CHECK: str d8, [sp, #-32]!30; CHECK-NEXT: .cfi_def_cfa_offset 3231; CHECK-NEXT: stp x29, x30, [sp, #8]32; CHECK-NEXT: str x19, [sp, #24]33; CHECK-NEXT: add x29, sp, #834 35; CHECK: sub sp, x29, #836; CHECK-NEXT: .cfi_def_cfa wsp, 3237; CHECK-NEXT: ldp x29, x30, [sp, #8]38; CHECK-NEXT: ldr x19, [sp, #24]39; CHECK-NEXT: ldr d8, [sp], #3240; CHECK-NEXT: .cfi_def_cfa_offset 041; CHECK-NEXT: .cfi_restore w1942; CHECK-NEXT: .cfi_restore w3043; CHECK-NEXT: .cfi_restore w2944; CHECK-NEXT: .cfi_restore b845; CHECK-NEXT: ret46 47declare i64 @d()48declare i64 @e()49declare i64 @f(i64)50