xref: /llvm-project/llvm/test/CodeGen/ARM/cbz-implicit-it-range.ll (revision 6f36cd4d76c65796b695df1a34c501ac3aa05229)
1*6f36cd4dSPeter Smith;RUN: llc -O2 -mtriple=thumbv7a-linux-gnueabihf -arm-implicit-it=always %s -o - | FileCheck %s
2*6f36cd4dSPeter Smith;RUN: llc -O2 -mtriple=thumbv7a-linux-gnueabihf -no-integrated-as %s -o - | FileCheck %s
3*6f36cd4dSPeter Smith
4*6f36cd4dSPeter Smith; Check that we do not produce a CBZ instruction to jump over the inline
5*6f36cd4dSPeter Smith; assembly as the distance is too far if the implicit IT instructions are
6*6f36cd4dSPeter Smith; added.
7*6f36cd4dSPeter Smith
8*6f36cd4dSPeter Smithdefine void @f0(i32 %p1, i32 %p2, i32 %p3) nounwind {
9*6f36cd4dSPeter Smithentry:
10*6f36cd4dSPeter Smith  %cmp = icmp eq i32 %p1, 0
11*6f36cd4dSPeter Smith  br i1 %cmp, label %if.else, label %if.then
12*6f36cd4dSPeter Smith
13*6f36cd4dSPeter Smithif.then:
14*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
15*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
16*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
17*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
18*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
19*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
20*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
21*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
22*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
23*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
24*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
25*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
26*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
27*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
28*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
29*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
30*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
31*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
32*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
33*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
34*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
35*6f36cd4dSPeter Smith  tail call void asm sideeffect "movseq r0, #0\0A", ""()
36*6f36cd4dSPeter Smith  br label %if.end
37*6f36cd4dSPeter Smith
38*6f36cd4dSPeter Smithif.else:
39*6f36cd4dSPeter Smith  tail call void asm sideeffect "nop\0A", ""()
40*6f36cd4dSPeter Smith  br label %if.end
41*6f36cd4dSPeter Smith
42*6f36cd4dSPeter Smithif.end:
43*6f36cd4dSPeter Smith  ret void
44*6f36cd4dSPeter Smith}
45*6f36cd4dSPeter Smith; CHECK-LABEL: f0:
46*6f36cd4dSPeter Smith; CHECK: beq .LBB0_{{[0-9]+}}
47*6f36cd4dSPeter Smith
48