Skip to content

Commit 6c5b635

Browse files
committed
AMDGPU: Add a few more missing test for AGPR tuple copying
1 parent ad171d2 commit 6c5b635

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

llvm/test/CodeGen/AMDGPU/accvgpr-copy.mir

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
define amdgpu_kernel void @a2_to_v2() #0 { ret void }
77
define amdgpu_kernel void @a3_to_v3() #0 { ret void }
88
define amdgpu_kernel void @a4_to_v4() #0 { ret void }
9+
define amdgpu_kernel void @a8_to_v8() #0 { ret void }
910
define amdgpu_kernel void @a16_to_v16() #0 { ret void }
1011

1112
define amdgpu_kernel void @v_to_a() #0 { ret void }
@@ -21,12 +22,14 @@
2122
define amdgpu_kernel void @s4_to_a4() #0 { ret void }
2223
define amdgpu_kernel void @s6_to_a6() #0 { ret void }
2324
define amdgpu_kernel void @s8_to_a8() #0 { ret void }
25+
define amdgpu_kernel void @s16_to_a16() #0 { ret void }
2426

2527
define amdgpu_kernel void @a_to_a() #0 { ret void }
2628
define amdgpu_kernel void @a2_to_a2() #0 { ret void }
2729
define amdgpu_kernel void @a3_to_a3() #0 { ret void }
2830
define amdgpu_kernel void @a4_to_a4() #0 { ret void }
2931
define amdgpu_kernel void @a8_to_a8() #0 { ret void }
32+
define amdgpu_kernel void @a16_to_a16() #0 { ret void }
3033

3134
define amdgpu_kernel void @a_to_a_spill() #0 { ret void }
3235
attributes #0 = { "amdgpu-flat-work-group-size"="1,256" }
@@ -96,6 +99,28 @@ body: |
9699
S_ENDPGM 0, implicit $vgpr0_vgpr1_vgpr2_vgpr3
97100
...
98101

102+
---
103+
name: a8_to_v8
104+
tracksRegLiveness: true
105+
body: |
106+
bb.0:
107+
liveins: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
108+
109+
; GCN-LABEL: name: a8_to_v8
110+
; GCN: liveins: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
111+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 $agpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
112+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
113+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
114+
; GCN: $vgpr3 = V_ACCVGPR_READ_B32 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
115+
; GCN: $vgpr4 = V_ACCVGPR_READ_B32 $agpr4, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
116+
; GCN: $vgpr5 = V_ACCVGPR_READ_B32 $agpr5, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
117+
; GCN: $vgpr6 = V_ACCVGPR_READ_B32 $agpr6, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
118+
; GCN: $vgpr7 = V_ACCVGPR_READ_B32 $agpr7, implicit $exec, implicit killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, implicit $exec
119+
; GCN: S_ENDPGM 0, implicit $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
120+
$vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, implicit $exec
121+
S_ENDPGM 0, implicit $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
122+
...
123+
99124
---
100125
name: a16_to_v16
101126
tracksRegLiveness: true
@@ -363,6 +388,51 @@ body: |
363388
S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7
364389
...
365390

391+
---
392+
name: s16_to_a16
393+
tracksRegLiveness: true
394+
body: |
395+
bb.0:
396+
liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
397+
; GCN-LABEL: name: s16_to_a16
398+
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15
399+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
400+
; GCN: $agpr0 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
401+
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec
402+
; GCN: $agpr1 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
403+
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr2, implicit $exec
404+
; GCN: $agpr2 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
405+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr3, implicit $exec
406+
; GCN: $agpr3 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
407+
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr4, implicit $exec
408+
; GCN: $agpr4 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
409+
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec
410+
; GCN: $agpr5 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
411+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr6, implicit $exec
412+
; GCN: $agpr6 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
413+
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
414+
; GCN: $agpr7 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
415+
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr8, implicit $exec
416+
; GCN: $agpr8 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
417+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr9, implicit $exec
418+
; GCN: $agpr9 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
419+
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr10, implicit $exec
420+
; GCN: $agpr10 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
421+
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr11, implicit $exec
422+
; GCN: $agpr11 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
423+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr12, implicit $exec
424+
; GCN: $agpr12 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
425+
; GCN: $vgpr1 = V_MOV_B32_e32 killed $sgpr13, implicit $exec
426+
; GCN: $agpr13 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
427+
; GCN: $vgpr2 = V_MOV_B32_e32 killed $sgpr14, implicit $exec
428+
; GCN: $agpr14 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
429+
; GCN: $vgpr0 = V_MOV_B32_e32 killed $sgpr15, implicit $exec
430+
; GCN: $agpr15 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec, implicit $exec
431+
; GCN: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
432+
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, implicit $exec
433+
S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
434+
...
435+
366436
---
367437
name: a_to_a
368438
tracksRegLiveness: true
@@ -464,6 +534,52 @@ body: |
464534
S_ENDPGM 0, implicit $agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15
465535
...
466536

537+
---
538+
name: a16_to_a16
539+
tracksRegLiveness: true
540+
body: |
541+
bb.0:
542+
543+
; GCN-LABEL: name: a16_to_a16
544+
; GCN: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = IMPLICIT_DEF
545+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr15, implicit $exec
546+
; GCN: $agpr31 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
547+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr14, implicit $exec
548+
; GCN: $agpr30 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
549+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr13, implicit $exec
550+
; GCN: $agpr29 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
551+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr12, implicit $exec
552+
; GCN: $agpr28 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
553+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr11, implicit $exec
554+
; GCN: $agpr27 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
555+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr10, implicit $exec
556+
; GCN: $agpr26 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
557+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr9, implicit $exec
558+
; GCN: $agpr25 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
559+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr8, implicit $exec
560+
; GCN: $agpr24 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
561+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr7, implicit $exec
562+
; GCN: $agpr23 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
563+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr6, implicit $exec
564+
; GCN: $agpr22 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
565+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr5, implicit $exec
566+
; GCN: $agpr21 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
567+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr4, implicit $exec
568+
; GCN: $agpr20 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
569+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr3, implicit $exec
570+
; GCN: $agpr19 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec
571+
; GCN: $vgpr0 = V_ACCVGPR_READ_B32 killed $agpr2, implicit $exec
572+
; GCN: $agpr18 = V_ACCVGPR_WRITE_B32 killed $vgpr0, implicit $exec
573+
; GCN: $vgpr2 = V_ACCVGPR_READ_B32 killed $agpr1, implicit $exec
574+
; GCN: $agpr17 = V_ACCVGPR_WRITE_B32 killed $vgpr2, implicit $exec
575+
; GCN: $vgpr1 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
576+
; GCN: $agpr16 = V_ACCVGPR_WRITE_B32 killed $vgpr1, implicit $exec, implicit $exec
577+
; GCN: S_ENDPGM 0, implicit $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31
578+
$agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = IMPLICIT_DEF
579+
$agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31 = COPY killed $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, implicit $exec
580+
S_ENDPGM 0, implicit $agpr16_agpr17_agpr18_agpr19_agpr20_agpr21_agpr22_agpr23_agpr24_agpr25_agpr26_agpr27_agpr28_agpr29_agpr30_agpr31
581+
...
582+
467583
# Using last vgpr255 will raise error about absence of emergency spill slot.
468584

469585
---

0 commit comments

Comments
 (0)