1*99e8e173SMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*99e8e173SMatt Arsenault; RUN: llc -global-isel -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
3*99e8e173SMatt Arsenault
4*99e8e173SMatt Arsenaultdeclare i8* @foo()
5*99e8e173SMatt Arsenault
6*99e8e173SMatt Arsenaultdefine void @call_assert_align() {
7*99e8e173SMatt Arsenault; CHECK-LABEL: call_assert_align:
8*99e8e173SMatt Arsenault; CHECK:       // %bb.0:
9*99e8e173SMatt Arsenault; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
10*99e8e173SMatt Arsenault; CHECK-NEXT:    .cfi_def_cfa_offset 16
11*99e8e173SMatt Arsenault; CHECK-NEXT:    .cfi_offset w30, -16
12*99e8e173SMatt Arsenault; CHECK-NEXT:    bl foo
13*99e8e173SMatt Arsenault; CHECK-NEXT:    strb wzr, [x0]
14*99e8e173SMatt Arsenault; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
15*99e8e173SMatt Arsenault; CHECK-NEXT:    ret
16*99e8e173SMatt Arsenault  %ptr = call align 8 i8* @foo()
17*99e8e173SMatt Arsenault  store i8 0, i8* %ptr
18*99e8e173SMatt Arsenault  ret void
19*99e8e173SMatt Arsenault}
20*99e8e173SMatt Arsenault
21*99e8e173SMatt Arsenaultdefine i8* @tailcall_assert_align() {
22*99e8e173SMatt Arsenault; CHECK-LABEL: tailcall_assert_align:
23*99e8e173SMatt Arsenault; CHECK:       // %bb.0: // %entry
24*99e8e173SMatt Arsenault; CHECK-NEXT:    b foo
25*99e8e173SMatt Arsenaultentry:
26*99e8e173SMatt Arsenault  %call = tail call align 4 i8* @foo()
27*99e8e173SMatt Arsenault  ret i8* %call
28*99e8e173SMatt Arsenault}
29