1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s 3 4--- 5name: test_insert_s64_s32_offset0 6body: | 7 bb.0: 8 liveins: $vgpr0_vgpr1, $vgpr2 9 10 ; CHECK-LABEL: name: test_insert_s64_s32_offset0 11 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 12 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 13 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0 14 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 15 %0:_(s64) = COPY $vgpr0_vgpr1 16 %1:_(s32) = COPY $vgpr2 17 %2:_(s64) = G_INSERT %0, %1, 0 18 $vgpr0_vgpr1 = COPY %2 19... 20--- 21name: test_insert_s64_s32_offset32 22body: | 23 bb.0: 24 liveins: $vgpr0_vgpr1, $vgpr2 25 26 ; CHECK-LABEL: name: test_insert_s64_s32_offset32 27 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 28 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 29 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 32 30 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 31 %0:_(s64) = COPY $vgpr0_vgpr1 32 %1:_(s32) = COPY $vgpr2 33 %2:_(s64) = G_INSERT %0, %1, 32 34 $vgpr0_vgpr1 = COPY %2 35... 36 37--- 38name: test_insert_s64_s32_offset16 39body: | 40 bb.0: 41 liveins: $vgpr0_vgpr1, $vgpr2 42 43 ; CHECK-LABEL: name: test_insert_s64_s32_offset16 44 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 45 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 46 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 16 47 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 48 %0:_(s64) = COPY $vgpr0_vgpr1 49 %1:_(s32) = COPY $vgpr2 50 %2:_(s64) = G_INSERT %0, %1, 16 51 $vgpr0_vgpr1 = COPY %2 52... 53 54--- 55name: test_insert_s96_s32_offset0 56body: | 57 bb.0: 58 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 59 60 ; CHECK-LABEL: name: test_insert_s96_s32_offset0 61 ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 62 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 63 ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 0 64 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96) 65 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2 66 %1:_(s32) = COPY $vgpr3 67 %2:_(s96) = G_INSERT %0, %1, 0 68 $vgpr0_vgpr1_vgpr2 = COPY %2 69... 70--- 71name: test_insert_s96_s32_offset32 72body: | 73 bb.0: 74 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 75 76 ; CHECK-LABEL: name: test_insert_s96_s32_offset32 77 ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 78 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 79 ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 32 80 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96) 81 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2 82 %1:_(s32) = COPY $vgpr3 83 %2:_(s96) = G_INSERT %0, %1, 32 84 $vgpr0_vgpr1_vgpr2 = COPY %2 85... 86--- 87name: test_insert_s96_s32_offset64 88body: | 89 bb.0: 90 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 91 92 ; CHECK-LABEL: name: test_insert_s96_s32_offset64 93 ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 94 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 95 ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 64 96 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96) 97 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2 98 %1:_(s32) = COPY $vgpr3 99 %2:_(s96) = G_INSERT %0, %1, 64 100 $vgpr0_vgpr1_vgpr2 = COPY %2 101... 102--- 103name: test_insert_s128_s32_offset0 104body: | 105 bb.0: 106 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 107 108 ; CHECK-LABEL: name: test_insert_s128_s32_offset0 109 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 110 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 111 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 0 112 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 113 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 114 %1:_(s32) = COPY $vgpr4 115 %2:_(s128) = G_INSERT %0, %1, 0 116 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 117... 118--- 119name: test_insert_s128_s32_offset32 120body: | 121 bb.0: 122 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 123 124 ; CHECK-LABEL: name: test_insert_s128_s32_offset32 125 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 126 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 127 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 32 128 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 129 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 130 %1:_(s32) = COPY $vgpr4 131 %2:_(s128) = G_INSERT %0, %1, 32 132 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 133... 134--- 135name: test_insert_s128_s32_offset64 136body: | 137 bb.0: 138 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 139 140 ; CHECK-LABEL: name: test_insert_s128_s32_offset64 141 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 142 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 143 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 64 144 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 145 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 146 %1:_(s32) = COPY $vgpr4 147 %2:_(s128) = G_INSERT %0, %1, 64 148 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 149... 150--- 151name: test_insert_s128_s32_offset96 152body: | 153 bb.0: 154 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 155 156 ; CHECK-LABEL: name: test_insert_s128_s32_offset96 157 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 158 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 159 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 96 160 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 161 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 162 %1:_(s32) = COPY $vgpr4 163 %2:_(s128) = G_INSERT %0, %1, 96 164 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 165... 166--- 167name: test_insert_s128_s64_offset0 168body: | 169 bb.0: 170 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 171 172 ; CHECK-LABEL: name: test_insert_s128_s64_offset0 173 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 174 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 175 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 0 176 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 177 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 178 %1:_(s64) = COPY $vgpr4_vgpr5 179 %2:_(s128) = G_INSERT %0, %1, 0 180 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 181... 182--- 183name: test_insert_s128_s64_offset32 184body: | 185 bb.0: 186 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 187 188 ; CHECK-LABEL: name: test_insert_s128_s64_offset32 189 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 190 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 191 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 32 192 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 193 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 194 %1:_(s64) = COPY $vgpr4_vgpr5 195 %2:_(s128) = G_INSERT %0, %1, 32 196 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 197... 198--- 199name: test_insert_s128_s64_offset64 200body: | 201 bb.0: 202 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 203 204 ; CHECK-LABEL: name: test_insert_s128_s64_offset64 205 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 206 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 207 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 64 208 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 209 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 210 %1:_(s64) = COPY $vgpr4_vgpr5 211 %2:_(s128) = G_INSERT %0, %1, 64 212 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 213... 214--- 215name: test_insert_s128_s96_offset0 216body: | 217 bb.0: 218 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 219 220 ; CHECK-LABEL: name: test_insert_s128_s96_offset0 221 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 222 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6 223 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 0 224 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 225 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 226 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6 227 %2:_(s128) = G_INSERT %0, %1, 0 228 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 229... 230--- 231name: test_insert_s128_s96_offset32 232body: | 233 bb.0: 234 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 235 236 ; CHECK-LABEL: name: test_insert_s128_s96_offset32 237 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 238 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6 239 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 32 240 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 241 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 242 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6 243 %2:_(s128) = G_INSERT %0, %1, 32 244 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 245... 246--- 247name: test_insert_p0_s32_offset0 248body: | 249 bb.0: 250 liveins: $vgpr0_vgpr1, $vgpr2 251 252 ; CHECK-LABEL: name: test_insert_p0_s32_offset0 253 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 254 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 255 ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 0 256 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0) 257 %0:_(p0) = COPY $vgpr0_vgpr1 258 %1:_(s32) = COPY $vgpr2 259 %2:_(p0) = G_INSERT %0, %1, 0 260 $vgpr0_vgpr1 = COPY %2 261... 262--- 263name: test_insert_p0_s32_offset32 264body: | 265 bb.0: 266 liveins: $vgpr0_vgpr1, $vgpr2 267 268 ; CHECK-LABEL: name: test_insert_p0_s32_offset32 269 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 270 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 271 ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 32 272 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0) 273 %0:_(p0) = COPY $vgpr0_vgpr1 274 %1:_(s32) = COPY $vgpr2 275 %2:_(p0) = G_INSERT %0, %1, 32 276 $vgpr0_vgpr1 = COPY %2 277... 278--- 279name: test_insert_s128_p0_offset0 280body: | 281 bb.0: 282 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 283 284 ; CHECK-LABEL: name: test_insert_s128_p0_offset0 285 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 286 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 287 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 0 288 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 289 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 290 %1:_(p0) = COPY $vgpr4_vgpr5 291 %2:_(s128) = G_INSERT %0, %1, 0 292 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 293... 294--- 295name: test_insert_s128_p0_offset32 296body: | 297 bb.0: 298 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 299 300 ; CHECK-LABEL: name: test_insert_s128_p0_offset32 301 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 302 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 303 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 32 304 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 305 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 306 %1:_(p0) = COPY $vgpr4_vgpr5 307 %2:_(s128) = G_INSERT %0, %1, 32 308 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 309... 310--- 311name: test_insert_s128_p0_offset64 312body: | 313 bb.0: 314 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 315 316 ; CHECK-LABEL: name: test_insert_s128_p0_offset64 317 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 318 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 319 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 64 320 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 321 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 322 %1:_(p0) = COPY $vgpr4_vgpr5 323 %2:_(s128) = G_INSERT %0, %1, 64 324 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 325... 326 327--- 328name: test_insert_s128_s16_offset0 329body: | 330 bb.0: 331 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 332 333 ; CHECK-LABEL: name: test_insert_s128_s16_offset0 334 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 335 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 336 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 337 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 0 338 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 339 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 340 %1:_(s32) = COPY $vgpr4 341 %2:_(s16) = G_TRUNC %1 342 %3:_(s128) = G_INSERT %0, %2, 0 343 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3 344... 345 346--- 347name: test_insert_s128_s16_offset16 348body: | 349 bb.0: 350 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 351 352 ; CHECK-LABEL: name: test_insert_s128_s16_offset16 353 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 354 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 355 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 356 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 16 357 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 358 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 359 %1:_(s32) = COPY $vgpr4 360 %2:_(s16) = G_TRUNC %1 361 %3:_(s128) = G_INSERT %0, %2, 16 362 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3 363... 364 365--- 366name: test_insert_s128_s16_offset32 367body: | 368 bb.0: 369 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 370 371 ; CHECK-LABEL: name: test_insert_s128_s16_offset32 372 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 373 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 374 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 375 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 32 376 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 377 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 378 %1:_(s32) = COPY $vgpr4 379 %2:_(s16) = G_TRUNC %1 380 %3:_(s128) = G_INSERT %0, %2, 32 381 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3 382... 383 384--- 385name: test_insert_s128_s16_offset112 386body: | 387 bb.0: 388 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 389 390 ; CHECK-LABEL: name: test_insert_s128_s16_offset112 391 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 392 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 393 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 394 ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 112 395 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128) 396 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 397 %1:_(s32) = COPY $vgpr4 398 %2:_(s16) = G_TRUNC %1 399 %3:_(s128) = G_INSERT %0, %2, 112 400 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3 401... 402 403--- 404name: test_insert_v2s32_s32_offset0 405body: | 406 bb.0: 407 liveins: $vgpr0_vgpr1, $vgpr2 408 409 ; CHECK-LABEL: name: test_insert_v2s32_s32_offset0 410 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 411 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 412 ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0 413 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>) 414 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 415 %1:_(s32) = COPY $vgpr2 416 %2:_(<2 x s32>) = G_INSERT %0, %1, 0 417 $vgpr0_vgpr1 = COPY %2 418... 419--- 420name: test_insert_v2s32_s32_offset32 421body: | 422 bb.0: 423 liveins: $vgpr0_vgpr1, $vgpr2 424 425 ; CHECK-LABEL: name: test_insert_v2s32_s32_offset32 426 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 427 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 428 ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32 429 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>) 430 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 431 %1:_(s32) = COPY $vgpr2 432 %2:_(<2 x s32>) = G_INSERT %0, %1, 32 433 $vgpr0_vgpr1 = COPY %2 434... 435--- 436name: test_insert_v3s32_s32_offset0 437body: | 438 bb.0: 439 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 440 441 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset0 442 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 443 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 444 ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0 445 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>) 446 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 447 %1:_(s32) = COPY $vgpr3 448 %2:_(<3 x s32>) = G_INSERT %0, %1, 0 449 $vgpr0_vgpr1_vgpr2 = COPY %2 450... 451--- 452name: test_insert_v3s32_s32_offset32 453body: | 454 bb.0: 455 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 456 457 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset32 458 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 459 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 460 ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32 461 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>) 462 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 463 %1:_(s32) = COPY $vgpr3 464 %2:_(<3 x s32>) = G_INSERT %0, %1, 32 465 $vgpr0_vgpr1_vgpr2 = COPY %2 466... 467--- 468name: test_insert_v3s32_s32_offset64 469body: | 470 bb.0: 471 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3 472 473 ; CHECK-LABEL: name: test_insert_v3s32_s32_offset64 474 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 475 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3 476 ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64 477 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>) 478 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 479 %1:_(s32) = COPY $vgpr3 480 %2:_(<3 x s32>) = G_INSERT %0, %1, 64 481 $vgpr0_vgpr1_vgpr2 = COPY %2 482... 483--- 484name: test_insert_v4s32_s32_offset0 485body: | 486 bb.0: 487 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 488 489 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset0 490 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 491 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 492 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0 493 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 494 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 495 %1:_(s32) = COPY $vgpr4 496 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 497 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 498... 499--- 500name: test_insert_v4s32_s32_offset32 501body: | 502 bb.0: 503 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 504 505 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset32 506 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 507 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 508 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32 509 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 510 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 511 %1:_(s32) = COPY $vgpr4 512 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 513 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 514... 515--- 516name: test_insert_v4s32_s32_offset64 517body: | 518 bb.0: 519 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 520 521 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset64 522 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 523 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 524 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64 525 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 526 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 527 %1:_(s32) = COPY $vgpr4 528 %2:_(<4 x s32>) = G_INSERT %0, %1, 64 529 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 530... 531--- 532name: test_insert_v4s32_s32_offset96 533body: | 534 bb.0: 535 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4 536 537 ; CHECK-LABEL: name: test_insert_v4s32_s32_offset96 538 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 539 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4 540 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 96 541 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 542 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 543 %1:_(s32) = COPY $vgpr4 544 %2:_(<4 x s32>) = G_INSERT %0, %1, 96 545 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 546... 547--- 548name: test_insert_v4s32_s64_offset0 549body: | 550 bb.0: 551 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 552 553 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset0 554 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 555 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 556 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 0 557 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 558 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 559 %1:_(s64) = COPY $vgpr4_vgpr5 560 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 561 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 562... 563--- 564name: test_insert_v4s32_s64_offset32 565body: | 566 bb.0: 567 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 568 569 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset32 570 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 571 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 572 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 32 573 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 574 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 575 %1:_(s64) = COPY $vgpr4_vgpr5 576 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 577 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 578... 579--- 580name: test_insert_v4s32_s64_offset64 581body: | 582 bb.0: 583 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 584 585 ; CHECK-LABEL: name: test_insert_v4s32_s64_offset64 586 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 587 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5 588 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 64 589 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 590 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 591 %1:_(s64) = COPY $vgpr4_vgpr5 592 %2:_(<4 x s32>) = G_INSERT %0, %1, 64 593 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 594... 595--- 596name: test_insert_v4s32_s96_offset0 597body: | 598 bb.0: 599 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 600 601 ; CHECK-LABEL: name: test_insert_v4s32_s96_offset0 602 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 603 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6 604 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 0 605 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 606 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 607 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6 608 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 609 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 610... 611--- 612name: test_insert_v4s32_s96_offset32 613body: | 614 bb.0: 615 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 616 617 ; CHECK-LABEL: name: test_insert_v4s32_s96_offset32 618 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 619 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6 620 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 32 621 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 622 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 623 %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6 624 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 625 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 626... 627--- 628name: test_insert_v4s32_v2s32_offset0 629body: | 630 bb.0: 631 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 632 633 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset0 634 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 635 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 636 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 0 637 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 638 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 639 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5 640 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 641 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 642... 643--- 644name: test_insert_v4s32_v2s32_offset32 645body: | 646 bb.0: 647 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 648 649 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset32 650 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 651 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 652 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 32 653 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 654 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 655 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5 656 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 657 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 658... 659--- 660name: test_insert_v4s32_v2s32_offset64 661body: | 662 bb.0: 663 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 664 665 ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset64 666 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 667 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 668 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 64 669 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 670 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 671 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5 672 %2:_(<4 x s32>) = G_INSERT %0, %1, 64 673 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 674... 675--- 676name: test_insert_v4s32_v3s32_offset0 677body: | 678 bb.0: 679 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 680 681 ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset0 682 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 683 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 684 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 0 685 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 686 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 687 %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 688 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 689 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 690... 691--- 692name: test_insert_v4s32_v3s32_offset32 693body: | 694 bb.0: 695 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 696 697 ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset32 698 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 699 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 700 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 32 701 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 702 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 703 %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 704 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 705 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 706... 707--- 708name: test_insert_v4s32_p0_offset0 709body: | 710 bb.0: 711 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 712 713 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset0 714 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 715 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 716 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 0 717 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 718 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 719 %1:_(p0) = COPY $vgpr4_vgpr5 720 %2:_(<4 x s32>) = G_INSERT %0, %1, 0 721 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 722... 723--- 724name: test_insert_v4s32_p0_offset32 725body: | 726 bb.0: 727 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 728 729 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset32 730 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 731 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 732 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 32 733 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 734 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 735 %1:_(p0) = COPY $vgpr4_vgpr5 736 %2:_(<4 x s32>) = G_INSERT %0, %1, 32 737 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 738... 739--- 740name: test_insert_v4s32_p0_offset64 741body: | 742 bb.0: 743 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 744 745 ; CHECK-LABEL: name: test_insert_v4s32_p0_offset64 746 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 747 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5 748 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 64 749 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>) 750 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 751 %1:_(p0) = COPY $vgpr4_vgpr5 752 %2:_(<4 x s32>) = G_INSERT %0, %1, 64 753 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 754... 755 756--- 757name: test_insert_v2s16_s16_offset0 758body: | 759 bb.0: 760 liveins: $vgpr0, $vgpr1 761 762 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset0 763 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 764 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 765 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 766 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 767 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 768 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 769 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -65536 770 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]] 771 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]] 772 ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 773 ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) 774 %0:_(<2 x s16>) = COPY $vgpr0 775 %1:_(s32) = COPY $vgpr1 776 %2:_(s16) = G_TRUNC %1 777 %3:_(<2 x s16>) = G_INSERT %0, %2, 0 778 $vgpr0 = COPY %3 779... 780 781--- 782name: test_insert_v2s16_s16_offset1 783body: | 784 bb.0: 785 liveins: $vgpr0, $vgpr1 786 787 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset1 788 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 789 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 790 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 791 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 792 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 793 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 794 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 795 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32) 796 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071 797 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C2]] 798 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]] 799 ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 800 ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) 801 %0:_(<2 x s16>) = COPY $vgpr0 802 %1:_(s32) = COPY $vgpr1 803 %2:_(s16) = G_TRUNC %1 804 %3:_(<2 x s16>) = G_INSERT %0, %2, 1 805 $vgpr0 = COPY %3 806... 807--- 808name: test_insert_v2s16_s16_offset16 809body: | 810 bb.0: 811 liveins: $vgpr0, $vgpr1 812 813 ; CHECK-LABEL: name: test_insert_v2s16_s16_offset16 814 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 815 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 816 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 817 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 818 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 819 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 820 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 821 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32) 822 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]] 823 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]] 824 ; CHECK: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 825 ; CHECK: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) 826 %0:_(<2 x s16>) = COPY $vgpr0 827 %1:_(s32) = COPY $vgpr1 828 %2:_(s16) = G_TRUNC %1 829 %3:_(<2 x s16>) = G_INSERT %0, %2, 16 830 $vgpr0 = COPY %3 831... 832--- 833name: test_insert_v3s16_s16_offset0 834body: | 835 bb.0: 836 liveins: $vgpr0_vgpr1, $vgpr2 837 838 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset0 839 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 840 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 841 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 842 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 843 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 844 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 845 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 0 846 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 847 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 848 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 849 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 850 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 851 %1:_(<3 x s16>) = G_EXTRACT %0, 0 852 %2:_(s32) = COPY $vgpr2 853 %3:_(s16) = G_TRUNC %2 854 %4:_(<3 x s16>) = G_INSERT %1, %3, 0 855 %5:_(<4 x s16>) = G_IMPLICIT_DEF 856 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 857 $vgpr0_vgpr1 = COPY %6 858... 859--- 860name: test_insert_v3s16_s16_offset16 861body: | 862 bb.0: 863 liveins: $vgpr0_vgpr1, $vgpr2 864 865 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset16 866 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 867 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 868 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 869 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 870 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 871 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 872 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 16 873 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 874 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 875 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 876 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 877 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 878 %1:_(<3 x s16>) = G_EXTRACT %0, 0 879 %2:_(s32) = COPY $vgpr2 880 %3:_(s16) = G_TRUNC %2 881 %4:_(<3 x s16>) = G_INSERT %1, %3, 16 882 %5:_(<4 x s16>) = G_IMPLICIT_DEF 883 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 884 $vgpr0_vgpr1 = COPY %6 885... 886--- 887name: test_insert_v3s16_s16_offset32 888body: | 889 bb.0: 890 liveins: $vgpr0_vgpr1, $vgpr2 891 892 ; CHECK-LABEL: name: test_insert_v3s16_s16_offset32 893 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 894 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 895 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 896 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 897 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 898 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 899 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[TRUNC]](s16), 32 900 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 901 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 902 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 903 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 904 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 905 %1:_(<3 x s16>) = G_EXTRACT %0, 0 906 %2:_(s32) = COPY $vgpr2 907 %3:_(s16) = G_TRUNC %2 908 %4:_(<3 x s16>) = G_INSERT %1, %3, 32 909 %5:_(<4 x s16>) = G_IMPLICIT_DEF 910 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 911 $vgpr0_vgpr1 = COPY %6 912... 913--- 914name: test_insert_v3s16_v2s16_offset0 915body: | 916 bb.0: 917 liveins: $vgpr0_vgpr1, $vgpr2 918 919 ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset0 920 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 921 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 922 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 923 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 924 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 925 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](<2 x s16>), 0 926 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 927 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 928 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 929 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 930 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 931 %1:_(<3 x s16>) = G_EXTRACT %0, 0 932 %2:_(<2 x s16>) = COPY $vgpr2 933 %4:_(<3 x s16>) = G_INSERT %1, %2, 0 934 %5:_(<4 x s16>) = G_IMPLICIT_DEF 935 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 936 $vgpr0_vgpr1 = COPY %6 937... 938--- 939name: test_insert_v3s16_v2s16_offset16 940body: | 941 bb.0: 942 liveins: $vgpr0_vgpr1, $vgpr2 943 944 ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset16 945 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 946 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 947 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 948 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 949 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 950 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](<2 x s16>), 16 951 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 952 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 953 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 954 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 955 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 956 %1:_(<3 x s16>) = G_EXTRACT %0, 0 957 %2:_(<2 x s16>) = COPY $vgpr2 958 %4:_(<3 x s16>) = G_INSERT %1, %2, 16 959 %5:_(<4 x s16>) = G_IMPLICIT_DEF 960 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 961 $vgpr0_vgpr1 = COPY %6 962... 963--- 964name: test_insert_v3s16_s32_offset0 965body: | 966 bb.0: 967 liveins: $vgpr0_vgpr1, $vgpr2 968 969 ; CHECK-LABEL: name: test_insert_v3s16_s32_offset0 970 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 971 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 972 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 973 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 974 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 975 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](s32), 0 976 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 977 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 978 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 979 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 980 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 981 %1:_(<3 x s16>) = G_EXTRACT %0, 0 982 %2:_(s32) = COPY $vgpr2 983 %4:_(<3 x s16>) = G_INSERT %1, %2, 0 984 %5:_(<4 x s16>) = G_IMPLICIT_DEF 985 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 986 $vgpr0_vgpr1 = COPY %6 987... 988--- 989name: test_insert_v3s16_s32_offset16 990body: | 991 bb.0: 992 liveins: $vgpr0_vgpr1, $vgpr2 993 994 ; CHECK-LABEL: name: test_insert_v3s16_s32_offset16 995 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 996 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY]](<4 x s16>), 0 997 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 998 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 999 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[EXTRACT]](<3 x s16>), 0 1000 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[INSERT]], [[COPY1]](s32), 16 1001 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[INSERT1]](<4 x s16>), [[DEF]](<4 x s16>), [[DEF]](<4 x s16>) 1002 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>), [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s16>) 1003 ; CHECK: [[INSERT2:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 1004 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT2]](<4 x s16>) 1005 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1006 %1:_(<3 x s16>) = G_EXTRACT %0, 0 1007 %2:_(s32) = COPY $vgpr2 1008 %4:_(<3 x s16>) = G_INSERT %1, %2, 16 1009 %5:_(<4 x s16>) = G_IMPLICIT_DEF 1010 %6:_(<4 x s16>) = G_INSERT %5, %4, 0 1011 $vgpr0_vgpr1 = COPY %6 1012... 1013--- 1014name: test_insert_v4s16_s16_offset0 1015body: | 1016 bb.0: 1017 liveins: $vgpr0_vgpr1, $vgpr2 1018 1019 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset0 1020 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1021 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1022 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1023 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 0 1024 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1025 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1026 %1:_(s32) = COPY $vgpr2 1027 %2:_(s16) = G_TRUNC %1 1028 %3:_(<4 x s16>) = G_INSERT %0, %2, 0 1029 $vgpr0_vgpr1 = COPY %3 1030... 1031--- 1032name: test_insert_v4s16_s16_offset16 1033body: | 1034 bb.0: 1035 liveins: $vgpr0_vgpr1, $vgpr2 1036 1037 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset16 1038 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1039 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1040 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1041 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 16 1042 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1043 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1044 %1:_(s32) = COPY $vgpr2 1045 %2:_(s16) = G_TRUNC %1 1046 %3:_(<4 x s16>) = G_INSERT %0, %2, 16 1047 $vgpr0_vgpr1 = COPY %3 1048... 1049--- 1050name: test_insert_v4s16_s16_offset32 1051body: | 1052 bb.0: 1053 liveins: $vgpr0_vgpr1, $vgpr2 1054 1055 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset32 1056 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1057 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1058 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1059 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 32 1060 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1061 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1062 %1:_(s32) = COPY $vgpr2 1063 %2:_(s16) = G_TRUNC %1 1064 %3:_(<4 x s16>) = G_INSERT %0, %2, 32 1065 $vgpr0_vgpr1 = COPY %3 1066... 1067--- 1068name: test_insert_v4s16_s16_offset48 1069body: | 1070 bb.0: 1071 liveins: $vgpr0_vgpr1, $vgpr2 1072 1073 ; CHECK-LABEL: name: test_insert_v4s16_s16_offset48 1074 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1075 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1076 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1077 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[TRUNC]](s16), 48 1078 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1079 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1080 %1:_(s32) = COPY $vgpr2 1081 %2:_(s16) = G_TRUNC %1 1082 %3:_(<4 x s16>) = G_INSERT %0, %2, 48 1083 $vgpr0_vgpr1 = COPY %3 1084... 1085--- 1086name: test_insert_v4s16_v2s16_offset0 1087body: | 1088 bb.0: 1089 liveins: $vgpr0_vgpr1, $vgpr2 1090 1091 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset0 1092 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1093 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1094 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 0 1095 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1096 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1097 %1:_(<2 x s16>) = COPY $vgpr2 1098 %2:_(<4 x s16>) = G_INSERT %0, %1, 0 1099 $vgpr0_vgpr1 = COPY %2 1100... 1101--- 1102name: test_insert_v4s16_v2s16_offset16 1103body: | 1104 bb.0: 1105 liveins: $vgpr0_vgpr1, $vgpr2 1106 1107 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset16 1108 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1109 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1110 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 16 1111 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1112 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1113 %1:_(<2 x s16>) = COPY $vgpr2 1114 %2:_(<4 x s16>) = G_INSERT %0, %1, 16 1115 $vgpr0_vgpr1 = COPY %2 1116... 1117--- 1118name: test_insert_v4s16_v2s16_offset32 1119body: | 1120 bb.0: 1121 liveins: $vgpr0_vgpr1, $vgpr2 1122 1123 ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset32 1124 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1125 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1126 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](<2 x s16>), 32 1127 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1128 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1129 %1:_(<2 x s16>) = COPY $vgpr2 1130 %2:_(<4 x s16>) = G_INSERT %0, %1, 32 1131 $vgpr0_vgpr1 = COPY %2 1132... 1133--- 1134name: test_insert_v4s16_v3s16_offset0 1135body: | 1136 bb.0: 1137 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 1138 1139 ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset0 1140 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1141 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr3 1142 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY1]](<4 x s16>), 0 1143 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[EXTRACT]](<3 x s16>), 0 1144 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1145 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1146 %1:_(<4 x s16>) = COPY $vgpr2_vgpr3 1147 %2:_(<3 x s16>) = G_EXTRACT %1, 0 1148 %3:_(<4 x s16>) = G_INSERT %0, %2, 0 1149 $vgpr0_vgpr1 = COPY %3 1150... 1151--- 1152name: test_insert_v4s16_v3s16_offset16 1153body: | 1154 bb.0: 1155 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 1156 1157 ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset16 1158 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1159 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr3 1160 ; CHECK: [[EXTRACT:%[0-9]+]]:_(<3 x s16>) = G_EXTRACT [[COPY1]](<4 x s16>), 0 1161 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[EXTRACT]](<3 x s16>), 16 1162 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1163 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1164 %1:_(<4 x s16>) = COPY $vgpr2_vgpr3 1165 %2:_(<3 x s16>) = G_EXTRACT %1, 0 1166 %3:_(<4 x s16>) = G_INSERT %0, %2, 16 1167 $vgpr0_vgpr1 = COPY %3 1168... 1169--- 1170name: test_insert_v4s16_s32_offset0 1171body: | 1172 bb.0: 1173 liveins: $vgpr0_vgpr1, $vgpr2 1174 1175 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset0 1176 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1177 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1178 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 0 1179 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1180 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1181 %1:_(s32) = COPY $vgpr2 1182 %2:_(<4 x s16>) = G_INSERT %0, %1, 0 1183 $vgpr0_vgpr1 = COPY %2 1184... 1185--- 1186name: test_insert_v4s16_s32_offset16 1187body: | 1188 bb.0: 1189 liveins: $vgpr0_vgpr1, $vgpr2 1190 1191 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset16 1192 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1193 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1194 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 16 1195 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1196 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1197 %1:_(s32) = COPY $vgpr2 1198 %2:_(<4 x s16>) = G_INSERT %0, %1, 16 1199 $vgpr0_vgpr1 = COPY %2 1200... 1201--- 1202name: test_insert_v4s16_s32_offset32 1203body: | 1204 bb.0: 1205 liveins: $vgpr0_vgpr1, $vgpr2 1206 1207 ; CHECK-LABEL: name: test_insert_v4s16_s32_offset32 1208 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1 1209 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1210 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[COPY]], [[COPY1]](s32), 32 1211 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<4 x s16>) 1212 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1 1213 %1:_(s32) = COPY $vgpr2 1214 %2:_(<4 x s16>) = G_INSERT %0, %1, 32 1215 $vgpr0_vgpr1 = COPY %2 1216... 1217 1218--- 1219name: test_insert_s64_s16_offset0 1220body: | 1221 bb.0: 1222 liveins: $vgpr0_vgpr1, $vgpr2 1223 1224 ; CHECK-LABEL: name: test_insert_s64_s16_offset0 1225 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 1226 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1227 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1228 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 0 1229 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 1230 %0:_(s64) = COPY $vgpr0_vgpr1 1231 %1:_(s32) = COPY $vgpr2 1232 %2:_(s16) = G_TRUNC %1 1233 %3:_(s64) = G_INSERT %0, %2, 0 1234 $vgpr0_vgpr1 = COPY %3 1235... 1236--- 1237name: test_insert_s64_s16_offset16 1238body: | 1239 bb.0: 1240 liveins: $vgpr0_vgpr1, $vgpr2 1241 1242 ; CHECK-LABEL: name: test_insert_s64_s16_offset16 1243 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 1244 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1245 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1246 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 16 1247 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 1248 %0:_(s64) = COPY $vgpr0_vgpr1 1249 %1:_(s32) = COPY $vgpr2 1250 %2:_(s16) = G_TRUNC %1 1251 %3:_(s64) = G_INSERT %0, %2, 16 1252 $vgpr0_vgpr1 = COPY %3 1253... 1254--- 1255name: test_insert_s64_s16_offset32 1256body: | 1257 bb.0: 1258 liveins: $vgpr0_vgpr1, $vgpr2 1259 1260 ; CHECK-LABEL: name: test_insert_s64_s16_offset32 1261 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 1262 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1263 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1264 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 32 1265 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 1266 %0:_(s64) = COPY $vgpr0_vgpr1 1267 %1:_(s32) = COPY $vgpr2 1268 %2:_(s16) = G_TRUNC %1 1269 %3:_(s64) = G_INSERT %0, %2, 32 1270 $vgpr0_vgpr1 = COPY %3 1271... 1272--- 1273name: test_insert_s64_s16_offset48 1274body: | 1275 bb.0: 1276 liveins: $vgpr0_vgpr1, $vgpr2 1277 1278 ; CHECK-LABEL: name: test_insert_s64_s16_offset48 1279 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 1280 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 1281 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 1282 ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 48 1283 ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64) 1284 %0:_(s64) = COPY $vgpr0_vgpr1 1285 %1:_(s32) = COPY $vgpr2 1286 %2:_(s16) = G_TRUNC %1 1287 %3:_(s64) = G_INSERT %0, %2, 48 1288 $vgpr0_vgpr1 = COPY %3 1289... 1290--- 1291name: test_insert_s32_s16_offset0 1292body: | 1293 bb.0: 1294 liveins: $vgpr0, $vgpr1 1295 1296 ; CHECK-LABEL: name: test_insert_s32_s16_offset0 1297 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1298 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1299 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1300 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 1301 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 1302 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -65536 1303 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]] 1304 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]] 1305 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32) 1306 ; CHECK: $vgpr0 = COPY [[COPY3]](s32) 1307 %0:_(s32) = COPY $vgpr0 1308 %1:_(s32) = COPY $vgpr1 1309 %2:_(s16) = G_TRUNC %1 1310 %3:_(s32) = G_INSERT %1, %2, 0 1311 $vgpr0 = COPY %3 1312... 1313 1314--- 1315name: test_insert_s32_s16_offset1 1316body: | 1317 bb.0: 1318 liveins: $vgpr0, $vgpr1 1319 1320 ; CHECK-LABEL: name: test_insert_s32_s16_offset1 1321 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1322 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1323 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1324 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 1325 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 1326 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1327 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32) 1328 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071 1329 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]] 1330 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]] 1331 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32) 1332 ; CHECK: $vgpr0 = COPY [[COPY3]](s32) 1333 %0:_(s32) = COPY $vgpr0 1334 %1:_(s32) = COPY $vgpr1 1335 %2:_(s16) = G_TRUNC %1 1336 %3:_(s32) = G_INSERT %1, %2, 1 1337 $vgpr0 = COPY %3 1338... 1339 1340--- 1341name: test_insert_s32_s16_offset8 1342body: | 1343 bb.0: 1344 liveins: $vgpr0, $vgpr1 1345 1346 ; CHECK-LABEL: name: test_insert_s32_s16_offset8 1347 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1348 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1349 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1350 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 1351 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 1352 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1353 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32) 1354 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -16776961 1355 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]] 1356 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]] 1357 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32) 1358 ; CHECK: $vgpr0 = COPY [[COPY3]](s32) 1359 %0:_(s32) = COPY $vgpr0 1360 %1:_(s32) = COPY $vgpr1 1361 %2:_(s16) = G_TRUNC %1 1362 %3:_(s32) = G_INSERT %1, %2, 8 1363 $vgpr0 = COPY %3 1364... 1365 1366--- 1367name: test_insert_s32_s16_offset16 1368body: | 1369 bb.0: 1370 liveins: $vgpr0, $vgpr1 1371 1372 ; CHECK-LABEL: name: test_insert_s32_s16_offset16 1373 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1374 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1375 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1376 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 1377 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]] 1378 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1379 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32) 1380 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 1381 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]] 1382 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32) 1383 ; CHECK: $vgpr0 = COPY [[COPY3]](s32) 1384 %0:_(s32) = COPY $vgpr0 1385 %1:_(s32) = COPY $vgpr1 1386 %2:_(s16) = G_TRUNC %1 1387 %3:_(s32) = G_INSERT %1, %2, 16 1388 $vgpr0 = COPY %3 1389... 1390