xref: /llvm-project/llvm/test/CodeGen/Thumb2/thumb2-execute-only-prologue.ll (revision b5b663aac17415625340eb29c8010832bfc4c21c)
1; RUN: llc < %s -mtriple=thumbv8m.base-arm-none-eabi | FileCheck %s
2
3define void @fn() {
4entry:
5; CHECK-LABEL: fn:
6; CHECK:       @ %bb.0: @ %entry
7; CHECK-NEXT:    .save {r4, r5, r6, lr}
8; CHECK-NEXT:    push {r4, r5, r6, lr}
9; CHECK-NEXT:    ldr r6, .LCPI0_0
10; CHECK-NEXT:    .pad #1600
11; CHECK-NEXT:    add sp, r6
12; CHECK: .LCPI0_0:
13; CHECK-NEXT:    .long 4294965696
14  %a = alloca [400 x i32], align 4
15  call void @bar(ptr %a)
16  ret void
17}
18
19define void @execute_only_fn() #0 {
20entry:
21; CHECK-LABEL: execute_only_fn:
22; CHECK:       @ %bb.0: @ %entry
23; CHECK-NEXT:    .save {r4, r5, r6, lr}
24; CHECK-NEXT:    push {r4, r5, r6, lr}
25; CHECK-NEXT:    movw    r6, #63936
26; CHECK-NEXT:    movt    r6, #65535
27; CHECK-NEXT:    .pad #1600
28; CHECK-NEXT:    add sp, r6
29  %a = alloca [400 x i32], align 4
30  call void @bar(ptr %a)
31  ret void
32}
33
34declare dso_local void @bar(ptr)
35
36attributes #0 = { noinline optnone "target-features"="+armv8-m.base,+execute-only,+thumb-mode" }
37