[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / vmem-vcc-hazard.mir
blob182ef1f72ac46b7d06a58d05652de723e2fe89da
1 # RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
3 # GCN-LABEL: name: vmem_vcc_fallthrough
4 # GCN:      bb.1:
5 # GCN-NEXT: S_NOP 4
6 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
7 ---
8 name:            vmem_vcc_fallthrough
9 body:             |
10   bb.0:
11     successors: %bb.1
13     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
14     $vgpr0 = IMPLICIT_DEF
15     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
17   bb.1:
18     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
19 ...
20 # GCN-LABEL: name: vmem_vcc_branch_to_next
21 # GCN:      bb.1:
22 # GCN-NEXT: S_NOP 3
23 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
24 ---
25 name:            vmem_vcc_branch_to_next
26 body:             |
27   bb.0:
28     successors: %bb.1
30     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
31     $vgpr0 = IMPLICIT_DEF
32     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
33     S_BRANCH %bb.1
35   bb.1:
36     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
37 ...
38 # GCN-LABEL: name: vmem_vcc_fallthrough_no_hazard_too_far
39 # GCN:      bb.1:
40 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
41 ---
42 name:            vmem_vcc_fallthrough_no_hazard_too_far
43 body:             |
44   bb.0:
45     successors: %bb.1
47     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
48     $vgpr0 = IMPLICIT_DEF
49     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
50     $sgpr0 = S_MOV_B32 0
51     $sgpr0 = S_MOV_B32 0
52     $sgpr0 = S_MOV_B32 0
53     $sgpr0 = S_MOV_B32 0
54     $sgpr0 = S_MOV_B32 0
56   bb.1:
57     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
58 ...
59 # GCN-LABEL: name: vmem_vcc_fallthrough_no_hazard_nops
60 # GCN:      bb.1:
61 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
62 ---
63 name:            vmem_vcc_fallthrough_no_hazard_nops
64 body:             |
65   bb.0:
66     successors: %bb.1
68     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
69     $vgpr0 = IMPLICIT_DEF
70     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
71     S_NOP 4
73   bb.1:
74     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
75 ...
76 # GCN-LABEL: name: vmem_vcc_branch_around
77 # GCN:      bb.2:
78 # GCN-NEXT: S_NOP 3
79 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
80 ---
81 name:            vmem_vcc_branch_around
82 body:             |
83   bb.0:
84     successors: %bb.2
86     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
87     $vgpr0 = IMPLICIT_DEF
88     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
89     S_BRANCH %bb.2
91   bb.1:
92     successors: %bb.2
94     S_NOP 0
95     S_NOP 0
96     S_NOP 0
97     S_NOP 0
99   bb.2:
100     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
102 # GCN-LABEL: name: vmem_vcc_branch_backedge
103 # GCN:      S_NOP 3
104 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
106 name:            vmem_vcc_branch_backedge
107 body:             |
108   bb.0:
109     successors: %bb.1
111     $vgpr0 = IMPLICIT_DEF
112     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
113     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
115   bb.1:
116     $vgpr0 = IMPLICIT_DEF
117     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
118     S_BRANCH %bb.0
120 # GCN-LABEL: name: vmem_vcc_min_of_two
121 # GCN:      bb.2:
122 # GCN-NEXT: S_NOP 4
123 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
125 name:            vmem_vcc_min_of_two
126 body:             |
127   bb.0:
128     successors: %bb.2
130     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
131     $vgpr0 = IMPLICIT_DEF
132     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
133     S_NOP 0
134     S_BRANCH %bb.2
136   bb.1:
137     successors: %bb.2
139     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
141   bb.2:
142     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
144 # GCN-LABEL: name: vmem_vcc_self_loop
145 # GCN:      S_NOP 3
146 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
148 name:            vmem_vcc_self_loop
149 body:             |
150   bb.0:
151     successors: %bb.0
153     $vgpr0 = IMPLICIT_DEF
154     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
155     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
156     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
157     S_BRANCH %bb.0
159 # GCN-LABEL: name: vmem_vcc_min_of_two_self_loop1
160 # GCN:      bb.1:
161 # GCN:      $sgpr0 = S_MOV_B32 0
162 # GCN-NEXT: S_NOP 3
163 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
165 name:            vmem_vcc_min_of_two_self_loop1
166 body:             |
167   bb.0:
168     successors: %bb.1
170     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
171     $vgpr0 = IMPLICIT_DEF
172     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
174   bb.1:
175     successors: %bb.1
177     $sgpr0 = S_MOV_B32 0
178     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
179     $vgpr1 = V_ADDC_U32_e32 $vgpr1, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
180     S_BRANCH %bb.1
182 # GCN-LABEL: name: vmem_vcc_min_of_two_self_loop2
183 # GCN:      bb.1:
184 # GCN:      $sgpr0 = S_MOV_B32 0
185 # GCN-NEXT: S_NOP 2
186 # GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN
188 name:            vmem_vcc_min_of_two_self_loop2
189 body:             |
190   bb.0:
191     successors: %bb.1
193     $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF
194     $vgpr0 = IMPLICIT_DEF
195     $vgpr1 = V_ADDC_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $vcc, implicit $exec
196     S_NOP 0
198   bb.1:
199     successors: %bb.1
201     $sgpr0 = S_MOV_B32 0
202     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $vcc_lo, 0, 0, 0, 0, implicit $exec
203     $vgpr1 = V_ADDC_U32_e32 $vgpr1, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
204     S_BRANCH %bb.1