[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Thumb / thumb-execute-only-long-calls.ll
blob6a29227a141e73fc6f93e2ad6d55edb6df446a11
1 ; RUN: llc < %s -mtriple=thumbv6m-none-eabi -relocation-model=static | FileCheck %s -check-prefixes=CHECK
3 define void @fn() #0 {
4 entry:
5 ; CHECK-LABEL: fn:
6 ; CHECK:       ldr [[REG:r[0-9]+]], [[LABEL:[^\s]+]]
7 ; CHECK-NEXT:  blx [[REG]]
8 ; CHECK:       [[LABEL]]:
9 ; CHECK-NEXT:  .long   bar
10   call void @bar()
11   ret void
14 define void @execute_only_fn() #1 {
15 ; CHECK-LABEL: execute_only_fn:
16 ; CHECK:       movs    [[REG0:r[0-9]+]], :upper8_15:bar
17 ; CHECK-NEXT:  lsls    [[REG0]], [[REG0]], #8
18 ; CHECK-NEXT:  adds    [[REG0]], :upper0_7:bar
19 ; CHECK-NEXT:  lsls    [[REG0]], [[REG0]], #8
20 ; CHECK-NEXT:  adds    [[REG0]], :lower8_15:bar
21 ; CHECK-NEXT:  lsls    [[REG0]], [[REG0]], #8
22 ; CHECK-NEXT:  adds    [[REG0]], :lower0_7:bar
23 ; CHECK-NEXT:  blx     [[REG0]]
24 ; CHECK-NOT:   ldr
26 entry:
27   call void @bar()
28   ret void
31 attributes #0 = { noinline optnone "target-features"="+thumb-mode,+long-calls" }
32 attributes #1 = { noinline optnone "target-features"="+execute-only,+thumb-mode,+long-calls" }
34 declare dso_local void @bar()