1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -run-pass=legalizer %s -o - | FileCheck %s 3 4--- 5name: legal_v2s32 6body: | 7 bb.0: 8 liveins: $vgpr0, $vgpr1 9 ; CHECK-LABEL: name: legal_v2s32 10 ; CHECK: liveins: $vgpr0, $vgpr1 11 ; CHECK-NEXT: {{ $}} 12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 13 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 14 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 15 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>) 16 %0:_(s32) = COPY $vgpr0 17 %1:_(s32) = COPY $vgpr1 18 %2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1 19 S_NOP 0, implicit %2 20... 21--- 22name: legal_v3s32 23body: | 24 bb.0: 25 liveins: $vgpr0, $vgpr1, $vgpr2 26 ; CHECK-LABEL: name: legal_v3s32 27 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2 28 ; CHECK-NEXT: {{ $}} 29 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 30 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 31 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 32 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 33 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>) 34 %0:_(s32) = COPY $vgpr0 35 %1:_(s32) = COPY $vgpr1 36 %2:_(s32) = COPY $vgpr2 37 %3:_(<3 x s32>) = G_BUILD_VECTOR %0, %1, %2 38 S_NOP 0, implicit %3 39... 40--- 41name: legal_v4s32 42body: | 43 bb.0: 44 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 45 ; CHECK-LABEL: name: legal_v4s32 46 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 47 ; CHECK-NEXT: {{ $}} 48 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 49 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 50 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 51 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 52 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 53 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>) 54 %0:_(s32) = COPY $vgpr0 55 %1:_(s32) = COPY $vgpr1 56 %2:_(s32) = COPY $vgpr2 57 %3:_(s32) = COPY $vgpr3 58 %4:_(<4 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3 59 S_NOP 0, implicit %4 60... 61--- 62name: legal_v5s32 63body: | 64 bb.0: 65 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 66 ; CHECK-LABEL: name: legal_v5s32 67 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 68 ; CHECK-NEXT: {{ $}} 69 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 70 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 71 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 72 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 73 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 74 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32) 75 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<5 x s32>) 76 %0:_(s32) = COPY $vgpr0 77 %1:_(s32) = COPY $vgpr1 78 %2:_(s32) = COPY $vgpr2 79 %3:_(s32) = COPY $vgpr3 80 %4:_(s32) = COPY $vgpr4 81 %5:_(<5 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4 82 S_NOP 0, implicit %5 83... 84--- 85name: legal_v6s32 86body: | 87 bb.0: 88 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5 89 ; CHECK-LABEL: name: legal_v6s32 90 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5 91 ; CHECK-NEXT: {{ $}} 92 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 93 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 94 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 95 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 96 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 97 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 98 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32) 99 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<6 x s32>) 100 %0:_(s32) = COPY $vgpr0 101 %1:_(s32) = COPY $vgpr1 102 %2:_(s32) = COPY $vgpr2 103 %3:_(s32) = COPY $vgpr3 104 %4:_(s32) = COPY $vgpr4 105 %5:_(s32) = COPY $vgpr5 106 %6:_(<6 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5 107 S_NOP 0, implicit %6 108... 109--- 110name: legal_v7s32 111body: | 112 bb.0: 113 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 114 ; CHECK-LABEL: name: legal_v7s32 115 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 116 ; CHECK-NEXT: {{ $}} 117 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 118 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 119 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 120 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 121 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 122 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 123 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 124 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32) 125 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<7 x s32>) 126 %0:_(s32) = COPY $vgpr0 127 %1:_(s32) = COPY $vgpr1 128 %2:_(s32) = COPY $vgpr2 129 %3:_(s32) = COPY $vgpr3 130 %4:_(s32) = COPY $vgpr4 131 %5:_(s32) = COPY $vgpr5 132 %6:_(s32) = COPY $vgpr6 133 %7:_(<7 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6 134 S_NOP 0, implicit %7 135... 136--- 137name: legal_v8s32 138body: | 139 bb.0: 140 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7 141 ; CHECK-LABEL: name: legal_v8s32 142 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7 143 ; CHECK-NEXT: {{ $}} 144 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 145 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 146 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 147 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 148 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 149 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 150 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 151 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 152 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 153 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x s32>) 154 %0:_(s32) = COPY $vgpr0 155 %1:_(s32) = COPY $vgpr1 156 %2:_(s32) = COPY $vgpr2 157 %3:_(s32) = COPY $vgpr3 158 %4:_(s32) = COPY $vgpr4 159 %5:_(s32) = COPY $vgpr5 160 %6:_(s32) = COPY $vgpr6 161 %7:_(s32) = COPY $vgpr7 162 %8:_(<8 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7 163 S_NOP 0, implicit %8 164... 165--- 166name: legal_v9s32 167body: | 168 bb.0: 169 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8 170 ; CHECK-LABEL: name: legal_v9s32 171 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8 172 ; CHECK-NEXT: {{ $}} 173 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 174 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 175 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 176 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 177 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 178 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 179 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 180 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 181 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 182 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<9 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32) 183 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<9 x s32>) 184 %0:_(s32) = COPY $vgpr0 185 %1:_(s32) = COPY $vgpr1 186 %2:_(s32) = COPY $vgpr2 187 %3:_(s32) = COPY $vgpr3 188 %4:_(s32) = COPY $vgpr4 189 %5:_(s32) = COPY $vgpr5 190 %6:_(s32) = COPY $vgpr6 191 %7:_(s32) = COPY $vgpr7 192 %8:_(s32) = COPY $vgpr8 193 %9:_(<9 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8 194 S_NOP 0, implicit %9 195... 196--- 197name: legal_v10s32 198body: | 199 bb.0: 200 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9 201 ; CHECK-LABEL: name: legal_v10s32 202 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9 203 ; CHECK-NEXT: {{ $}} 204 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 205 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 206 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 207 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 208 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 209 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 210 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 211 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 212 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 213 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 214 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<10 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32) 215 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<10 x s32>) 216 %0:_(s32) = COPY $vgpr0 217 %1:_(s32) = COPY $vgpr1 218 %2:_(s32) = COPY $vgpr2 219 %3:_(s32) = COPY $vgpr3 220 %4:_(s32) = COPY $vgpr4 221 %5:_(s32) = COPY $vgpr5 222 %6:_(s32) = COPY $vgpr6 223 %7:_(s32) = COPY $vgpr7 224 %8:_(s32) = COPY $vgpr8 225 %9:_(s32) = COPY $vgpr9 226 %10:_(<10 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9 227 S_NOP 0, implicit %10 228... 229--- 230name: legal_v11s32 231body: | 232 bb.0: 233 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10 234 ; CHECK-LABEL: name: legal_v11s32 235 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10 236 ; CHECK-NEXT: {{ $}} 237 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 238 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 239 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 240 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 241 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 242 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 243 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 244 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 245 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 246 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 247 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 248 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<11 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32) 249 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<11 x s32>) 250 %0:_(s32) = COPY $vgpr0 251 %1:_(s32) = COPY $vgpr1 252 %2:_(s32) = COPY $vgpr2 253 %3:_(s32) = COPY $vgpr3 254 %4:_(s32) = COPY $vgpr4 255 %5:_(s32) = COPY $vgpr5 256 %6:_(s32) = COPY $vgpr6 257 %7:_(s32) = COPY $vgpr7 258 %8:_(s32) = COPY $vgpr8 259 %9:_(s32) = COPY $vgpr9 260 %10:_(s32) = COPY $vgpr10 261 %11:_(<11 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10 262 S_NOP 0, implicit %11 263... 264--- 265name: legal_v12s32 266body: | 267 bb.0: 268 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11 269 ; CHECK-LABEL: name: legal_v12s32 270 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11 271 ; CHECK-NEXT: {{ $}} 272 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 273 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 274 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 275 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 276 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 277 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 278 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 279 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 280 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 281 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 282 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 283 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 284 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<12 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32) 285 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<12 x s32>) 286 %0:_(s32) = COPY $vgpr0 287 %1:_(s32) = COPY $vgpr1 288 %2:_(s32) = COPY $vgpr2 289 %3:_(s32) = COPY $vgpr3 290 %4:_(s32) = COPY $vgpr4 291 %5:_(s32) = COPY $vgpr5 292 %6:_(s32) = COPY $vgpr6 293 %7:_(s32) = COPY $vgpr7 294 %8:_(s32) = COPY $vgpr8 295 %9:_(s32) = COPY $vgpr9 296 %10:_(s32) = COPY $vgpr10 297 %11:_(s32) = COPY $vgpr11 298 %12:_(<12 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11 299 S_NOP 0, implicit %12 300... 301--- 302name: legal_v16s32 303body: | 304 bb.0: 305 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15 306 ; CHECK-LABEL: name: legal_v16s32 307 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15 308 ; CHECK-NEXT: {{ $}} 309 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 310 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 311 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 312 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 313 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 314 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 315 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 316 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 317 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 318 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 319 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 320 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 321 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 322 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 323 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 324 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 325 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 326 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s32>) 327 %0:_(s32) = COPY $vgpr0 328 %1:_(s32) = COPY $vgpr1 329 %2:_(s32) = COPY $vgpr2 330 %3:_(s32) = COPY $vgpr3 331 %4:_(s32) = COPY $vgpr4 332 %5:_(s32) = COPY $vgpr5 333 %6:_(s32) = COPY $vgpr6 334 %7:_(s32) = COPY $vgpr7 335 %8:_(s32) = COPY $vgpr8 336 %9:_(s32) = COPY $vgpr9 337 %10:_(s32) = COPY $vgpr10 338 %11:_(s32) = COPY $vgpr11 339 %12:_(s32) = COPY $vgpr12 340 %13:_(s32) = COPY $vgpr13 341 %14:_(s32) = COPY $vgpr14 342 %15:_(s32) = COPY $vgpr15 343 %16:_(<16 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15 344 S_NOP 0, implicit %16 345... 346--- 347name: legal_v32s32 348body: | 349 bb.0: 350 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31 351 ; CHECK-LABEL: name: legal_v32s32 352 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31 353 ; CHECK-NEXT: {{ $}} 354 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 355 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 356 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 357 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 358 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 359 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 360 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 361 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 362 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 363 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 364 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 365 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 366 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 367 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 368 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 369 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 370 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 371 ; CHECK-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 372 ; CHECK-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 373 ; CHECK-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 374 ; CHECK-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 375 ; CHECK-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 376 ; CHECK-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 377 ; CHECK-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 378 ; CHECK-NEXT: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 379 ; CHECK-NEXT: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 380 ; CHECK-NEXT: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 381 ; CHECK-NEXT: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 382 ; CHECK-NEXT: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 383 ; CHECK-NEXT: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 384 ; CHECK-NEXT: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 385 ; CHECK-NEXT: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 386 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 387 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<32 x s32>) 388 %0:_(s32) = COPY $vgpr0 389 %1:_(s32) = COPY $vgpr1 390 %2:_(s32) = COPY $vgpr2 391 %3:_(s32) = COPY $vgpr3 392 %4:_(s32) = COPY $vgpr4 393 %5:_(s32) = COPY $vgpr5 394 %6:_(s32) = COPY $vgpr6 395 %7:_(s32) = COPY $vgpr7 396 %8:_(s32) = COPY $vgpr8 397 %9:_(s32) = COPY $vgpr9 398 %10:_(s32) = COPY $vgpr10 399 %11:_(s32) = COPY $vgpr11 400 %12:_(s32) = COPY $vgpr12 401 %13:_(s32) = COPY $vgpr13 402 %14:_(s32) = COPY $vgpr14 403 %15:_(s32) = COPY $vgpr15 404 %16:_(s32) = COPY $vgpr16 405 %17:_(s32) = COPY $vgpr17 406 %18:_(s32) = COPY $vgpr18 407 %19:_(s32) = COPY $vgpr19 408 %20:_(s32) = COPY $vgpr20 409 %21:_(s32) = COPY $vgpr21 410 %22:_(s32) = COPY $vgpr22 411 %23:_(s32) = COPY $vgpr23 412 %24:_(s32) = COPY $vgpr24 413 %25:_(s32) = COPY $vgpr25 414 %26:_(s32) = COPY $vgpr26 415 %27:_(s32) = COPY $vgpr27 416 %28:_(s32) = COPY $vgpr28 417 %29:_(s32) = COPY $vgpr29 418 %30:_(s32) = COPY $vgpr30 419 %31:_(s32) = COPY $vgpr31 420 %32:_(<32 x s32>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30, %31 421 S_NOP 0, implicit %32 422... 423--- 424name: legal_v2s64 425body: | 426 bb.0: 427 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 428 ; CHECK-LABEL: name: legal_v2s64 429 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 430 ; CHECK-NEXT: {{ $}} 431 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 432 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 433 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64) 434 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s64>) 435 %0:_(s64) = COPY $vgpr0_vgpr1 436 %1:_(s64) = COPY $vgpr2_vgpr3 437 %2:_(<2 x s64>) = G_BUILD_VECTOR %0, %1 438 S_NOP 0, implicit %2 439... 440--- 441name: legal_v3s64 442body: | 443 bb.0: 444 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 445 ; CHECK-LABEL: name: legal_v3s64 446 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 447 ; CHECK-NEXT: {{ $}} 448 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 449 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 450 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 451 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64) 452 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>) 453 %0:_(s64) = COPY $vgpr0_vgpr1 454 %1:_(s64) = COPY $vgpr2_vgpr3 455 %2:_(s64) = COPY $vgpr4_vgpr5 456 %3:_(<3 x s64>) = G_BUILD_VECTOR %0, %1, %2 457 S_NOP 0, implicit %3 458... 459--- 460name: legal_v4s64 461body: | 462 bb.0: 463 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7 464 ; CHECK-LABEL: name: legal_v4s64 465 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7 466 ; CHECK-NEXT: {{ $}} 467 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 468 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 469 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 470 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 471 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64) 472 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s64>) 473 %0:_(s64) = COPY $vgpr0_vgpr1 474 %1:_(s64) = COPY $vgpr2_vgpr3 475 %2:_(s64) = COPY $vgpr4_vgpr5 476 %3:_(s64) = COPY $vgpr6_vgpr7 477 %4:_(<4 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3 478 S_NOP 0, implicit %4 479... 480--- 481name: legal_v5s64 482body: | 483 bb.0: 484 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9 485 ; CHECK-LABEL: name: legal_v5s64 486 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9 487 ; CHECK-NEXT: {{ $}} 488 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 489 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 490 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 491 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 492 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9 493 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64) 494 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<5 x s64>) 495 %0:_(s64) = COPY $vgpr0_vgpr1 496 %1:_(s64) = COPY $vgpr2_vgpr3 497 %2:_(s64) = COPY $vgpr4_vgpr5 498 %3:_(s64) = COPY $vgpr6_vgpr7 499 %4:_(s64) = COPY $vgpr8_vgpr9 500 %5:_(<5 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4 501 S_NOP 0, implicit %5 502... 503--- 504name: legal_v6s64 505body: | 506 bb.0: 507 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11 508 ; CHECK-LABEL: name: legal_v6s64 509 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11 510 ; CHECK-NEXT: {{ $}} 511 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 512 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 513 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 514 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 515 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9 516 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11 517 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64) 518 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<6 x s64>) 519 %0:_(s64) = COPY $vgpr0_vgpr1 520 %1:_(s64) = COPY $vgpr2_vgpr3 521 %2:_(s64) = COPY $vgpr4_vgpr5 522 %3:_(s64) = COPY $vgpr6_vgpr7 523 %4:_(s64) = COPY $vgpr8_vgpr9 524 %5:_(s64) = COPY $vgpr10_vgpr11 525 %6:_(<6 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5 526 S_NOP 0, implicit %6 527... 528--- 529name: legal_v7s64 530body: | 531 bb.0: 532 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13 533 ; CHECK-LABEL: name: legal_v7s64 534 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13 535 ; CHECK-NEXT: {{ $}} 536 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 537 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 538 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 539 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 540 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9 541 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11 542 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13 543 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64) 544 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<7 x s64>) 545 %0:_(s64) = COPY $vgpr0_vgpr1 546 %1:_(s64) = COPY $vgpr2_vgpr3 547 %2:_(s64) = COPY $vgpr4_vgpr5 548 %3:_(s64) = COPY $vgpr6_vgpr7 549 %4:_(s64) = COPY $vgpr8_vgpr9 550 %5:_(s64) = COPY $vgpr10_vgpr11 551 %6:_(s64) = COPY $vgpr12_vgpr13 552 %7:_(<7 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6 553 S_NOP 0, implicit %7 554... 555--- 556name: legal_v8s64 557body: | 558 bb.0: 559 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 560 ; CHECK-LABEL: name: legal_v8s64 561 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 562 ; CHECK-NEXT: {{ $}} 563 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 564 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 565 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 566 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 567 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9 568 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11 569 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13 570 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15 571 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64), [[COPY7]](s64) 572 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x s64>) 573 %0:_(s64) = COPY $vgpr0_vgpr1 574 %1:_(s64) = COPY $vgpr2_vgpr3 575 %2:_(s64) = COPY $vgpr4_vgpr5 576 %3:_(s64) = COPY $vgpr6_vgpr7 577 %4:_(s64) = COPY $vgpr8_vgpr9 578 %5:_(s64) = COPY $vgpr10_vgpr11 579 %6:_(s64) = COPY $vgpr12_vgpr13 580 %7:_(s64) = COPY $vgpr14_vgpr15 581 %8:_(<8 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7 582 S_NOP 0, implicit %8 583... 584 585--- 586name: legal_v16s64 587body: | 588 bb.0: 589 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15, $vgpr16_vgpr17, $vgpr18_vgpr19, $vgpr20_vgpr21, $vgpr22_vgpr23, $vgpr24_vgpr25, $vgpr26_vgpr27, $vgpr28_vgpr29, $vgpr30_vgpr31 590 ; CHECK-LABEL: name: legal_v16s64 591 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15, $vgpr16_vgpr17, $vgpr18_vgpr19, $vgpr20_vgpr21, $vgpr22_vgpr23, $vgpr24_vgpr25, $vgpr26_vgpr27, $vgpr28_vgpr29, $vgpr30_vgpr31 592 ; CHECK-NEXT: {{ $}} 593 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 594 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 595 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 596 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $vgpr6_vgpr7 597 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $vgpr8_vgpr9 598 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $vgpr10_vgpr11 599 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $vgpr12_vgpr13 600 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $vgpr14_vgpr15 601 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s64) = COPY $vgpr16_vgpr17 602 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:_(s64) = COPY $vgpr18_vgpr19 603 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:_(s64) = COPY $vgpr20_vgpr21 604 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:_(s64) = COPY $vgpr22_vgpr23 605 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:_(s64) = COPY $vgpr24_vgpr25 606 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:_(s64) = COPY $vgpr26_vgpr27 607 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:_(s64) = COPY $vgpr28_vgpr29 608 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:_(s64) = COPY $vgpr30_vgpr31 609 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64), [[COPY6]](s64), [[COPY7]](s64), [[COPY8]](s64), [[COPY9]](s64), [[COPY10]](s64), [[COPY11]](s64), [[COPY12]](s64), [[COPY13]](s64), [[COPY14]](s64), [[COPY15]](s64) 610 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<16 x s64>) 611 %0:_(s64) = COPY $vgpr0_vgpr1 612 %1:_(s64) = COPY $vgpr2_vgpr3 613 %2:_(s64) = COPY $vgpr4_vgpr5 614 %3:_(s64) = COPY $vgpr6_vgpr7 615 %4:_(s64) = COPY $vgpr8_vgpr9 616 %5:_(s64) = COPY $vgpr10_vgpr11 617 %6:_(s64) = COPY $vgpr12_vgpr13 618 %7:_(s64) = COPY $vgpr14_vgpr15 619 %8:_(s64) = COPY $vgpr16_vgpr17 620 %9:_(s64) = COPY $vgpr18_vgpr19 621 %10:_(s64) = COPY $vgpr20_vgpr21 622 %11:_(s64) = COPY $vgpr22_vgpr23 623 %12:_(s64) = COPY $vgpr24_vgpr25 624 %13:_(s64) = COPY $vgpr26_vgpr27 625 %14:_(s64) = COPY $vgpr28_vgpr29 626 %15:_(s64) = COPY $vgpr30_vgpr31 627 %16:_(<16 x s64>) = G_BUILD_VECTOR %0, %1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15 628 S_NOP 0, implicit %16 629... 630 631--- 632name: legal_v2s128 633body: | 634 bb.0: 635 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7 636 637 ; CHECK-LABEL: name: legal_v2s128 638 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7 639 ; CHECK-NEXT: {{ $}} 640 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 641 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 642 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128) 643 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s128>) 644 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 645 %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 646 %2:_(<2 x s128>) = G_BUILD_VECTOR %0, %1 647 S_NOP 0, implicit %2 648... 649 650--- 651name: legal_v2p3 652body: | 653 bb.0: 654 liveins: $vgpr0, $vgpr1 655 ; CHECK-LABEL: name: legal_v2p3 656 ; CHECK: liveins: $vgpr0, $vgpr1 657 ; CHECK-NEXT: {{ $}} 658 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 659 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 660 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3) 661 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p3>) 662 %0:_(p3) = COPY $vgpr0 663 %1:_(p3) = COPY $vgpr1 664 %2:_(<2 x p3>) = G_BUILD_VECTOR %0, %1 665 S_NOP 0, implicit %2 666... 667--- 668name: legal_v3p3 669body: | 670 bb.0: 671 liveins: $vgpr0, $vgpr1, $vgpr2 672 ; CHECK-LABEL: name: legal_v3p3 673 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2 674 ; CHECK-NEXT: {{ $}} 675 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 676 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 677 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p3) = COPY $vgpr2 678 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3), [[COPY2]](p3) 679 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x p3>) 680 %0:_(p3) = COPY $vgpr0 681 %1:_(p3) = COPY $vgpr1 682 %2:_(p3) = COPY $vgpr2 683 %3:_(<3 x p3>) = G_BUILD_VECTOR %0, %1, %2 684 S_NOP 0, implicit %3 685... 686 687--- 688name: legal_v2p0 689body: | 690 bb.0: 691 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 692 ; CHECK-LABEL: name: legal_v2p0 693 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 694 ; CHECK-NEXT: {{ $}} 695 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 696 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr2_vgpr3 697 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[COPY]](p0), [[COPY1]](p0) 698 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p0>) 699 %0:_(p0) = COPY $vgpr0_vgpr1 700 %1:_(p0) = COPY $vgpr2_vgpr3 701 %2:_(<2 x p0>) = G_BUILD_VECTOR %0, %1 702 S_NOP 0, implicit %2 703... 704 705--- 706name: legal_v2p999 707body: | 708 bb.0: 709 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 710 ; CHECK-LABEL: name: legal_v2p999 711 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 712 ; CHECK-NEXT: {{ $}} 713 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 714 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr2_vgpr3 715 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p999>) = G_BUILD_VECTOR [[COPY]](p999), [[COPY1]](p999) 716 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x p999>) 717 %0:_(p999) = COPY $vgpr0_vgpr1 718 %1:_(p999) = COPY $vgpr2_vgpr3 719 %2:_(<2 x p999>) = G_BUILD_VECTOR %0, %1 720 S_NOP 0, implicit %2 721... 722 723--- 724name: legal_v2s256 725body: | 726 bb.0: 727 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 728 729 ; CHECK-LABEL: name: legal_v2s256 730 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 731 ; CHECK-NEXT: {{ $}} 732 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 733 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 734 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s256>) = G_BUILD_VECTOR [[COPY]](s256), [[COPY1]](s256) 735 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s256>) 736 %0:_(s256) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 737 %1:_(s256) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 738 %2:_(<2 x s256>) = G_BUILD_VECTOR %0, %1 739 S_NOP 0, implicit %2 740... 741 742--- 743name: legal_v4s128 744body: | 745 bb.0: 746 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 747 748 ; CHECK-LABEL: name: legal_v4s128 749 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10, $vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 750 ; CHECK-NEXT: {{ $}} 751 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 752 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 753 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 754 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s128) = COPY $vgpr12_vgpr13_vgpr14_vgpr15 755 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s128>) = G_BUILD_VECTOR [[COPY]](s128), [[COPY1]](s128), [[COPY2]](s128), [[COPY3]](s128) 756 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s128>) 757 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 758 %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 759 %2:_(s128) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 760 %3:_(s128)= COPY $vgpr12_vgpr13_vgpr14_vgpr15 761 %4:_(<4 x s128>) = G_BUILD_VECTOR %0, %1, %2, %3 762 S_NOP 0, implicit %4 763... 764