annotate test/CodeGen/AMDGPU/detect-dead-lanes.mir @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 # RUN: llc -march=amdgcn -run-pass detect-dead-lanes -o - %s | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 # Combined use/def transfer check, the basics.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 # CHECK-LABEL: name: test0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 # CHECK: S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 # CHECK: S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 # CHECK: S_NOP 0, implicit-def dead %2
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
9 # CHECK: %3:sreg_128 = REG_SEQUENCE %0, {{[0-9]+}}, %1, {{[0-9]+}}, undef %2, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 # CHECK: S_NOP 0, implicit %3.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 # CHECK: S_NOP 0, implicit %3.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 # CHECK: S_NOP 0, implicit undef %3.sub2
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
13 # CHECK: %4:sreg_64 = COPY %3.sub0_sub1
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
14 # CHECK: %5:sreg_64 = COPY undef %3.sub2_sub3
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 # CHECK: S_NOP 0, implicit %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 # CHECK: S_NOP 0, implicit %4.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 # CHECK: S_NOP 0, implicit undef %5.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 name: test0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 - { id: 1, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 - { id: 2, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 - { id: 3, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 - { id: 4, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 - { id: 5, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 S_NOP 0, implicit-def %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 %3 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 S_NOP 0, implicit %3.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 S_NOP 0, implicit %3.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 S_NOP 0, implicit %3.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 %4 = COPY %3.sub0_sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 %5 = COPY %3.sub2_sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 S_NOP 0, implicit %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 S_NOP 0, implicit %4.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 S_NOP 0, implicit %5.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 # Check defined lanes transfer; Includes checking for some special cases like
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 # undef operands or IMPLICIT_DEF definitions.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 # CHECK-LABEL: name: test1
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
45 # CHECK: %0:sreg_128 = REG_SEQUENCE %sgpr0, {{[0-9]+}}, %sgpr0, {{[0-9]+}}
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
46 # CHECK: %1:sreg_128 = INSERT_SUBREG %0, %sgpr1, {{[0-9]+}}
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
47 # CHECK: %2:sreg_64 = INSERT_SUBREG %0.sub2_sub3, %sgpr42, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 # CHECK: S_NOP 0, implicit %1.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 # CHECK: S_NOP 0, implicit undef %1.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 # CHECK: S_NOP 0, implicit %1.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 # CHECK: S_NOP 0, implicit %1.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 # CHECK: S_NOP 0, implicit %2.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 # CHECK: S_NOP 0, implicit undef %2.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
55 # CHECK: %3:sreg_32_xm0 = IMPLICIT_DEF
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
56 # CHECK: %4:sreg_128 = INSERT_SUBREG %0, undef %3, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 # CHECK: S_NOP 0, implicit undef %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 # CHECK: S_NOP 0, implicit undef %4.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 # CHECK: S_NOP 0, implicit %4.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 # CHECK: S_NOP 0, implicit undef %4.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
62 # CHECK: %5:sreg_64 = EXTRACT_SUBREG %0, {{[0-9]+}}
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
63 # CHECK: %6:sreg_32_xm0 = EXTRACT_SUBREG %5, {{[0-9]+}}
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
64 # CHECK: %7:sreg_32_xm0 = EXTRACT_SUBREG %5, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 # CHECK: S_NOP 0, implicit %5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 # CHECK: S_NOP 0, implicit %6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 # CHECK: S_NOP 0, implicit undef %7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
69 # CHECK: %8:sreg_64 = IMPLICIT_DEF
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
70 # CHECK: %9:sreg_32_xm0 = EXTRACT_SUBREG undef %8, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 # CHECK: S_NOP 0, implicit undef %9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
73 # CHECK: %10:sreg_128 = EXTRACT_SUBREG undef %0, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74 # CHECK: S_NOP 0, implicit undef %10
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 name: test1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 - { id: 0, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78 - { id: 1, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 - { id: 2, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 - { id: 3, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 - { id: 4, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 - { id: 5, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 - { id: 6, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 - { id: 7, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 - { id: 8, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 - { id: 9, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 - { id: 10, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90 %0 = REG_SEQUENCE %sgpr0, %subreg.sub0, %sgpr0, %subreg.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 %1 = INSERT_SUBREG %0, %sgpr1, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92 %2 = INSERT_SUBREG %0.sub2_sub3, %sgpr42, %subreg.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 S_NOP 0, implicit %1.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94 S_NOP 0, implicit %1.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 S_NOP 0, implicit %1.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
96 S_NOP 0, implicit %1.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
97 S_NOP 0, implicit %2.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
98 S_NOP 0, implicit %2.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
99
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
100 %3 = IMPLICIT_DEF
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
101 %4 = INSERT_SUBREG %0, %3, %subreg.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
102 S_NOP 0, implicit %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
103 S_NOP 0, implicit %4.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
104 S_NOP 0, implicit %4.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
105 S_NOP 0, implicit %4.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
106
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
107 %5 = EXTRACT_SUBREG %0, %subreg.sub0_sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
108 %6 = EXTRACT_SUBREG %5, %subreg.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
109 %7 = EXTRACT_SUBREG %5, %subreg.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
110 S_NOP 0, implicit %5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
111 S_NOP 0, implicit %6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
112 S_NOP 0, implicit %7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
113
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
114 %8 = IMPLICIT_DEF
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
115 %9 = EXTRACT_SUBREG %8, %subreg.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
116 S_NOP 0, implicit %9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
117
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
118 %10 = EXTRACT_SUBREG undef %0, %subreg.sub2_sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
119 S_NOP 0, implicit %10
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
120 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
121 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
122 # Check used lanes transfer; Includes checking for some special cases like
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
123 # undef operands.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
124 # CHECK-LABEL: name: test2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
125 # CHECK: S_NOP 0, implicit-def dead %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
126 # CHECK: S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
127 # CHECK: S_NOP 0, implicit-def %2
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
128 # CHECK: %3:sreg_128 = REG_SEQUENCE undef %0, {{[0-9]+}}, %1, {{[0-9]+}}, %2, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
129 # CHECK: S_NOP 0, implicit %3.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
130 # CHECK: S_NOP 0, implicit %3.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
131
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
132 # CHECK: S_NOP 0, implicit-def %4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
133 # CHECK: S_NOP 0, implicit-def dead %5
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
134 # CHECK: %6:sreg_64 = REG_SEQUENCE %4, {{[0-9]+}}, undef %5, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
135 # CHECK: S_NOP 0, implicit %6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
136
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
137 # CHECK: S_NOP 0, implicit-def dead %7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
138 # CHECK: S_NOP 0, implicit-def %8
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
139 # CHECK: %9:sreg_128 = INSERT_SUBREG undef %7, %8, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
140 # CHECK: S_NOP 0, implicit %9.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
141
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
142 # CHECK: S_NOP 0, implicit-def %10
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
143 # CHECK: S_NOP 0, implicit-def dead %11
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
144 # CHECK: %12:sreg_128 = INSERT_SUBREG %10, undef %11, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
145 # CHECK: S_NOP 0, implicit %12.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
146
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
147 # CHECK: S_NOP 0, implicit-def %13
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
148 # CHECK: S_NOP 0, implicit-def dead %14
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
149 # CHECK: %15:sreg_128 = REG_SEQUENCE %13, {{[0-9]+}}, undef %14, {{[0-9]+}}
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
150 # CHECK: %16:sreg_64 = EXTRACT_SUBREG %15, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
151 # CHECK: S_NOP 0, implicit %16.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
152
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
153 name: test2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
154 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
155 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
156 - { id: 1, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
157 - { id: 2, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
158 - { id: 3, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
159 - { id: 4, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
160 - { id: 5, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
161 - { id: 6, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
162 - { id: 7, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
163 - { id: 8, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
164 - { id: 9, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
165 - { id: 10, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
166 - { id: 11, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
167 - { id: 12, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
168 - { id: 13, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
169 - { id: 14, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
170 - { id: 15, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
171 - { id: 16, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
172 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
173 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
174 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
175 S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
176 S_NOP 0, implicit-def %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
177 %3 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2_sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
178 S_NOP 0, implicit %3.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
179 S_NOP 0, implicit %3.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
180
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
181 S_NOP 0, implicit-def %4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
182 S_NOP 0, implicit-def %5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
183 %6 = REG_SEQUENCE %4, %subreg.sub0, undef %5, %subreg.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
184 S_NOP 0, implicit %6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
185
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
186 S_NOP 0, implicit-def %7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
187 S_NOP 0, implicit-def %8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
188 %9 = INSERT_SUBREG %7, %8, %subreg.sub2_sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
189 S_NOP 0, implicit %9.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
190
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
191 S_NOP 0, implicit-def %10
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
192 S_NOP 0, implicit-def %11
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
193 %12 = INSERT_SUBREG %10, %11, %subreg.sub0_sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
194 S_NOP 0, implicit %12.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
195
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
196 S_NOP 0, implicit-def %13
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
197 S_NOP 0, implicit-def %14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
198 %15 = REG_SEQUENCE %13, %subreg.sub0_sub1, %14, %subreg.sub2_sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
199 %16 = EXTRACT_SUBREG %15, %subreg.sub0_sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
200 S_NOP 0, implicit %16.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
201 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
202 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
203 # Check that copies to physregs use all lanes, copies from physregs define all
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
204 # lanes. So we should not get a dead/undef flag here.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
205 # CHECK-LABEL: name: test3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
206 # CHECK: S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
207 # CHECK: %vcc = COPY %0
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
208 # CHECK: %1:sreg_64 = COPY %vcc
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
209 # CHECK: S_NOP 0, implicit %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
210 name: test3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
211 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
212 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
213 - { id: 0, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
214 - { id: 1, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
215 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
216 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
217 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
218 %vcc = COPY %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
219
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
220 %1 = COPY %vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
221 S_NOP 0, implicit %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
222 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
223 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
224 # Check that implicit-def/kill do not count as def/uses.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
225 # CHECK-LABEL: name: test4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
226 # CHECK: S_NOP 0, implicit-def dead %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
227 # CHECK: KILL undef %0
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
228 # CHECK: %1:sreg_64 = IMPLICIT_DEF
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
229 # CHECK: S_NOP 0, implicit undef %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
230 name: test4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
231 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
232 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
233 - { id: 0, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
234 - { id: 1, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
235 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
236 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
237 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
238 KILL %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
239
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
240 %1 = IMPLICIT_DEF
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
241 S_NOP 0, implicit %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
242 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
243 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
244 # Check that unused inputs are marked as undef, even if the vreg itself is
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
245 # used.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
246 # CHECK-LABEL: name: test5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
247 # CHECK: S_NOP 0, implicit-def %0
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
248 # CHECK: %1:sreg_64 = REG_SEQUENCE undef %0, {{[0-9]+}}, %0, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
249 # CHECK: S_NOP 0, implicit %1.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
250 name: test5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
251 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
252 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
253 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
254 - { id: 1, class: sreg_64 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
255 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
256 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
257 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
258 %1 = REG_SEQUENCE %0, %subreg.sub0, %0, %subreg.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
259 S_NOP 0, implicit %1.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
260 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
261 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
262 # Check "optimistic" dataflow fixpoint in phi-loops.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
263 # CHECK-LABEL: name: loop0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
264 # CHECK: bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
265 # CHECK: S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
266 # CHECK: S_NOP 0, implicit-def dead %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
267 # CHECK: S_NOP 0, implicit-def dead %2
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
268 # CHECK: %3:sreg_128 = REG_SEQUENCE %0, {{[0-9]+}}, undef %1, {{[0-9]+}}, undef %2, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
269
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
270 # CHECK: bb.1:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
271 # CHECK: %4:sreg_128 = PHI %3, %bb.0, %5, %bb.1
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
272
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
273 # CHECK: bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
274 # CHECK: S_NOP 0, implicit %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
275 # CHECK: S_NOP 0, implicit undef %4.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
276 name: loop0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
277 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
278 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
279 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
280 - { id: 1, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
281 - { id: 2, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
282 - { id: 3, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
283 - { id: 4, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
284 - { id: 5, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
285 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
286 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
287 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
288 S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
289 S_NOP 0, implicit-def %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
290 %3 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
291 S_BRANCH %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
292
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
293 bb.1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
294 %4 = PHI %3, %bb.0, %5, %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
295
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
296 ; let's swiffle some lanes around for fun...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
297 %5 = REG_SEQUENCE %4.sub0, %subreg.sub0, %4.sub2, %subreg.sub1, %4.sub1, %subreg.sub2, %4.sub3, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
298
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
299 S_CBRANCH_VCCNZ %bb.1, implicit undef %vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
300 S_BRANCH %bb.2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
301
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
302 bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
303 S_NOP 0, implicit %4.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
304 S_NOP 0, implicit %4.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
305 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
306 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
307 # Check a loop that needs to be traversed multiple times to reach the fixpoint
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
308 # for the used lanes. The example reads sub3 lane at the end, however with each
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
309 # loop iteration we should get 1 more lane marked as we cycles the sublanes
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
310 # along. Sublanes sub0, sub1 and sub3 are rotate in the loop so only sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
311 # should be dead.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
312 # CHECK-LABEL: name: loop1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
313 # CHECK: bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
314 # CHECK: S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
315 # CHECK: S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
316 # CHECK: S_NOP 0, implicit-def dead %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
317 # CHECK: S_NOP 0, implicit-def %3
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
318 # CHECK: %4:sreg_128 = REG_SEQUENCE %0, {{[0-9]+}}, %1, {{[0-9]+}}, undef %2, {{[0-9]+}}, %3, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
319
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
320 # CHECK: bb.1:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
321 # CHECK: %5:sreg_128 = PHI %4, %bb.0, %6, %bb.1
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
322
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
323 # CHECK: %6:sreg_128 = REG_SEQUENCE %5.sub1, {{[0-9]+}}, %5.sub3, {{[0-9]+}}, undef %5.sub2, {{[0-9]+}}, %5.sub0, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
324
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
325 # CHECK: bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
326 # CHECK: S_NOP 0, implicit %6.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
327 name: loop1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
328 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
329 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
330 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
331 - { id: 1, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
332 - { id: 2, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
333 - { id: 3, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
334 - { id: 4, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
335 - { id: 5, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
336 - { id: 6, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
337 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
338 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
339 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
340 S_NOP 0, implicit-def %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
341 S_NOP 0, implicit-def dead %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
342 S_NOP 0, implicit-def %3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
343 %4 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
344 S_BRANCH %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
345
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
346 bb.1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
347 %5 = PHI %4, %bb.0, %6, %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
348
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
349 ; rotate lanes, but skip sub2 lane...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
350 %6 = REG_SEQUENCE %5.sub1, %subreg.sub0, %5.sub3, %subreg.sub1, %5.sub2, %subreg.sub2, %5.sub0, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
351
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
352 S_CBRANCH_VCCNZ %bb.1, implicit undef %vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
353 S_BRANCH %bb.2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
354
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
355 bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
356 S_NOP 0, implicit %6.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
357 ...
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
358 ---
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
359 # Similar to loop1 test, but check for fixpoint of defined lanes.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
360 # Lanes are rotate between sub0, sub2, sub3 so only sub1 should be dead/undef.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
361 # CHECK-LABEL: name: loop2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
362 # CHECK: bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
363 # CHECK: S_NOP 0, implicit-def %0
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
364 # CHECK: %1:sreg_128 = REG_SEQUENCE %0, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
365
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
366 # CHECK: bb.1:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
367 # CHECK: %2:sreg_128 = PHI %1, %bb.0, %3, %bb.1
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
368
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
369 # CHECK: %3:sreg_128 = REG_SEQUENCE %2.sub3, {{[0-9]+}}, undef %2.sub1, {{[0-9]+}}, %2.sub0, {{[0-9]+}}, %2.sub2, {{[0-9]+}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
370
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
371 # CHECK: bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
372 # CHECK: S_NOP 0, implicit %2.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
373 # CHECK: S_NOP 0, implicit undef %2.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
374 # CHECK: S_NOP 0, implicit %2.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
375 # CHECK: S_NOP 0, implicit %2.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
376 name: loop2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
377 tracksRegLiveness: true
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
378 registers:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
379 - { id: 0, class: sreg_32_xm0 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
380 - { id: 1, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
381 - { id: 2, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
382 - { id: 3, class: sreg_128 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
383 body: |
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
384 bb.0:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
385 S_NOP 0, implicit-def %0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
386 %1 = REG_SEQUENCE %0, %subreg.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
387 S_BRANCH %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
388
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
389 bb.1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
390 %2 = PHI %1, %bb.0, %3, %bb.1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
391
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
392 ; rotate subreg lanes, skipping sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
393 %3 = REG_SEQUENCE %2.sub3, %subreg.sub0, %2.sub1, %subreg.sub1, %2.sub0, %subreg.sub2, %2.sub2, %subreg.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
394
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
395 S_CBRANCH_VCCNZ %bb.1, implicit undef %vcc
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
396 S_BRANCH %bb.2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
397
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
398 bb.2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
399 S_NOP 0, implicit %2.sub0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
400 S_NOP 0, implicit undef %2.sub1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
401 S_NOP 0, implicit %2.sub2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
402 S_NOP 0, implicit %2.sub3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
403 ...