xref: /llvm-project/llvm/test/CodeGen/Hexagon/loop_align_count.mir (revision 2208c97c1bec2512d4e47b6223db6d95a7037956)
1# RUN: llc -mtriple=hexagon -O3 -run-pass hexagon-loop-align -o - %s\
2# RUN: -debug-only=hexagon-loop-align -verify-machineinstrs 2>&1 | FileCheck %s
3# REQUIRES: asserts
4
5# Test that we only count til endloop instruction and we align this
6# loop to 32.
7# CHECK: Loop Align Pass:
8# CHECK: Instruction Count : 16
9# CHECK: bb.5 (align 32)
10---
11name: fred
12tracksRegLiveness: true
13
14body:             |
15  bb.0:
16    successors: %bb.1(0x50000000), %bb.8(0x30000000)
17    liveins: $r0, $r1, $r2, $r3, $r4, $r5
18
19    renamable $p0 = C2_cmpgti renamable $r2, 0
20    J2_jumpf killed renamable $p0, %bb.8, implicit-def dead $pc
21    J2_jump %bb.1, implicit-def dead $pc
22
23  bb.1:
24    successors: %bb.2(0x80000000)
25    liveins: $r0, $r1, $r2, $r3, $r4, $r5
26
27    renamable $r7 = A2_addi killed renamable $r2, 1
28    renamable $r8 = S2_asr_i_r renamable $r1, 31
29    renamable $p0 = C2_cmpgti renamable $r1, 63
30    renamable $r2 = S2_asr_i_r renamable $r3, 2
31    renamable $r6 = S2_asr_i_r renamable $r3, 1
32    renamable $r9 = S2_lsr_i_r killed renamable $r7, 1
33    renamable $r1 = S2_lsr_i_r_acc killed renamable $r1, killed renamable $r8, 26
34    renamable $r7 = A2_tfrsi 0
35    renamable $r1 = S2_asr_i_r killed renamable $r1, 6
36    J2_loop1r %bb.2, killed renamable $r9, implicit-def $lc1, implicit-def $sa1
37    renamable $r8 = nsw A2_add renamable $r6, renamable $r2
38
39  bb.2:
40    successors: %bb.3(0x40000000), %bb.7(0x40000000)
41    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8
42
43    J2_jumpf renamable $p0, %bb.7, implicit-def dead $pc
44    J2_jump %bb.3, implicit-def dead $pc
45
46  bb.3:
47    successors: %bb.4(0x80000000)
48    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8
49
50    renamable $r13 = exact S2_asr_i_r renamable $r7, 1
51    renamable $r12 = COPY renamable $r4
52    renamable $r9 = COPY renamable $r4
53    renamable $r14 = nsw A2_addi renamable $r7, 1
54    renamable $r15 = nsw M2_mpyi killed renamable $r13, renamable $r3
55    renamable $r9 = M2_maci killed renamable $r9, killed renamable $r14, renamable $r5
56    renamable $r13 = A2_add renamable $r8, renamable $r15
57    renamable $r28 = A2_add renamable $r15, renamable $r2
58    renamable $r10 = A2_add renamable $r15, renamable $r6
59    renamable $r12 = M2_maci killed renamable $r12, renamable $r7, renamable $r5
60    renamable $r13 = S2_addasl_rrri renamable $r0, killed renamable $r13, 1
61    renamable $r14 = S2_addasl_rrri renamable $r0, killed renamable $r15, 1
62    renamable $r15 = S2_addasl_rrri renamable $r0, killed renamable $r28, 1
63    renamable $r28 = S2_addasl_rrri renamable $r0, killed renamable $r10, 1
64
65  bb.4:
66    successors: %bb.5(0x40000000), %bb.6(0x40000000)
67    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r12, $r13, $r14, $r15, $r28
68
69    renamable $v0, renamable $r14 = V6_vL32b_pi killed renamable $r14, 64
70    renamable $p1 = C2_cmpgtui renamable $r1, 1
71    renamable $r10 = A2_addi renamable $r1, -1
72    renamable $v2, renamable $r28 = V6_vL32b_pi killed renamable $r28, 64
73    renamable $v1 = V6_vaddh renamable $v0, renamable $v2
74    renamable $v3, renamable $r15 = V6_vL32b_pi killed renamable $r15, 64
75    renamable $v0 = V6_vsubh killed renamable $v0, killed renamable $v2
76    J2_loop0r %bb.5, killed renamable $r10, implicit-def $lc0, implicit-def $sa0, implicit-def $usr
77    renamable $v4, renamable $r13 = V6_vL32b_pi killed renamable $r13, 64
78    renamable $v2 = V6_vaddh renamable $v3, renamable $v4
79    J2_jumpf killed renamable $p1, %bb.6, implicit-def $pc
80    J2_jump %bb.5, implicit-def $pc
81
82  bb.5:
83    successors: %bb.5(0x7c000000), %bb.6(0x04000000)
84    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r12, $r13, $r14, $r15, $r28, $v0, $v1, $v2, $v3, $v4
85
86    renamable $v3 = V6_vsubh killed renamable $v3, killed renamable $v4
87    renamable $v4, renamable $r14 = V6_vL32b_pi killed renamable $r14, 64
88    renamable $v5 = V6_vnavgh renamable $v1, renamable $v2
89    renamable $v1 = V6_vavgh killed renamable $v1, killed renamable $v2
90    renamable $v2, renamable $r28 = V6_vL32b_pi killed renamable $r28, 64
91    renamable $v1 = V6_vsathub killed renamable $v5, killed renamable $v1
92    renamable $v5 = V6_vnavgh renamable $v0, renamable $v3
93    renamable $v6 = V6_vavgh killed renamable $v0, killed renamable $v3
94    renamable $r12 = V6_vS32b_pi killed renamable $r12, 64, killed renamable $v1
95    renamable $v1 = V6_vaddh renamable $v4, renamable $v2
96    renamable $v3, renamable $r15 = V6_vL32b_pi killed renamable $r15, 64
97    renamable $v0 = V6_vsubh killed renamable $v4, killed renamable $v2
98    renamable $v4, renamable $r13 = V6_vL32b_pi killed renamable $r13, 64
99    renamable $v2 = V6_vaddh renamable $v3, renamable $v4
100    renamable $v5 = V6_vsathub killed renamable $v5, killed renamable $v6
101    renamable $r9 = V6_vS32b_pi killed renamable $r9, 64, killed renamable $v5
102    ENDLOOP0 %bb.5, implicit-def $pc, implicit-def $lc0, implicit $sa0, implicit $lc0
103    J2_jump %bb.6, implicit-def $pc
104
105  bb.6:
106    successors: %bb.7(0x80000000)
107    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r12, $v0, $v1, $v2, $v3, $v4
108
109    renamable $v3 = V6_vsubh killed renamable $v3, killed renamable $v4
110    renamable $v4 = V6_vavgh renamable $v1, renamable $v2
111    renamable $v1 = V6_vnavgh killed renamable $v1, killed renamable $v2
112    renamable $v2 = V6_vavgh renamable $v0, renamable $v3
113    renamable $v0 = V6_vnavgh killed renamable $v0, killed renamable $v3
114    renamable $v1 = V6_vsathub killed renamable $v1, killed renamable $v4
115    dead renamable $r12 = V6_vS32b_pi killed renamable $r12, 64, killed renamable $v1
116    renamable $v0 = V6_vsathub killed renamable $v0, killed renamable $v2
117    dead renamable $r9 = V6_vS32b_pi killed renamable $r9, 64, killed renamable $v0
118    J2_jump %bb.7, implicit-def $pc
119
120  bb.7:
121    successors: %bb.2(0x7c000000), %bb.8(0x04000000)
122    liveins: $p0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8
123
124    renamable $r7 = nsw A2_addi killed renamable $r7, 2
125    ENDLOOP1 %bb.2, implicit-def $pc, implicit-def $lc1, implicit $sa1, implicit $lc1
126    J2_jump %bb.8, implicit-def dead $pc
127
128  bb.8:
129    PS_jmpret $r31, implicit-def dead $pc
130
131...
132