Skip to content

Commit 26f56f8

Browse files
committed
AMDGPU: Add more tests for peephole-opt immediate folding
1 parent 9c9157b commit 26f56f8

File tree

1 file changed

+214
-0
lines changed

1 file changed

+214
-0
lines changed

llvm/test/CodeGen/AMDGPU/peephole-fold-imm.mir

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,3 +344,217 @@ body: |
344344
%3:vgpr_32 = V_FMA_F32_e64 0, %0, 0, %1, 0, %2.sub1, 0, 0, implicit $mode, implicit $exec
345345
SI_RETURN_TO_EPILOG %3
346346
...
347+
348+
---
349+
name: fold_aimm_virtual
350+
body: |
351+
bb.0:
352+
353+
; GCN-LABEL: name: fold_aimm_virtual
354+
; GCN: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
355+
; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_ACCVGPR_WRITE_B32_e64_]]
356+
%0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
357+
%1:agpr_32 = COPY killed %0
358+
SI_RETURN_TO_EPILOG implicit %1
359+
360+
...
361+
362+
---
363+
name: fold_aimm_virtual_copy_to_vgpr
364+
body: |
365+
bb.0:
366+
367+
; GCN-LABEL: name: fold_aimm_virtual_copy_to_vgpr
368+
; GCN: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
369+
; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 64, implicit $exec
370+
; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_MOV_B32_e32_]]
371+
%0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
372+
%1:vgpr_32 = COPY killed %0
373+
SI_RETURN_TO_EPILOG implicit %1
374+
375+
...
376+
377+
---
378+
name: fold_v_mov_b64_64_sub0_to_vgpr_32
379+
body: |
380+
bb.0:
381+
382+
; GCN-LABEL: name: fold_v_mov_b64_64_sub0_to_vgpr_32
383+
; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
384+
; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1412567312, implicit $exec
385+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_MOV_B32_e32_]]
386+
%0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
387+
%1:vgpr_32 = COPY killed %0.sub0
388+
SI_RETURN_TO_EPILOG %1
389+
390+
...
391+
392+
---
393+
name: fold_v_mov_b64_64_sub1_to_vgpr_32
394+
body: |
395+
bb.0:
396+
397+
; GCN-LABEL: name: fold_v_mov_b64_64_sub1_to_vgpr_32
398+
; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
399+
; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 305419896, implicit $exec
400+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_MOV_B32_e32_]]
401+
%0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
402+
%1:vgpr_32 = COPY killed %0.sub1
403+
SI_RETURN_TO_EPILOG %1
404+
405+
...
406+
407+
---
408+
name: fold_v_mov_b64_64
409+
body: |
410+
bb.0:
411+
412+
; GCN-LABEL: name: fold_v_mov_b64_64
413+
; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
414+
; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec
415+
; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_MOV_B]]
416+
%0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
417+
%1:vreg_64_align2 = COPY killed %0
418+
SI_RETURN_TO_EPILOG implicit %1
419+
420+
...
421+
422+
# FIXME:
423+
# ---
424+
# name: fold_v_mov_b64_64_to_unaligned
425+
# body: |
426+
# bb.0:
427+
# %0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
428+
# %1:vreg_64 = COPY killed %0
429+
# SI_RETURN_TO_EPILOG implicit %1
430+
# ...
431+
432+
# FIXME:
433+
# ---
434+
# name: fold_v_mov_b64_pseudo_64_to_unaligned
435+
# body: |
436+
# bb.0:
437+
# %0:vreg_64_align2 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec
438+
# %1:vreg_64 = COPY killed %0
439+
# SI_RETURN_TO_EPILOG implicit %1
440+
# ...
441+
442+
---
443+
name: fold_s_brev_b32_simm_virtual_0
444+
body: |
445+
bb.0:
446+
447+
; GCN-LABEL: name: fold_s_brev_b32_simm_virtual_0
448+
; GCN: [[S_BREV_B32_:%[0-9]+]]:sreg_32 = S_BREV_B32 1
449+
; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_BREV_B32_]]
450+
; GCN-NEXT: SI_RETURN_TO_EPILOG
451+
%0:sreg_32 = S_BREV_B32 1
452+
%1:sreg_32 = COPY killed %0
453+
SI_RETURN_TO_EPILOG
454+
455+
...
456+
457+
---
458+
name: fold_s_brev_b32_simm_virtual_1
459+
body: |
460+
bb.0:
461+
462+
; GCN-LABEL: name: fold_s_brev_b32_simm_virtual_1
463+
; GCN: [[S_BREV_B32_:%[0-9]+]]:sreg_32 = S_BREV_B32 -64
464+
; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_BREV_B32_]]
465+
; GCN-NEXT: SI_RETURN_TO_EPILOG
466+
%0:sreg_32 = S_BREV_B32 -64
467+
%1:sreg_32 = COPY killed %0
468+
SI_RETURN_TO_EPILOG
469+
470+
...
471+
472+
---
473+
name: fold_v_bfrev_b32_e32_imm
474+
body: |
475+
bb.0:
476+
477+
; GCN-LABEL: name: fold_v_bfrev_b32_e32_imm
478+
; GCN: [[V_BFREV_B32_e32_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec
479+
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_BFREV_B32_e32_]]
480+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
481+
%0:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec
482+
%1:vgpr_32 = COPY killed %0
483+
SI_RETURN_TO_EPILOG %1
484+
485+
...
486+
487+
---
488+
name: fold_v_bfrev_b32_e64_imm
489+
body: |
490+
bb.0:
491+
492+
; GCN-LABEL: name: fold_v_bfrev_b32_e64_imm
493+
; GCN: [[V_BFREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e64 1, implicit $exec
494+
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_BFREV_B32_e64_]]
495+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
496+
%0:vgpr_32 = V_BFREV_B32_e64 1, implicit $exec
497+
%1:vgpr_32 = COPY killed %0
498+
SI_RETURN_TO_EPILOG %1
499+
500+
...
501+
502+
---
503+
name: fold_s_not_b32_simm_virtual_0
504+
body: |
505+
bb.0:
506+
507+
; GCN-LABEL: name: fold_s_not_b32_simm_virtual_0
508+
; GCN: [[S_NOT_B32_:%[0-9]+]]:sreg_32 = S_NOT_B32 1, implicit-def $scc
509+
; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_NOT_B32_]]
510+
; GCN-NEXT: SI_RETURN_TO_EPILOG
511+
%0:sreg_32 = S_NOT_B32 1, implicit-def $scc
512+
%1:sreg_32 = COPY killed %0
513+
SI_RETURN_TO_EPILOG
514+
515+
...
516+
517+
---
518+
name: fold_s_not_b32_simm_virtual_1
519+
body: |
520+
bb.0:
521+
522+
; GCN-LABEL: name: fold_s_not_b32_simm_virtual_1
523+
; GCN: [[S_NOT_B32_:%[0-9]+]]:sreg_32 = S_NOT_B32 -64, implicit-def $scc
524+
; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_NOT_B32_]]
525+
; GCN-NEXT: SI_RETURN_TO_EPILOG
526+
%0:sreg_32 = S_NOT_B32 -64, implicit-def $scc
527+
%1:sreg_32 = COPY killed %0
528+
SI_RETURN_TO_EPILOG
529+
530+
...
531+
532+
---
533+
name: fold_v_not_b32_e32_imm
534+
body: |
535+
bb.0:
536+
537+
; GCN-LABEL: name: fold_v_not_b32_e32_imm
538+
; GCN: [[V_NOT_B32_e32_:%[0-9]+]]:vgpr_32 = V_NOT_B32_e32 1, implicit $exec
539+
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_NOT_B32_e32_]]
540+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
541+
%0:vgpr_32 = V_NOT_B32_e32 1, implicit $exec
542+
%1:vgpr_32 = COPY killed %0
543+
SI_RETURN_TO_EPILOG %1
544+
545+
...
546+
547+
---
548+
name: fold_v_not_b32_e64_imm
549+
body: |
550+
bb.0:
551+
552+
; GCN-LABEL: name: fold_v_not_b32_e64_imm
553+
; GCN: [[V_NOT_B32_e64_:%[0-9]+]]:vgpr_32 = V_NOT_B32_e64 1, implicit $exec
554+
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_NOT_B32_e64_]]
555+
; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
556+
%0:vgpr_32 = V_NOT_B32_e64 1, implicit $exec
557+
%1:vgpr_32 = COPY killed %0
558+
SI_RETURN_TO_EPILOG %1
559+
560+
...

0 commit comments

Comments
 (0)