Commit | Line | Data |
---|---|---|
58ed6ca6 NC |
1 | .syntax unified |
2 | .arch armv7 | |
3 | .thumb | |
4 | main: | |
5 | ||
6 | @These branches are to see the labels in the generated file | |
7 | bl .L888 | |
8 | bl .L111 | |
9 | bl .L777 | |
10 | ||
11 | @No IT block here: | |
12 | bne .L4 | |
13 | ||
14 | @The following groups should be an IT block each. | |
15 | @it ne | |
16 | addne.n pc, r0 | |
17 | ||
18 | @it ne | |
19 | tbbne [r0, r1] | |
20 | ||
21 | @it eq | |
22 | tbheq [r1, r0] | |
23 | ||
24 | @The following group should be left as is: | |
25 | itet eq | |
26 | .L111: moveq r0, #2 | |
27 | movne r0, #3 | |
28 | moveq r0, #4 | |
29 | ||
30 | @Same, reverted condition: | |
31 | itet ne | |
32 | movne r0, #2 | |
33 | moveq r0, #3 | |
34 | movne r0, #4 | |
35 | ||
36 | ||
37 | @Two groups shall be generated, due to the label: | |
38 | movne r0, #1 | |
39 | @ second group, the label should be at the IT insn | |
40 | .L777: moveq r0, #2 | |
41 | ldrne pc, [r1] | |
42 | ||
43 | @it ne | |
44 | blne .L4 | |
45 | ||
46 | @it lt | |
47 | bllt .L9 | |
48 | ||
49 | @itett ne | |
50 | .L888: movne r0, #45 | |
51 | moveq r0, #5 | |
52 | movne r0, #6 | |
53 | addne.n pc, r0 | |
54 | ||
55 | @iteet eq | |
56 | moveq r0, #7 | |
57 | movne r0, #8 | |
58 | movne r0, #3 | |
59 | moveq r0, #4 | |
60 | ||
61 | @itete eq | |
62 | moveq r0, #5 | |
63 | movne r0, #6 | |
64 | moveq r0, #7 | |
65 | movne r0, #8 | |
66 | ||
67 | @ite eq - this group finishes due to the mov.n pc, rn | |
68 | moveq r0, #5 | |
69 | movne r0, #6 | |
70 | mov.n pc, r0 | |
71 | ||
72 | @itete eq | |
73 | moveq r0, #7 | |
74 | movne r0, #8 | |
75 | moveq r0, #5 | |
76 | movne r0, #6 | |
77 | ||
78 | @this shall not generate an IT block | |
79 | add.n pc, r0 | |
80 | ||
81 | @ite eq - testing condition change (eq -> gt) | |
82 | moveq r0, #7 | |
83 | movne r0, #8 | |
84 | ||
85 | @ite gt (group shall finish due to another condition change) | |
86 | movgt r0, #9 | |
87 | movle r0, #10 | |
88 | ||
89 | @it eq | |
90 | moveq r0, #11 | |
91 | ||
92 | @it le | |
93 | movle r0, #12 | |
94 | ||
95 | @it ne | |
96 | movne r0, #13 | |
97 | ||
98 | bl f | |
99 | .L4: | |
100 | pop {r4, pc} | |
101 | .L9: | |
102 | bl f | |
103 | ||
104 | @Only the movlt shall be enclosed in the IT block | |
105 | movlt r0, #0 | |
106 | muls r0, r0, r1 | |
107 | ||
108 | @Same here: | |
109 | movlt r0, #0 | |
110 | muls r0, r0, r1 |