1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -global-isel-abort=0 -verify-machineinstrs -o - %s | FileCheck %s
5 name: ptrmask_p3_s32_sgpr_sgpr_sgpr
11 liveins: $sgpr0, $sgpr1
13 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_sgpr
14 ; CHECK: liveins: $sgpr0, $sgpr1
16 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
17 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
18 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], [[COPY1]], implicit-def dead $scc
19 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
20 %0:sgpr(p3) = COPY $sgpr0
21 %1:sgpr(s32) = COPY $sgpr1
22 %2:sgpr(p3) = G_PTRMASK %0, %1
23 S_ENDPGM 0, implicit %2
28 name: ptrmask_p3_s32_sgpr_sgpr_0xf0f0f0f0
36 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_0xf0f0f0f0
37 ; CHECK: liveins: $sgpr0
39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
40 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -252645136
41 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
42 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
43 %0:sgpr(p3) = COPY $sgpr0
44 %const:sgpr(s32) = G_CONSTANT i32 -252645136
45 %1:sgpr(p3) = G_PTRMASK %0, %const
46 S_ENDPGM 0, implicit %1
51 name: ptrmask_p3_s32_sgpr_sgpr_0xffffffff
59 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_0xffffffff
60 ; CHECK: liveins: $sgpr0
62 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
63 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -1
64 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
65 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
66 %0:sgpr(p3) = COPY $sgpr0
67 %const:sgpr(s32) = G_CONSTANT i32 -1
68 %1:sgpr(p3) = G_PTRMASK %0, %const
69 S_ENDPGM 0, implicit %1
74 name: ptrmask_p3_s32_sgpr_sgpr_0x00000000
82 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_0x00000000
83 ; CHECK: liveins: $sgpr0
85 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
86 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 0
87 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
88 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
89 %0:sgpr(p3) = COPY $sgpr0
90 %const:sgpr(s32) = G_CONSTANT i32 0
91 %1:sgpr(p3) = G_PTRMASK %0, %const
92 S_ENDPGM 0, implicit %1
97 name: ptrmask_p3_s32_sgpr_sgpr_clearhi1
105 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearhi1
106 ; CHECK: liveins: $sgpr0
108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
109 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -2147483648
110 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
111 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
112 %0:sgpr(p3) = COPY $sgpr0
113 %const:sgpr(s32) = G_CONSTANT i32 -2147483648
114 %1:sgpr(p3) = G_PTRMASK %0, %const
115 S_ENDPGM 0, implicit %1
120 name: ptrmask_p3_s32_sgpr_sgpr_clearhi2
122 regBankSelected: true
128 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearhi2
129 ; CHECK: liveins: $sgpr0
131 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
132 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -1073741824
133 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
134 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
135 %0:sgpr(p3) = COPY $sgpr0
136 %const:sgpr(s32) = G_CONSTANT i32 -1073741824
137 %1:sgpr(p3) = G_PTRMASK %0, %const
138 S_ENDPGM 0, implicit %1
143 name: ptrmask_p3_s32_sgpr_sgpr_clearlo1
145 regBankSelected: true
151 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearlo1
152 ; CHECK: liveins: $sgpr0
154 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
155 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -2
156 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
157 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
158 %0:sgpr(p3) = COPY $sgpr0
159 %const:sgpr(s32) = G_CONSTANT i32 -2
160 %1:sgpr(p3) = G_PTRMASK %0, %const
161 S_ENDPGM 0, implicit %1
166 name: ptrmask_p3_s32_sgpr_sgpr_clearlo2
168 regBankSelected: true
174 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearlo2
175 ; CHECK: liveins: $sgpr0
177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
178 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -4
179 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
180 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
181 %0:sgpr(p3) = COPY $sgpr0
182 %const:sgpr(s32) = G_CONSTANT i32 -4
183 %1:sgpr(p3) = G_PTRMASK %0, %const
184 S_ENDPGM 0, implicit %1
189 name: ptrmask_p3_s32_sgpr_sgpr_clearlo3
191 regBankSelected: true
197 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearlo3
198 ; CHECK: liveins: $sgpr0
200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
201 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -8
202 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
203 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
204 %0:sgpr(p3) = COPY $sgpr0
205 %const:sgpr(s32) = G_CONSTANT i32 -8
206 %1:sgpr(p3) = G_PTRMASK %0, %const
207 S_ENDPGM 0, implicit %1
212 name: ptrmask_p3_s32_sgpr_sgpr_clearlo4
214 regBankSelected: true
220 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearlo4
221 ; CHECK: liveins: $sgpr0
223 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
224 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -16
225 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
226 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
227 %0:sgpr(p3) = COPY $sgpr0
228 %const:sgpr(s32) = G_CONSTANT i32 -16
229 %1:sgpr(p3) = G_PTRMASK %0, %const
230 S_ENDPGM 0, implicit %1
235 name: ptrmask_p3_s32_sgpr_sgpr_clearlo29
237 regBankSelected: true
243 ; CHECK-LABEL: name: ptrmask_p3_s32_sgpr_sgpr_clearlo29
244 ; CHECK: liveins: $sgpr0
246 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
247 ; CHECK-NEXT: %const:sreg_32 = S_MOV_B32 -536870912
248 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY]], %const, implicit-def dead $scc
249 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]
250 %0:sgpr(p3) = COPY $sgpr0
251 %const:sgpr(s32) = G_CONSTANT i32 -536870912
252 %1:sgpr(p3) = G_PTRMASK %0, %const
253 S_ENDPGM 0, implicit %1
258 name: ptrmask_p0_s64_sgpr_sgpr_sgpr
260 regBankSelected: true
264 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
266 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_sgpr
267 ; CHECK: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3
269 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
270 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3
271 ; CHECK-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], [[COPY1]], implicit-def dead $scc
272 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B64_]]
273 %0:sgpr(p0) = COPY $sgpr0_sgpr1
274 %1:sgpr(s64) = COPY $sgpr2_sgpr3
275 %2:sgpr(p0) = G_PTRMASK %0, %1
276 S_ENDPGM 0, implicit %2
281 name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0xffffffffffffffff
283 regBankSelected: true
287 liveins: $sgpr0_sgpr1
289 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0xffffffffffffffff
290 ; CHECK: liveins: $sgpr0_sgpr1
292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
293 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
294 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
295 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1
296 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
297 %0:sgpr(p0) = COPY $sgpr0_sgpr1
298 %1:sgpr(s64) = G_CONSTANT i64 -1
299 %2:sgpr(p0) = G_PTRMASK %0, %1
300 S_ENDPGM 0, implicit %2
305 name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0x0000000000000000
307 regBankSelected: true
311 liveins: $sgpr0_sgpr1
313 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0x0000000000000000
314 ; CHECK: liveins: $sgpr0_sgpr1
316 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
317 ; CHECK-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
318 ; CHECK-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], [[S_MOV_B64_]], implicit-def dead $scc
319 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B64_]]
320 %0:sgpr(p0) = COPY $sgpr0_sgpr1
321 %1:sgpr(s64) = G_CONSTANT i64 0
322 %2:sgpr(p0) = G_PTRMASK %0, %1
323 S_ENDPGM 0, implicit %2
328 name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0xf0f0f0f0f0f0f0f0
330 regBankSelected: true
334 liveins: $sgpr0_sgpr1
336 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_sgpr_0xf0f0f0f0f0f0f0f0
337 ; CHECK: liveins: $sgpr0_sgpr1
339 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
340 ; CHECK-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -1085102592571150096
341 ; CHECK-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], [[S_MOV_B]], implicit-def dead $scc
342 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B64_]]
343 %0:sgpr(p0) = COPY $sgpr0_sgpr1
344 %1:sgpr(s64) = G_CONSTANT i64 -1085102592571150096
345 %2:sgpr(p0) = G_PTRMASK %0, %1
346 S_ENDPGM 0, implicit %2
351 name: ptrmask_p0_s64_sgpr_sgpr_clearhi1
353 regBankSelected: true
357 liveins: $sgpr0_sgpr1
359 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearhi1
360 ; CHECK: liveins: $sgpr0_sgpr1
362 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
363 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64_IMM_PSEUDO -9223372036854775808
364 ; CHECK-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], %const, implicit-def dead $scc
365 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B64_]]
366 %0:sgpr(p0) = COPY $sgpr0_sgpr1
367 %const:sgpr(s64) = G_CONSTANT i64 -9223372036854775808
368 %1:sgpr(p0) = G_PTRMASK %0, %const
369 S_ENDPGM 0, implicit %1
374 name: ptrmask_p0_s64_sgpr_sgpr_clearhi32
376 regBankSelected: true
380 liveins: $sgpr0_sgpr1
382 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearhi32
383 ; CHECK: liveins: $sgpr0_sgpr1
385 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
386 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64_IMM_PSEUDO -4294967296
387 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
388 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
389 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
390 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
391 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
392 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
393 %0:sgpr(p0) = COPY $sgpr0_sgpr1
394 %const:sgpr(s64) = G_CONSTANT i64 -4294967296
395 %1:sgpr(p0) = G_PTRMASK %0, %const
396 S_ENDPGM 0, implicit %1
401 name: ptrmask_p0_s64_sgpr_sgpr_clear_32
403 regBankSelected: true
407 liveins: $sgpr0_sgpr1
409 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clear_32
410 ; CHECK: liveins: $sgpr0_sgpr1
412 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
413 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64_IMM_PSEUDO 4294967296
414 ; CHECK-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64 = S_AND_B64 [[COPY]], %const, implicit-def dead $scc
415 ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B64_]]
416 %0:sgpr(p0) = COPY $sgpr0_sgpr1
417 %const:sgpr(s64) = G_CONSTANT i64 4294967296
418 %1:sgpr(p0) = G_PTRMASK %0, %const
419 S_ENDPGM 0, implicit %1
424 name: ptrmask_p0_s64_sgpr_sgpr_clearlo1
426 regBankSelected: true
430 liveins: $sgpr0_sgpr1
432 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearlo1
433 ; CHECK: liveins: $sgpr0_sgpr1
435 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
436 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64 -2
437 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
438 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
439 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
440 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
441 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
442 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
443 %0:sgpr(p0) = COPY $sgpr0_sgpr1
444 %const:sgpr(s64) = G_CONSTANT i64 -2
445 %1:sgpr(p0) = G_PTRMASK %0, %const
446 S_ENDPGM 0, implicit %1
451 name: ptrmask_p0_s64_sgpr_sgpr_clearlo2
453 regBankSelected: true
457 liveins: $sgpr0_sgpr1
459 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearlo2
460 ; CHECK: liveins: $sgpr0_sgpr1
462 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
463 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64 -4
464 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
465 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
466 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
467 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
468 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
469 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
470 %0:sgpr(p0) = COPY $sgpr0_sgpr1
471 %const:sgpr(s64) = G_CONSTANT i64 -4
472 %1:sgpr(p0) = G_PTRMASK %0, %const
473 S_ENDPGM 0, implicit %1
478 name: ptrmask_p0_s64_sgpr_sgpr_clearlo3
480 regBankSelected: true
484 liveins: $sgpr0_sgpr1
486 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearlo3
487 ; CHECK: liveins: $sgpr0_sgpr1
489 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
490 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64 -8
491 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
492 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
493 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
494 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
495 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
496 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
497 %0:sgpr(p0) = COPY $sgpr0_sgpr1
498 %const:sgpr(s64) = G_CONSTANT i64 -8
499 %1:sgpr(p0) = G_PTRMASK %0, %const
500 S_ENDPGM 0, implicit %1
505 name: ptrmask_p0_s64_sgpr_sgpr_clearlo4
507 regBankSelected: true
511 liveins: $sgpr0_sgpr1
513 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearlo4
514 ; CHECK: liveins: $sgpr0_sgpr1
516 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
517 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64 -16
518 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
519 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
520 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
521 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
522 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
523 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
524 %0:sgpr(p0) = COPY $sgpr0_sgpr1
525 %const:sgpr(s64) = G_CONSTANT i64 -16
526 %1:sgpr(p0) = G_PTRMASK %0, %const
527 S_ENDPGM 0, implicit %1
532 name: ptrmask_p0_s64_sgpr_sgpr_clearlo29
534 regBankSelected: true
538 liveins: $sgpr0_sgpr1
540 ; CHECK-LABEL: name: ptrmask_p0_s64_sgpr_sgpr_clearlo29
541 ; CHECK: liveins: $sgpr0_sgpr1
543 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
544 ; CHECK-NEXT: %const:sreg_64 = S_MOV_B64_IMM_PSEUDO -536870912
545 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
546 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
547 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %const.sub0
548 ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[COPY1]], [[COPY3]], implicit-def $scc
549 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_AND_B32_]], %subreg.sub0, [[COPY2]], %subreg.sub1
550 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
551 %0:sgpr(p0) = COPY $sgpr0_sgpr1
552 %const:sgpr(s64) = G_CONSTANT i64 -536870912
553 %1:sgpr(p0) = G_PTRMASK %0, %const
554 S_ENDPGM 0, implicit %1
559 name: ptrmask_p3_vgpr_vgpr_0xf0f0f0f0
561 regBankSelected: true
567 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_0xf0f0f0f0
568 ; CHECK: liveins: $vgpr0
570 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
571 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -252645136, implicit $exec
572 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
573 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
574 %0:vgpr(p3) = COPY $vgpr0
575 %const:vgpr(s32) = G_CONSTANT i32 -252645136
576 %1:vgpr(p3) = G_PTRMASK %0, %const
577 S_ENDPGM 0, implicit %1
582 name: ptrmask_p3_vgpr_vgpr_clearlo1
584 regBankSelected: true
590 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_clearlo1
591 ; CHECK: liveins: $vgpr0
593 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
594 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -2, implicit $exec
595 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
596 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
597 %0:vgpr(p3) = COPY $vgpr0
598 %const:vgpr(s32) = G_CONSTANT i32 -2
599 %1:vgpr(p3) = G_PTRMASK %0, %const
600 S_ENDPGM 0, implicit %1
605 name: ptrmask_p3_vgpr_vgpr_clearlo2
607 regBankSelected: true
613 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_clearlo2
614 ; CHECK: liveins: $vgpr0
616 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
617 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -4, implicit $exec
618 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
619 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
620 %0:vgpr(p3) = COPY $vgpr0
621 %const:vgpr(s32) = G_CONSTANT i32 -4
622 %1:vgpr(p3) = G_PTRMASK %0, %const
623 S_ENDPGM 0, implicit %1
628 name: ptrmask_p3_vgpr_vgpr_clearlo3
630 regBankSelected: true
636 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_clearlo3
637 ; CHECK: liveins: $vgpr0
639 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
640 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -8, implicit $exec
641 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
642 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
643 %0:vgpr(p3) = COPY $vgpr0
644 %const:vgpr(s32) = G_CONSTANT i32 -8
645 %1:vgpr(p3) = G_PTRMASK %0, %const
646 S_ENDPGM 0, implicit %1
651 name: ptrmask_p3_vgpr_vgpr_clearlo4
653 regBankSelected: true
659 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_clearlo4
660 ; CHECK: liveins: $vgpr0
662 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
663 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -16, implicit $exec
664 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
665 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
666 %0:vgpr(p3) = COPY $vgpr0
667 %const:vgpr(s32) = G_CONSTANT i32 -16
668 %1:vgpr(p3) = G_PTRMASK %0, %const
669 S_ENDPGM 0, implicit %1
674 name: ptrmask_p3_vgpr_vgpr_clearlo29
676 regBankSelected: true
682 ; CHECK-LABEL: name: ptrmask_p3_vgpr_vgpr_clearlo29
683 ; CHECK: liveins: $vgpr0
685 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
686 ; CHECK-NEXT: %const:vgpr_32 = V_MOV_B32_e32 -536870912, implicit $exec
687 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], %const, implicit $exec
688 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_AND_B32_e64_]]
689 %0:vgpr(p3) = COPY $vgpr0
690 %const:vgpr(s32) = G_CONSTANT i32 -536870912
691 %1:vgpr(p3) = G_PTRMASK %0, %const
692 S_ENDPGM 0, implicit %1
697 name: ptrmask_p0_s64_vgpr_vgpr_vgpr
699 regBankSelected: true
703 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
705 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_vgpr
706 ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
708 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
709 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
710 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
711 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
712 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY1]].sub0
713 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], [[COPY4]], implicit $exec
714 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[COPY1]].sub1
715 ; CHECK-NEXT: [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY3]], [[COPY5]], implicit $exec
716 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1
717 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
718 %0:vgpr(p0) = COPY $vgpr0_vgpr1
719 %1:vgpr(s64) = COPY $vgpr2_vgpr3
720 %2:vgpr(p0) = G_PTRMASK %0, %1
721 S_ENDPGM 0, implicit %2
726 name: ptrmask_p0_s64_vgpr_vgpr_vgpr_0xf0f0f0f0f0f0f0f0
728 regBankSelected: true
732 liveins: $vgpr0_vgpr1
734 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_vgpr_0xf0f0f0f0f0f0f0f0
735 ; CHECK: liveins: $vgpr0_vgpr1
737 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
738 ; CHECK-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO -1085102592571150096, implicit $exec
739 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
740 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
741 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0
742 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
743 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1
744 ; CHECK-NEXT: [[V_AND_B32_e64_1:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY2]], [[COPY4]], implicit $exec
745 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[V_AND_B32_e64_1]], %subreg.sub1
746 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
747 %0:vgpr(p0) = COPY $vgpr0_vgpr1
748 %1:vgpr(s64) = G_CONSTANT i64 -1085102592571150096
749 %2:vgpr(p0) = G_PTRMASK %0, %1
750 S_ENDPGM 0, implicit %2
755 name: ptrmask_p0_s64_vgpr_vgpr_clearlo1
757 regBankSelected: true
761 liveins: $vgpr0_vgpr1
763 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_clearlo1
764 ; CHECK: liveins: $vgpr0_vgpr1
766 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
767 ; CHECK-NEXT: %const:vreg_64 = V_MOV_B64_PSEUDO -2, implicit $exec
768 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
769 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
770 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY %const.sub0
771 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
772 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1
773 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
774 %0:vgpr(p0) = COPY $vgpr0_vgpr1
775 %const:vgpr(s64) = G_CONSTANT i64 -2
776 %1:vgpr(p0) = G_PTRMASK %0, %const
777 S_ENDPGM 0, implicit %1
782 name: ptrmask_p0_s64_vgpr_vgpr_clearlo2
784 regBankSelected: true
788 liveins: $vgpr0_vgpr1
790 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_clearlo2
791 ; CHECK: liveins: $vgpr0_vgpr1
793 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
794 ; CHECK-NEXT: %const:vreg_64 = V_MOV_B64_PSEUDO -4, implicit $exec
795 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
796 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
797 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY %const.sub0
798 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
799 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1
800 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
801 %0:vgpr(p0) = COPY $vgpr0_vgpr1
802 %const:vgpr(s64) = G_CONSTANT i64 -4
803 %1:vgpr(p0) = G_PTRMASK %0, %const
804 S_ENDPGM 0, implicit %1
809 name: ptrmask_p0_s64_vgpr_vgpr_clearlo3
811 regBankSelected: true
815 liveins: $vgpr0_vgpr1
817 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_clearlo3
818 ; CHECK: liveins: $vgpr0_vgpr1
820 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
821 ; CHECK-NEXT: %const:vreg_64 = V_MOV_B64_PSEUDO -4, implicit $exec
822 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
823 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
824 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY %const.sub0
825 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
826 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1
827 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
828 %0:vgpr(p0) = COPY $vgpr0_vgpr1
829 %const:vgpr(s64) = G_CONSTANT i64 -4
830 %1:vgpr(p0) = G_PTRMASK %0, %const
831 S_ENDPGM 0, implicit %1
836 name: ptrmask_p0_s64_vgpr_vgpr_clearlo4
838 regBankSelected: true
842 liveins: $vgpr0_vgpr1
844 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_clearlo4
845 ; CHECK: liveins: $vgpr0_vgpr1
847 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
848 ; CHECK-NEXT: %const:vreg_64 = V_MOV_B64_PSEUDO -16, implicit $exec
849 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
850 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
851 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY %const.sub0
852 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
853 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1
854 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
855 %0:vgpr(p0) = COPY $vgpr0_vgpr1
856 %const:vgpr(s64) = G_CONSTANT i64 -16
857 %1:vgpr(p0) = G_PTRMASK %0, %const
858 S_ENDPGM 0, implicit %1
863 name: ptrmask_p0_s64_vgpr_vgpr_clearlo29
865 regBankSelected: true
869 liveins: $vgpr0_vgpr1
871 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_vgpr_clearlo29
872 ; CHECK: liveins: $vgpr0_vgpr1
874 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
875 ; CHECK-NEXT: %const:vreg_64 = V_MOV_B64_PSEUDO -536870912, implicit $exec
876 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
877 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
878 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY %const.sub0
879 ; CHECK-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY1]], [[COPY3]], implicit $exec
880 ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_AND_B32_e64_]], %subreg.sub0, [[COPY2]], %subreg.sub1
881 ; CHECK-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]
882 %0:vgpr(p0) = COPY $vgpr0_vgpr1
883 %const:vgpr(s64) = G_CONSTANT i64 -536870912
884 %1:vgpr(p0) = G_PTRMASK %0, %const
885 S_ENDPGM 0, implicit %1
890 name: ptrmask_p3_vgpr_sgpr_clearlo2
892 regBankSelected: true
898 ; CHECK-LABEL: name: ptrmask_p3_vgpr_sgpr_clearlo2
899 ; CHECK: liveins: $sgpr0
901 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p3) = COPY $sgpr0
902 ; CHECK-NEXT: %const:sgpr(s32) = G_CONSTANT i32 -4
903 ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:vgpr(p3) = G_PTRMASK [[COPY]], %const(s32)
904 ; CHECK-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p3)
905 %0:sgpr(p3) = COPY $sgpr0
906 %const:sgpr(s32) = G_CONSTANT i32 -4
907 %1:vgpr(p3) = G_PTRMASK %0, %const
908 S_ENDPGM 0, implicit %1
913 name: ptrmask_p0_s64_vgpr_sgpr_clearlo2
915 regBankSelected: true
919 liveins: $sgpr0_sgpr1
921 ; CHECK-LABEL: name: ptrmask_p0_s64_vgpr_sgpr_clearlo2
922 ; CHECK: liveins: $sgpr0_sgpr1
924 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(p0) = COPY $sgpr0_sgpr1
925 ; CHECK-NEXT: %const:sgpr(s32) = G_CONSTANT i32 -4
926 ; CHECK-NEXT: [[PTRMASK:%[0-9]+]]:vgpr(p0) = G_PTRMASK [[COPY]], %const(s32)
927 ; CHECK-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p0)
928 %0:sgpr(p0) = COPY $sgpr0_sgpr1
929 %const:sgpr(s32) = G_CONSTANT i32 -4
930 %1:vgpr(p0) = G_PTRMASK %0, %const
931 S_ENDPGM 0, implicit %1