Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / gfx940-hazards.mir
blob348beb7bcf3cced6012e63b8152f07ce2505f9c9
1 # RUN: llc -mtriple=amdgcn -mcpu=gfx940 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s
3 # GCN-LABEL: name: trans32_write_non_trans32_read
4 # GCN:      V_RCP_F32
5 # GCN-NEXT: S_NOP 0
6 # GCN-NEXT: V_MUL_F32
7 name:            trans32_write_non_trans32_read
8 body:             |
9   bb.0:
10     $vgpr1 = V_RCP_F32_e32 $vgpr0, implicit $mode, implicit $exec
11     $vgpr2 = V_MUL_F32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec
12 ...
14 # GCN-LABEL: name: trans32_write_trans_read
15 # GCN:      V_SIN_F32
16 # GCN-NEXT: V_COS_F32
17 name:            trans32_write_trans_read
18 body:             |
19   bb.0:
20     $vgpr0 = V_SIN_F32_e32 $vgpr1, implicit $mode, implicit $exec
21     $vgpr2 = V_COS_F32_e32 $vgpr0, implicit $mode, implicit $exec
22 ...
24 # GCN-LABEL: name: trans64_write_non_trans_read
25 # GCN:      V_RCP_F64
26 # GCN-NEXT: S_NOP 0
27 # GCN-NEXT: V_OR_B32
28 name:            trans64_write_non_trans_read
29 body:             |
30   bb.0:
31     $vgpr0_vgpr1 = V_RCP_F64_e32 $vgpr2_vgpr3, implicit $mode, implicit $exec
32     $vgpr4 = V_OR_B32_e32 $vgpr1, $vgpr5, implicit $mode, implicit $exec
33 ...
35 # GCN-LABEL: name: trans32_write_non_trans64_read
36 # GCN:      V_EXP_F32
37 # GCN-NEXT: S_NOP 0
38 # GCN-NEXT: V_MUL_F64
39 name:            trans32_write_non_trans64_read
40 body:             |
41   bb.0:
42     $vgpr1 = V_EXP_F32_e32 $vgpr0, implicit $mode, implicit $exec
43     $vgpr2_vgpr3 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec
44 ...
46 # GCN-LABEL: name: opsel_hi16_write_valu_read
47 # GCN:      V_ADD_I16
48 # GCN-NEXT: S_NOP 0
49 # GCN-NEXT: V_MUL_F64
50 name:            opsel_hi16_write_valu_read
51 body:             |
52   bb.0:
53     $vgpr0 = V_ADD_I16_e64 8, $vgpr1, 0, $vgpr2, 0, 0, implicit $exec
54     $vgpr4_vgpr5 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec
55 ...
57 # GCN-LABEL: name: opsel_lo16_write_valu_read
58 # GCN:      V_ADD_I16
59 # GCN-NEXT: V_MUL_F64
60 name:            opsel_lo16_write_valu_read
61 body:             |
62   bb.0:
63     $vgpr0 = V_ADD_I16_e64 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $exec
64     $vgpr4_vgpr5 = V_MUL_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec
65 ...
67 # GCN-LABEL: name: sdwa_hi16_write_valu_read
68 # GCN:      V_MOV_B32_sdwa
69 # GCN-NEXT: S_NOP 0
70 # GCN-NEXT: V_MOV_B32_e32
71 name:            sdwa_hi16_write_valu_read
72 body:             |
73   bb.0:
74     $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 5, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec
75     $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec
76 ...
78 # GCN-LABEL: name: sdwa_lo16_write_valu_read
79 # GCN:      V_MOV_B32_sdwa
80 # GCN-NEXT: S_NOP 0
81 # GCN-NEXT: V_MOV_B32_e32
82 name:            sdwa_lo16_write_valu_read
83 body:             |
84   bb.0:
85     $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 4, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec
86     $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec
87 ...
89 # GCN-LABEL: name: sdwa_dword_write_valu_read
90 # GCN:      V_MOV_B32_sdwa
91 # GCN-NEXT: V_MOV_B32_e32
92 name:            sdwa_dword_write_valu_read
93 body:             |
94   bb.0:
95     $vgpr0 = V_MOV_B32_sdwa 0, $vgpr1, 0, 6, 2, 5, implicit $vgpr0(tied-def 0), implicit $exec
96     $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec
97 ...
99 # GCN-LABEL: name: sdwa_lo16_no_write_valu_read
100 # GCN:      V_CMP_EQ_U32_sdwa
101 # GCN-NEXT: V_MOV_B32_e32
102 name:            sdwa_lo16_no_write_valu_read
103 body:             |
104   bb.0:
105     $vcc = V_CMP_EQ_U32_sdwa 0, $vgpr1, 0, $vgpr0, 0, 5, 2, implicit $exec
106     $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec
109 # GCN-LABEL: name: valu_write_sgpr_valu_read_as_constant
110 # GCN:      V_READFIRSTLANE_B32
111 # GCN-NEXT: S_NOP 1
112 # GCN-NEXT: V_MOV_B32_e32
113 name:            valu_write_sgpr_valu_read_as_constant
114 body:             |
115   bb.0:
116     $sgpr0 = V_READFIRSTLANE_B32 $vgpr0, implicit $exec
117     $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec
120 # GCN-LABEL: name: valu_write_vcc_valu_read_as_constant
121 # GCN:      V_CMP_NE_U32_e32
122 # GCN-NEXT: S_NOP 1
123 # GCN-NEXT: V_ADDC_U32_e32
124 name:            valu_write_vcc_valu_read_as_constant
125 body:             |
126   bb.0:
127     V_CMP_NE_U32_e32 0, $vgpr0, implicit-def $vcc, implicit $exec
128     $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
131 # GCN-LABEL: name: valu_write_sgpr_readlane_read_as_laneselect
132 # GCN:      V_READFIRSTLANE_B32
133 # GCN-NEXT: S_NOP 3
134 # GCN-NEXT: V_READLANE_B32
135 name:            valu_write_sgpr_readlane_read_as_laneselect
136 body:             |
137   bb.0:
138     $sgpr0 = V_READFIRSTLANE_B32 $vgpr0, implicit $exec
139     $sgpr1 = V_READLANE_B32 $vgpr1, $sgpr0, implicit $exec
142 # GCN-LABEL: name: valu_write_sgpr_writelane_read_as_laneselect
143 # GCN:      V_ADD_CO_U32_e64
144 # GCN-NEXT: S_NOP 3
145 # GCN-NEXT: V_WRITELANE_B32
146 name:            valu_write_sgpr_writelane_read_as_laneselect
147 body:             |
148   bb.0:
149     $vgpr0, $sgpr0_sgpr1 = V_ADD_CO_U32_e64 $vgpr0, 1, 0, implicit $exec
150     $vgpr1 = V_WRITELANE_B32 0, $sgpr0, $vgpr1, implicit $exec
153 # GCN-LABEL: name: vcmpx_write_exec_valu_read_as_constant
154 # GCN:      V_CMPX_EQ_I32_e32
155 # GCN-NEXT: S_NOP 1
156 # GCN-NEXT: V_MOV_B32_e32
157 name:            vcmpx_write_exec_valu_read_as_constant
158 body:             |
159   bb.0:
160     implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec
161     $vgpr1 = V_MOV_B32_e32 $exec_lo, implicit $exec
164 # GCN-LABEL: name: vcmpx_write_exec_readlane
165 # GCN:      V_CMPX_EQ_I32_e32
166 # GCN-NEXT: S_NOP 3
167 # GCN-NEXT: V_READLANE_B32
168 name:            vcmpx_write_exec_readlane
169 body:             |
170   bb.0:
171     implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec
172     $sgpr1 = V_READLANE_B32 $vgpr1, 0, implicit $exec
175 # GCN-LABEL: name: vcmpx_write_exec_readfirstlane
176 # GCN:      V_CMPX_EQ_I32_e32
177 # GCN-NEXT: S_NOP 3
178 # GCN-NEXT: V_READFIRSTLANE_B32
179 name:            vcmpx_write_exec_readfirstlane
180 body:             |
181   bb.0:
182     implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec
183     $sgpr1 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec
186 # GCN-LABEL: name: vcmpx_write_exec_writelane
187 # GCN:      V_CMPX_EQ_I32_e32
188 # GCN-NEXT: S_NOP 3
189 # GCN-NEXT: V_WRITELANE_B32
190 name:            vcmpx_write_exec_writelane
191 body:             |
192   bb.0:
193     implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec
194     $vgpr1 = V_WRITELANE_B32 0, $sgpr0, $vgpr1, implicit $exec
197 # GCN-LABEL: name: valu_write_vgpr_readlane_read
198 # GCN:      V_ADD_CO_U32_e32
199 # GCN-NEXT: S_NOP 0
200 # GCN-NEXT: V_READLANE_B32
201 name:            valu_write_vgpr_readlane_read
202 body:             |
203   bb.0:
204     $vgpr1 = V_ADD_CO_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $exec
205     $sgpr1 = V_READLANE_B32 $vgpr1, $sgpr0, implicit $exec
208 # GCN-LABEL: name: valu_write_vgpr_readfirstlane_read
209 # GCN:      V_ADD_CO_U32_e32
210 # GCN-NEXT: S_NOP 0
211 # GCN-NEXT: V_READFIRSTLANE_B32
212 name:            valu_write_vgpr_readfirstlane_read
213 body:             |
214   bb.0:
215     $vgpr1 = V_ADD_CO_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $exec
216     $sgpr1 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec
219 # GCN-LABEL: name: global_store_dwordx4_data_hazard
220 # GCN:      GLOBAL_STORE_DWORDX4
221 # GCN-NEXT: S_NOP 1
222 # GCN-NEXT: V_MOV_B32_e32
223 name: global_store_dwordx4_data_hazard
225 body:             |
226   bb.0:
227     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
228     GLOBAL_STORE_DWORDX4 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec
229     $vgpr2 = V_MOV_B32_e32 0, implicit $exec
232 # GCN-LABEL: name: global_store_dwordx3_data_hazard
233 # GCN:      GLOBAL_STORE_DWORDX3
234 # GCN-NEXT: S_NOP 1
235 # GCN-NEXT: V_MOV_B32_e32
236 name: global_store_dwordx3_data_hazard
238 body:             |
239   bb.0:
240     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
241     GLOBAL_STORE_DWORDX3 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4, 0, 0, implicit $exec
242     $vgpr2 = V_MOV_B32_e32 0, implicit $exec