@@ -80,3 +80,151 @@ body: |
80
80
%4:vreg_128 = REG_SEQUENCE %3.sub0, %subreg.sub0, %3.sub1, %subreg.sub1, %3.sub2, %subreg.sub2, %3.sub3, %subreg.sub3
81
81
KILL implicit %4
82
82
...
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