[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / agpr-copy-reuse-writes.mir
blob0d566efcbc91cfbd76b721742034a6c9c5a853c4
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx908 -run-pass=prologepilog,postrapseudos -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX908 %s
4 ---
5 name: standard
6 tracksRegLiveness: true
7 body:             |
8   bb.0:
9     liveins: $vgpr0, $vgpr1
10     ; GFX908-LABEL: name: standard
11     ; GFX908: liveins: $vgpr0, $vgpr1
12     ; GFX908-NEXT: {{  $}}
13     ; GFX908-NEXT: $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3
14     ; GFX908-NEXT: $agpr1 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec
15     ; GFX908-NEXT: $agpr2 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec
16     ; GFX908-NEXT: $agpr3 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec
17     ; GFX908-NEXT: $agpr7 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec, implicit-def $agpr4_agpr5_agpr6_agpr7, implicit $agpr0_agpr1_agpr2_agpr3
18     ; GFX908-NEXT: $agpr6 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
19     ; GFX908-NEXT: $agpr5 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
20     ; GFX908-NEXT: $agpr4 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3, implicit $exec
21     ; GFX908-NEXT: S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
22     $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit-def $agpr0_agpr1_agpr2_agpr3
23     $agpr1 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec
24     $agpr2 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec
25     $agpr3 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec
26     $agpr4_agpr5_agpr6_agpr7 = COPY $agpr0_agpr1_agpr2_agpr3, implicit $exec
27     S_ENDPGM 0, implicit $agpr4_agpr5_agpr6_agpr7
28 ...
30 ---
31 name: src_is_spill
32 tracksRegLiveness: true
33 stack:
34   - { id: 0, name: '', type: spill-slot, offset: 0, size: 8, alignment: 4 }
35 machineFunctionInfo:
36   scratchRSrcReg:  $sgpr0_sgpr1_sgpr2_sgpr3
37   stackPtrOffsetReg: '$sgpr32'
38   hasSpilledVGPRs: true
39 body:             |
40   bb.0.entry:
41     ; GFX908-LABEL: name: src_is_spill
42     ; GFX908: liveins: $vgpr0, $vgpr1
43     ; GFX908-NEXT: {{  $}}
44     ; GFX908-NEXT: $agpr0_agpr1 = IMPLICIT_DEF
45     ; GFX908-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 killed $agpr0, implicit $exec, implicit-def $agpr0_agpr1, implicit $agpr0_agpr1
46     ; GFX908-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr1, implicit $exec, implicit killed $agpr0_agpr1
47     ; GFX908-NEXT: $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit-def $agpr0_agpr1
48     ; GFX908-NEXT: $agpr1 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec, implicit $agpr0_agpr1
49     ; GFX908-NEXT: $agpr3 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec, implicit-def $agpr2_agpr3, implicit $agpr0_agpr1
50     ; GFX908-NEXT: $agpr2 = V_ACCVGPR_WRITE_B32_e64 $vgpr1, implicit $exec, implicit $agpr0_agpr1, implicit $exec
51     ; GFX908-NEXT: S_ENDPGM 0
52     $agpr0_agpr1 = IMPLICIT_DEF
53     SI_SPILL_AV64_SAVE killed $agpr0_agpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)
54     $agpr0_agpr1 = SI_SPILL_AV64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)
55     $agpr2_agpr3 = COPY $agpr0_agpr1, implicit $exec
56     S_ENDPGM 0
57 ...
59 ---
60 name: overlapping_agpr
61 tracksRegLiveness: true
62 body:             |
63   bb.0:
64     liveins: $agpr0_agpr1_agpr2_agpr3
65     ; GFX908-LABEL: name: overlapping_agpr
66     ; GFX908: liveins: $agpr0_agpr1_agpr2_agpr3
67     ; GFX908-NEXT: {{  $}}
68     ; GFX908-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
69     ; GFX908-NEXT: $agpr4 = V_ACCVGPR_WRITE_B32_e64 killed $vgpr1, implicit $exec, implicit-def $agpr1_agpr2_agpr3_agpr4
70     ; GFX908-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
71     ; GFX908-NEXT: $agpr3 = V_ACCVGPR_WRITE_B32_e64 killed $vgpr0, implicit $exec
72     ; GFX908-NEXT: $vgpr2 = V_ACCVGPR_READ_B32_e64 $agpr1, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
73     ; GFX908-NEXT: $agpr2 = V_ACCVGPR_WRITE_B32_e64 killed $vgpr2, implicit $exec
74     ; GFX908-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr0, implicit $exec, implicit $agpr0_agpr1_agpr2_agpr3
75     ; GFX908-NEXT: $agpr1 = V_ACCVGPR_WRITE_B32_e64 killed $vgpr1, implicit $exec, implicit $exec
76     ; GFX908-NEXT: S_ENDPGM 0, implicit $agpr1_agpr2_agpr3_agpr4
77     $agpr1_agpr2_agpr3_agpr4 = COPY $agpr0_agpr1_agpr2_agpr3, implicit $exec
78     S_ENDPGM 0, implicit $agpr1_agpr2_agpr3_agpr4
79 ...