xref: /llvm-project/llvm/test/CodeGen/ARM/Windows/mov32t-bundling.ll (revision deab451e7a7f2dff42097049274637052c87eabd)
1; RUN: llc -mtriple thumbv7-windows-itanium -filetype asm -o - %s | FileCheck %s
2
3@_begin = external global i8
4@_end = external global i8
5
6declare arm_aapcs_vfpcc void @force_emission()
7
8define arm_aapcs_vfpcc void @bundle() {
9entry:
10  %cmp = icmp uge i32 sub (i32 ptrtoint (ptr @_end to i32), i32 ptrtoint (ptr @_begin to i32)), 4
11  br i1 %cmp, label %if.then, label %if.end
12
13if.then:
14  tail call arm_aapcs_vfpcc void @force_emission()
15  br label %if.end
16
17if.end:
18  ret void
19}
20
21; CHECK-LABEL: bundle
22; CHECK-NOT: subs r0, r1, r0
23; CHECK: movw r0, :lower16:_begin
24; CHECK-NEXT: movt r0, :upper16:_begin
25; CHECK-NEXT: movw r1, :lower16:_end
26; CHECK-NEXT: movt r1, :upper16:_end
27; CHECK-NEXT: subs r0, r1, r0
28; CHECK-NEXT: cmp r0, #4
29
30