@@ -80,3 +80,151 @@ body: |
8080 %4:vreg_128 = REG_SEQUENCE %3.sub0, %subreg.sub0, %3.sub1, %subreg.sub1, %3.sub2, %subreg.sub2, %3.sub3, %subreg.sub3
8181 KILL implicit %4
8282 ...
83+
84+ ---
85+ name : copy_vreg_64_subreg_from_vgpr_reg_sequence
86+ body : |
87+ bb.0:
88+ liveins: $vgpr0, $vgpr1
89+ ; GCN-LABEL: name: copy_vreg_64_subreg_from_vgpr_reg_sequence
90+ ; GCN: liveins: $vgpr0, $vgpr1
91+ ; GCN-NEXT: {{ $}}
92+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
93+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
94+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
95+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]]
96+ ; GCN-NEXT: $vgpr0 = COPY [[COPY2]]
97+ %0:vgpr_32 = COPY $vgpr0
98+ %1:vgpr_32 = COPY $vgpr1
99+ %2:vreg_64 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1
100+ %3:vgpr_32 = COPY %2.sub0
101+ $vgpr0 = COPY %3
102+ ...
103+
104+ ---
105+ name : copy_vreg_64_subreg_from_vgpr_reg_sequence_extra_copy
106+ body : |
107+ bb.0:
108+ liveins: $vgpr0, $vgpr1
109+ ; GCN-LABEL: name: copy_vreg_64_subreg_from_vgpr_reg_sequence_extra_copy
110+ ; GCN: liveins: $vgpr0, $vgpr1
111+ ; GCN-NEXT: {{ $}}
112+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
113+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
114+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
115+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
116+ ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY2]].sub0
117+ ; GCN-NEXT: $vgpr0 = COPY [[COPY3]]
118+ %0:vgpr_32 = COPY $vgpr0
119+ %1:vgpr_32 = COPY $vgpr1
120+ %2:vreg_64 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1
121+ %3:vreg_64 = COPY %2
122+ %4:vgpr_32 = COPY %3.sub0
123+ $vgpr0 = COPY %4
124+ ...
125+
126+ ---
127+ name : copy_av_64_subreg_from_vgpr_reg_sequence
128+ body : |
129+ bb.0:
130+ liveins: $vgpr0, $vgpr1
131+ ; GCN-LABEL: name: copy_av_64_subreg_from_vgpr_reg_sequence
132+ ; GCN: liveins: $vgpr0, $vgpr1
133+ ; GCN-NEXT: {{ $}}
134+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
135+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
136+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
137+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:av_64_align2 = COPY [[REG_SEQUENCE]]
138+ ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY2]].sub0
139+ ; GCN-NEXT: $vgpr0 = COPY [[COPY3]]
140+ %0:vgpr_32 = COPY $vgpr0
141+ %1:vgpr_32 = COPY $vgpr1
142+ %2:vreg_64_align2 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1
143+ %3:av_64_align2 = COPY %2
144+ %4:vgpr_32 = COPY %3.sub0
145+ $vgpr0 = COPY %4
146+ ...
147+
148+ ---
149+ name : copy_vreg_64_subreg_from_vgpr_reg_sequence_with_sub0_compose
150+ body : |
151+ bb.0:
152+ liveins: $vgpr0_vgpr1
153+ ; GCN-LABEL: name: copy_vreg_64_subreg_from_vgpr_reg_sequence_with_sub0_compose
154+ ; GCN: liveins: $vgpr0_vgpr1
155+ ; GCN-NEXT: {{ $}}
156+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
157+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
158+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]].sub0, %subreg.sub0, [[COPY1]], %subreg.sub1
159+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
160+ ; GCN-NEXT: $vgpr0 = COPY [[COPY2]]
161+ %0:vreg_64 = COPY $vgpr0_vgpr1
162+ %1:vgpr_32 = COPY $vgpr1
163+ %2:vreg_64 = REG_SEQUENCE %0.sub0, %subreg.sub0, %1, %subreg.sub1
164+ %3:vgpr_32 = COPY %2.sub0
165+ $vgpr0 = COPY %3
166+ ...
167+
168+ ---
169+ name : copy_vreg_64_subreg_from_vgpr_reg_sequence_with_sub1_compose
170+ body : |
171+ bb.0:
172+ liveins: $vgpr0_vgpr1
173+ ; GCN-LABEL: name: copy_vreg_64_subreg_from_vgpr_reg_sequence_with_sub1_compose
174+ ; GCN: liveins: $vgpr0_vgpr1
175+ ; GCN-NEXT: {{ $}}
176+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
177+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
178+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]].sub1, %subreg.sub0, [[COPY1]], %subreg.sub1
179+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
180+ ; GCN-NEXT: $vgpr0 = COPY [[COPY2]]
181+ %0:vreg_64 = COPY $vgpr0_vgpr1
182+ %1:vgpr_32 = COPY $vgpr1
183+ %2:vreg_64 = REG_SEQUENCE %0.sub1, %subreg.sub0, %1, %subreg.sub1
184+ %3:vgpr_32 = COPY %2.sub0
185+ $vgpr0 = COPY %3
186+ ...
187+
188+ ---
189+ name : copy_vreg_64_subreg_from_multiple_vgpr_reg_sequence
190+ body : |
191+ bb.0:
192+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
193+ ; GCN-LABEL: name: copy_vreg_64_subreg_from_multiple_vgpr_reg_sequence
194+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
195+ ; GCN-NEXT: {{ $}}
196+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
197+ ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
198+ ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
199+ ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
200+ ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
201+ ; GCN-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY3]], %subreg.sub1
202+ ; GCN-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[REG_SEQUENCE]], %subreg.sub0_sub1, [[REG_SEQUENCE1]], %subreg.sub2_sub3
203+ ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
204+ ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE2]].sub1_sub2
205+ ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]]
206+ ; GCN-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE1]].sub0
207+ ; GCN-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
208+ ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[COPY4]]
209+ ; GCN-NEXT: $vgpr2_vgpr3 = COPY [[COPY5]]
210+ ; GCN-NEXT: $vgpr4_vgpr5 = COPY [[COPY6]]
211+ ; GCN-NEXT: $vgpr6 = COPY [[COPY7]]
212+ ; GCN-NEXT: $vgpr6 = COPY [[COPY8]]
213+ %0:vgpr_32 = COPY $vgpr0
214+ %1:vgpr_32 = COPY $vgpr1
215+ %2:vgpr_32 = COPY $vgpr2
216+ %3:vgpr_32 = COPY $vgpr3
217+ %4:vreg_64 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1
218+ %5:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %3, %subreg.sub1
219+ %6:vreg_128 = REG_SEQUENCE %4, %subreg.sub0_sub1, %5, %subreg.sub2_sub3
220+ %7:vreg_64 = COPY %6.sub0_sub1
221+ %8:vreg_64 = COPY %6.sub1_sub2
222+ %9:vreg_64 = COPY %6.sub2_sub3
223+ %10:vgpr_32 = COPY %6.sub2
224+ %11:vgpr_32 = COPY %6.sub0
225+ $vgpr0_vgpr1 = COPY %7
226+ $vgpr2_vgpr3 = COPY %8
227+ $vgpr4_vgpr5 = COPY %9
228+ $vgpr6 = COPY %10
229+ $vgpr6 = COPY %11
230+ ...
0 commit comments