Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / mai-hazards-gfx90a.mir
blob8be7308c8a6e0000af97c9ddc3a7cdfed2b3a75a
1 # RUN: llc -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s
3 # GCN-LABEL: name: valu_write_vgpr_sgemm_mfma_read
4 # GCN:      V_MOV_B32
5 # GCN:      V_MOV_B32
6 # GCN-NEXT: S_NOP 1
7 # GCN-NEXT: V_MFMA
8 name:            valu_write_vgpr_sgemm_mfma_read
9 body:             |
10   bb.0:
11     $vgpr0 = V_MOV_B32_e32 1, implicit $exec
12     $vgpr1 = V_MOV_B32_e32 1, implicit $exec
13     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
14 ...
15 # GCN-LABEL: name: valu_write_agpr_sgemm_mfma_read
16 # GCN:      V_ACCVGPR_WRITE_B32_e64
17 # GCN-NEXT: S_NOP 1
18 # GCN-NEXT: V_MFMA
19 name:            valu_write_agpr_sgemm_mfma_read
20 body:             |
21   bb.0:
22     $vgpr0 = IMPLICIT_DEF
23     $agpr4 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
24     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $agpr4, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
25 ...
26 # GCN-LABEL: name: valu_write_vgpr_dgemm_mfma_read
27 # GCN:      V_MOV_B32
28 # GCN:      V_MOV_B32
29 # GCN-NEXT: S_NOP 1
30 # GCN-NEXT: V_MFMA
31 name:            valu_write_vgpr_dgemm_mfma_read
32 body:             |
33   bb.0:
34     $vgpr0 = V_MOV_B32_e32 1, implicit $exec
35     $vgpr1 = V_MOV_B32_e32 1, implicit $exec
36     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
37 ...
38 # GCN-LABEL: name: accmov_write_agpr_sgemm_mfma_read
39 # GCN:      V_ACCVGPR_MOV_B32
40 # GCN-NEXT: S_NOP 1
41 # GCN-NEXT: V_MFMA
42 name:            accmov_write_agpr_sgemm_mfma_read
43 body:             |
44   bb.0:
45     $vgpr0 = IMPLICIT_DEF
46     $agpr4 = V_ACCVGPR_MOV_B32 $agpr5, implicit $exec
47     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $agpr4, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
48 ...
49 # GCN-LABEL: name: sgemm_mfma_write_agpr_mfma_read_same_agpr_as_srcc
50 # GCN:      V_MFMA
51 # GCN-NEXT: V_MFMA
52 name:            sgemm_mfma_write_agpr_mfma_read_same_agpr_as_srcc
53 body:             |
54   bb.0:
55     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
56     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
57 ...
58 # GCN-LABEL: name: sgemm_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
59 # GCN:      V_MFMA
60 # GCN-NEXT: V_MFMA
61 name:            sgemm_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
62 body:             |
63   bb.0:
64     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr5, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
65     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr5, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
66 ...
67 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
68 # GCN:      V_MFMA
69 # GCN-NEXT: V_MFMA
70 name:            dgemm16x16_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
71 body:             |
72   bb.0:
73     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
74     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
75 ...
76 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
77 # GCN:      V_MFMA
78 # GCN-NEXT: S_NOP 3
79 # GCN-NEXT: V_MFMA
80 name:            dgemm4x4_mfma_write_vgpr_mfma_read_same_vgpr_as_srcc
81 body:             |
82   bb.0:
83     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
84     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
85 ...
86 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_mfma_read_overlap
87 # GCN:      V_MFMA
88 # GCN-NEXT: S_NOP 1
89 # GCN-NEXT: V_MFMA
90 name:            sgemm4x4_mfma_write_agpr_mfma_read_overlap
91 body:             |
92   bb.0:
93     $agpr2_agpr3_agpr4_agpr5 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
94     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
95 ...
96 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_mfma_read_overlap
97 # GCN:      V_MFMA
98 # GCN-NEXT: S_NOP 1
99 # GCN-NEXT: V_MFMA
100 name:            sgemm4x4_mfma_write_vgpr_mfma_read_overlap
101 body:             |
102   bb.0:
103     $vgpr2_vgpr3_vgpr4_vgpr5 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr6, $vgpr7, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
104     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr6, $vgpr7, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
106 # GCN-LABEL: name: sgemm16x16_mfma_write_agpr_mfma_read_overlap
107 # GCN:      V_MFMA
108 # GCN-NEXT: S_NOP 7
109 # GCN-NEXT: V_MFMA
110 name:            sgemm16x16_mfma_write_agpr_mfma_read_overlap
111 body:             |
112   bb.0:
113     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17 = V_MFMA_F32_16X16X1F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
114     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
116 # GCN-LABEL: name: sgemm16x16_mfma_write_vgpr_mfma_read_overlap
117 # GCN:      V_MFMA
118 # GCN-NEXT: S_NOP 7
119 # GCN-NEXT: V_MFMA
120 name:            sgemm16x16_mfma_write_vgpr_mfma_read_overlap
121 body:             |
122   bb.0:
123     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
124     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
126 # GCN-LABEL: name: sgemm32x32_mfma_write_agpr_mfma_read_overlap
127 # GCN:      V_MFMA
128 # GCN-NEXT: S_NOP 7
129 # GCN-NEXT: S_NOP 7
130 # GCN-NEXT: V_MFMA
131 name:            sgemm32x32_mfma_write_agpr_mfma_read_overlap
132 body:             |
133   bb.0:
134     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17 = V_MFMA_F32_32X32X2F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
135     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_32X32X2F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
137 # GCN-LABEL: name: sgemm32x32_mfma_write_vgpr_mfma_read_overlap
138 # GCN:      V_MFMA
139 # GCN-NEXT: S_NOP 7
140 # GCN-NEXT: S_NOP 7
141 # GCN-NEXT: V_MFMA
142 name:            sgemm32x32_mfma_write_vgpr_mfma_read_overlap
143 body:             |
144   bb.0:
145     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
146     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
148 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_mfma_read_overlap
149 # GCN:      V_MFMA
150 # GCN-NEXT: S_NOP 7
151 # GCN-NEXT: S_NOP 0
152 # GCN-NEXT: V_MFMA
153 name:            dgemm16x16_mfma_write_vgpr_mfma_read_overlap
154 body:             |
155   bb.0:
156     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
157     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
159 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_mfma_read_overlap
160 # GCN:      V_MFMA
161 # GCN-NEXT: S_NOP 3
162 # GCN-NEXT: V_MFMA
163 name:            dgemm4x4_mfma_write_vgpr_mfma_read_overlap
164 body:             |
165   bb.0:
166     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
167     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
169 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_sgemm_mfma_read_overlap
170 # GCN:      V_MFMA
171 # GCN-NEXT: V_MFMA
172 name:            dgemm16x16_mfma_write_vgpr_sgemm_mfma_read_overlap
173 body:             |
174   bb.0:
175     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
176     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr10, $vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
178 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_sgemm_mfma_read_overlap
179 # GCN:      V_MFMA
180 # GCN-NEXT: V_MFMA
181 name:            dgemm4x4_mfma_write_vgpr_sgemm_mfma_read_overlap
182 body:             |
183   bb.0:
184     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
185     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr10, $vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
187 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_dgemm_mfma_read_overlap
188 # GCN:      V_MFMA
189 # GCN-NEXT: S_NOP 2
190 # GCN-NEXT: V_MFMA
191 name:            sgemm4x4_mfma_write_vgpr_dgemm_mfma_read_overlap
192 body:             |
193   bb.0:
194     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr10, $vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
195     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
197 # GCN-LABEL: name: sgemm16x16_mfma_write_vgpr_dgemm_mfma_read_overlap
198 # GCN:      V_MFMA
199 # GCN-NEXT: S_NOP 7
200 # GCN-NEXT: S_NOP 0
201 # GCN-NEXT: V_MFMA
202 name:            sgemm16x16_mfma_write_vgpr_dgemm_mfma_read_overlap
203 body:             |
204   bb.0:
205     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
206     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr20_vgpr21, $vgpr20_vgpr21, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
208 # GCN-LABEL: name: sgemm32x32_mfma_write_vgpr_dgemm_mfma_read_overlap
209 # GCN:      V_MFMA
210 # GCN-NEXT: S_NOP 7
211 # GCN-NEXT: S_NOP 7
212 # GCN-NEXT: S_NOP 0
213 # GCN-NEXT: V_MFMA
214 name:            sgemm32x32_mfma_write_vgpr_dgemm_mfma_read_overlap
215 body:             |
216   bb.0:
217     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr26, $vgpr27, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
218     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr20_vgpr21, $vgpr20_vgpr21, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
220 # GCN-LABEL: name: sgemm16x16_mfma_write_agpr_mfma_read_partial
221 # GCN:      V_MFMA
222 # GCN-NEXT: S_NOP 7
223 # GCN-NEXT: V_MFMA
224 name:            sgemm16x16_mfma_write_agpr_mfma_read_partial
225 body:             |
226   bb.0:
227     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
228     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
230 # GCN-LABEL: name: sgemm16x16_mfma_write_vgpr_mfma_read_partial
231 # GCN:      V_MFMA
232 # GCN-NEXT: S_NOP 7
233 # GCN-NEXT: V_MFMA
234 name:            sgemm16x16_mfma_write_vgpr_mfma_read_partial
235 body:             |
236   bb.0:
237     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
238     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
240 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_mfma_srca_read_overlap
241 # GCN:      V_MFMA
242 # GCN-NEXT: S_NOP 4
243 # GCN-NEXT: V_MFMA
244 name:            sgemm4x4_mfma_write_agpr_mfma_srca_read_overlap
245 body:             |
246   bb.0:
247     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
248     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $agpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
250 # GCN-LABEL: name: sgemm16x16_mfma_write_agpr_mfma_srca_read_overlap
251 # GCN:      V_MFMA
252 # GCN-NEXT: S_NOP 7
253 # GCN-NEXT: S_NOP 2
254 # GCN-NEXT: V_MFMA
255 name:            sgemm16x16_mfma_write_agpr_mfma_srca_read_overlap
256 body:             |
257   bb.0:
258     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
259     $agpr20_agpr21_agpr22_agpr23 = V_MFMA_F32_4X4X1F32_e64 $agpr1, $vgpr0, $agpr20_agpr21_agpr22_agpr23, 0, 0, 0, implicit $mode, implicit $exec
261 # GCN-LABEL: name: sgemm32x32_mfma_write_agpr_mfma_srca_read_overlap
262 # GCN:      V_MFMA
263 # GCN-NEXT: S_NOP 7
264 # GCN-NEXT: S_NOP 7
265 # GCN-NEXT: S_NOP 2
266 # GCN-NEXT: V_MFMA
267 name:            sgemm32x32_mfma_write_agpr_mfma_srca_read_overlap
268 body:             |
269   bb.0:
270     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_32X32X2F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
271     $agpr20_agpr21_agpr22_agpr23 = V_MFMA_F32_4X4X1F32_e64 $agpr1, $vgpr0, $agpr20_agpr21_agpr22_agpr23, 0, 0, 0, implicit $mode, implicit $exec
273 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_mfma_srca_read_overlap
274 # GCN:      V_MFMA
275 # GCN-NEXT: S_NOP 4
276 # GCN-NEXT: V_MFMA
277 name:            sgemm4x4_mfma_write_vgpr_mfma_srca_read_overlap
278 body:             |
279   bb.0:
280     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
281     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr0, $agpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
283 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_dmfma4x4_srca_read_overlap
284 # GCN:      V_MFMA
285 # GCN-NEXT: S_NOP 4
286 # GCN-NEXT: V_MFMA
287 name:            sgemm4x4_mfma_write_vgpr_dmfma4x4_srca_read_overlap
288 body:             |
289   bb.0:
290     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
291     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
293 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_dmfma16x16_srca_read_overlap
294 # GCN:      V_MFMA
295 # GCN-NEXT: S_NOP 4
296 # GCN-NEXT: V_MFMA
297 name:            sgemm4x4_mfma_write_vgpr_dmfma16x16_srca_read_overlap
298 body:             |
299   bb.0:
300     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
301     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
303 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_mfma_srca_read_overlap
304 # GCN:      V_MFMA
305 # GCN-NEXT: S_NOP 5
306 # GCN-NEXT: V_MFMA
307 name:            dgemm4x4_mfma_write_vgpr_mfma_srca_read_overlap
308 body:             |
309   bb.0:
310     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
311     $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr2_vgpr3, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
313 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_mfma_srca_read_overlap
314 # GCN:      V_MFMA
315 # GCN-NEXT: S_NOP 7
316 # GCN-NEXT: S_NOP 2
317 # GCN-NEXT: V_MFMA
318 name:            dgemm16x16_mfma_write_vgpr_mfma_srca_read_overlap
319 body:             |
320   bb.0:
321     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
322     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
324 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_sgemm_mfma_srca_read_overlap
325 # GCN:      V_MFMA
326 # GCN-NEXT: S_NOP 5
327 # GCN-NEXT: V_MFMA
328 name:            dgemm4x4_mfma_write_vgpr_sgemm_mfma_srca_read_overlap
329 body:             |
330   bb.0:
331     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
332     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
334 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_sgemm_mfma_srca_read_overlap
335 # GCN:      V_MFMA
336 # GCN-NEXT: S_NOP 7
337 # GCN-NEXT: S_NOP 2
338 # GCN-NEXT: V_MFMA
339 name:            dgemm16x16_mfma_write_vgpr_sgemm_mfma_srca_read_overlap
340 body:             |
341   bb.0:
342     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
343     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
345 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_dgemm_mfma_srca_read_overlap
346 # GCN:      V_MFMA
347 # GCN-NEXT: S_NOP 4
348 # GCN-NEXT: V_MFMA
349 name:            sgemm4x4_mfma_write_vgpr_dgemm_mfma_srca_read_overlap
350 body:             |
351   bb.0:
352     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
353     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
355 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_mfma_srcb_read_overlap
356 # GCN:      V_MFMA
357 # GCN-NEXT: S_NOP 4
358 # GCN-NEXT: V_MFMA
359 name:            sgemm4x4_mfma_write_agpr_mfma_srcb_read_overlap
360 body:             |
361   bb.0:
362     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
363     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $agpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
365 # GCN-LABEL: name: sgemm4x4_mfma_write_vgpr_mfma_srcb_read_overlap
366 # GCN:      V_MFMA
367 # GCN-NEXT: S_NOP 4
368 # GCN-NEXT: V_MFMA
369 name:            sgemm4x4_mfma_write_vgpr_mfma_srcb_read_overlap
370 body:             |
371   bb.0:
372     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
373     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $agpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
375 # GCN-LABEL: name: dgemm4x4_mfma_write_vgpr_mfma_srcb_read_overlap
376 # GCN:      V_MFMA
377 # GCN-NEXT: S_NOP 5
378 # GCN-NEXT: V_MFMA
379 name:            dgemm4x4_mfma_write_vgpr_mfma_srcb_read_overlap
380 body:             |
381   bb.0:
382     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
383     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
385 # GCN-LABEL: name: dgemm16x16_mfma_write_vgpr_mfma_srcb_read_overlap
386 # GCN:      V_MFMA
387 # GCN-NEXT: S_NOP 7
388 # GCN-NEXT: S_NOP 2
389 # GCN-NEXT: V_MFMA
390 name:            dgemm16x16_mfma_write_vgpr_mfma_srcb_read_overlap
391 body:             |
392   bb.0:
393     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
394     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr0_vgpr1, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
396 # GCN-LABEL: name: smfma4x4_write_vgpr_vm_read
397 # GCN:      V_MFMA
398 # GCN-NEXT: S_NOP 4
399 # GCN-NEXT: BUFFER_STORE_DWORD
400 name:            smfma4x4_write_vgpr_vm_read
401 body:             |
402   bb.0:
403     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
404     BUFFER_STORE_DWORD_OFFSET $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $mode, implicit $exec
406 # GCN-LABEL: name: smfma4x4_write_vgpr_flat_read
407 # GCN:      V_MFMA
408 # GCN-NEXT: S_NOP 4
409 # GCN-NEXT: FLAT_STORE_DWORD
410 name:            smfma4x4_write_vgpr_flat_read
411 body:             |
412   bb.0:
413     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
414     FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
416 # GCN-LABEL: name: smfma4x4_write_vgpr_lds_read
417 # GCN:      V_MFMA
418 # GCN-NEXT: S_NOP 4
419 # GCN-NEXT: DS_WRITE_B32
420 name:            smfma4x4_write_vgpr_lds_read
421 body:             |
422   bb.0:
423     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
424     DS_WRITE_B32 $vgpr0, $vgpr4, 0, 0, implicit $m0, implicit $mode, implicit $exec
426 # GCN-LABEL: name: smfma4x4_write_vgpr_exp_read
427 # GCN:      V_MFMA
428 # GCN-NEXT: S_NOP 4
429 # GCN-NEXT: EXP_DONE
430 name:            smfma4x4_write_vgpr_exp_read
431 body:             |
432   bb.0:
433     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
434     EXP_DONE 12, $vgpr4, $vgpr0, $vgpr0, $vgpr0, 0, 0, 15, implicit $exec
436 # GCN-LABEL: name: smfma16x16_write_vgpr_flat_read
437 # GCN:      V_MFMA
438 # GCN-NEXT: S_NOP 7
439 # GCN-NEXT: S_NOP 2
440 # GCN-NEXT: FLAT_STORE_DWORD
441 name:            smfma16x16_write_vgpr_flat_read
442 body:             |
443   bb.0:
444     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
445     FLAT_STORE_DWORD $vgpr16_vgpr17, $vgpr1, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
447 # GCN-LABEL: name: smfma32x32_write_vgpr_flat_read
448 # GCN:      V_MFMA
449 # GCN-NEXT: S_NOP 7
450 # GCN-NEXT: S_NOP 7
451 # GCN-NEXT: S_NOP 2
452 # GCN-NEXT: FLAT_STORE_DWORD
453 name:            smfma32x32_write_vgpr_flat_read
454 body:             |
455   bb.0:
456     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
457     FLAT_STORE_DWORD $vgpr16_vgpr17, $vgpr1, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
459 # GCN-LABEL: name: dmfma4x4_write_vgpr_flat_read_overlap
460 # GCN:      V_MFMA
461 # GCN-NEXT: S_NOP 7
462 # GCN-NEXT: S_NOP 0
463 # GCN-NEXT: FLAT_STORE_DWORD
464 name:            dmfma4x4_write_vgpr_flat_read_overlap
465 body:             |
466   bb.0:
467     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
468     FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
470 # GCN-LABEL: name: dmfma4x4_write_vgpr_flat_read_full
471 # GCN:      V_MFMA
472 # GCN-NEXT: S_NOP 7
473 # GCN-NEXT: S_NOP 0
474 # GCN-NEXT: FLAT_STORE_DWORD
475 name:            dmfma4x4_write_vgpr_flat_read_full
476 body:             |
477   bb.0:
478     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
479     FLAT_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
481 # GCN-LABEL: name: dmfma16x16_write_vgpr_flat_read
482 # GCN:      V_MFMA
483 # GCN-NEXT: S_NOP 7
484 # GCN-NEXT: S_NOP 7
485 # GCN-NEXT: S_NOP 1
486 # GCN-NEXT: FLAT_STORE_DWORD
487 name:            dmfma16x16_write_vgpr_flat_read
488 body:             |
489   bb.0:
490     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
491     FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
493 # GCN-LABEL: name: smfma4x4_write_vgpr_valu_read
494 # GCN:      V_MFMA
495 # GCN-NEXT: S_NOP 4
496 # GCN-NEXT: V_MOV_B32
497 name:            smfma4x4_write_vgpr_valu_read
498 body:             |
499   bb.0:
500     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
501     $vgpr4 = V_MOV_B32_e32 $vgpr0, implicit $mode, implicit $exec
503 # GCN-LABEL: name: smfma16x16_write_vgpr_valu_read
504 # GCN:      V_MFMA
505 # GCN-NEXT: S_NOP 7
506 # GCN-NEXT: S_NOP 2
507 # GCN-NEXT: V_MOV_B32
508 name:            smfma16x16_write_vgpr_valu_read
509 body:             |
510   bb.0:
511     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
512     $vgpr16 = V_MOV_B32_e32 $vgpr0, implicit $mode, implicit $exec
514 # GCN-LABEL: name: smfma32x32_write_vgpr_valu_read
515 # GCN:      V_MFMA
516 # GCN-NEXT: S_NOP 7
517 # GCN-NEXT: S_NOP 7
518 # GCN-NEXT: S_NOP 2
519 # GCN-NEXT: V_MOV_B32
520 name:            smfma32x32_write_vgpr_valu_read
521 body:             |
522   bb.0:
523     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
524     $vgpr16 = V_MOV_B32_e32 $vgpr0, implicit $mode, implicit $exec
526 # GCN-LABEL: name: dmfma4x4_write_vgpr_valu_read
527 # GCN:      V_MFMA
528 # GCN-NEXT: S_NOP 5
529 # GCN-NEXT: V_MOV_B32
530 name:            dmfma4x4_write_vgpr_valu_read
531 body:             |
532   bb.0:
533     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
534     $vgpr6 = V_MOV_B32_e32 $vgpr5, implicit $exec
536 # GCN-LABEL: name: dmfma16x16_write_vgpr_valu_read
537 # GCN:      V_MFMA
538 # GCN-NEXT: S_NOP 7
539 # GCN-NEXT: S_NOP 2
540 # GCN-NEXT: V_MOV_B32
541 name:            dmfma16x16_write_vgpr_valu_read
542 body:             |
543   bb.0:
544     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
545     $vgpr12 = V_MOV_B32_e32 $vgpr4, implicit $exec
547 # GCN-LABEL: name: smfma4x4_write_vgpr_accv_read
548 # GCN:      V_MFMA
549 # GCN-NEXT: S_NOP 4
550 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
551 name:            smfma4x4_write_vgpr_accv_read
552 body:             |
553   bb.0:
554     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
555     $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $mode, implicit $exec
557 # GCN-LABEL: name: smfma16x16_write_vgpr_accv_read
558 # GCN:      V_MFMA
559 # GCN-NEXT: S_NOP 7
560 # GCN-NEXT: S_NOP 2
561 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
562 name:            smfma16x16_write_vgpr_accv_read
563 body:             |
564   bb.0:
565     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
566     $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $mode, implicit $exec
568 # GCN-LABEL: name: smfma32x32_write_vgpr_accv_read
569 # GCN:      V_MFMA
570 # GCN-NEXT: S_NOP 7
571 # GCN-NEXT: S_NOP 7
572 # GCN-NEXT: S_NOP 2
573 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
574 name:            smfma32x32_write_vgpr_accv_read
575 body:             |
576   bb.0:
577     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
578     $agpr0 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $mode, implicit $exec
580 # GCN-LABEL: name: smfma4x4_write_vgpr_dot_read
581 # GCN:      V_MFMA
582 # GCN-NEXT: S_NOP 4
583 # GCN-NEXT: V_DOT
584 name:            smfma4x4_write_vgpr_dot_read
585 body:             |
586   bb.0:
587     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
588     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
590 # GCN-LABEL: name: dmfma4x4_write_vgpr_dot_read
591 # GCN:      V_MFMA
592 # GCN-NEXT: S_NOP 5
593 # GCN-NEXT: V_DOT
594 name:            dmfma4x4_write_vgpr_dot_read
595 body:             |
596   bb.0:
597     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
598     $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr5, $vgpr1, implicit $exec
600 # GCN-LABEL: name: dmfma16x16_write_vgpr_dot_read
601 # GCN:      V_MFMA
602 # GCN-NEXT: S_NOP 7
603 # GCN-NEXT: S_NOP 2
604 # GCN-NEXT: V_DOT
605 name:            dmfma16x16_write_vgpr_dot_read
606 body:             |
607   bb.0:
608     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
609     $vgpr1 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr4, $vgpr1, implicit $exec
611 # GCN-LABEL: name: smfma4x4_write_vgpr_valu_write
612 # GCN:      V_MFMA
613 # GCN-NEXT: S_NOP 4
614 # GCN-NEXT: V_MOV_B32
615 name:            smfma4x4_write_vgpr_valu_write
616 body:             |
617   bb.0:
618     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr4, $vgpr0, $vgpr6_vgpr7_vgpr8_vgpr9, 0, 0, 0, implicit $mode, implicit $exec
619     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
621 # GCN-LABEL: name: smfma16x16_write_vgpr_valu_write
622 # GCN:      V_MFMA
623 # GCN-NEXT: S_NOP 7
624 # GCN-NEXT: S_NOP 2
625 # GCN-NEXT: V_MOV_B32
626 name:            smfma16x16_write_vgpr_valu_write
627 body:             |
628   bb.0:
629     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
630     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
632 # GCN-LABEL: name: smfma32x32_write_vgpr_valu_write
633 # GCN:      V_MFMA
634 # GCN-NEXT: S_NOP 7
635 # GCN-NEXT: S_NOP 7
636 # GCN-NEXT: S_NOP 2
637 # GCN-NEXT: V_MOV_B32
638 name:            smfma32x32_write_vgpr_valu_write
639 body:             |
640   bb.0:
641     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
642     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
644 # GCN-LABEL: name: smfma4x4_write_vgpr_valu_f16_write
645 # GCN:      V_MFMA
646 # GCN-NEXT: S_NOP 4
647 # GCN-NEXT: V_FMA_F16_e64
648 name:            smfma4x4_write_vgpr_valu_f16_write
649 body:             |
650   bb.0:
651     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
652     $vgpr1 = V_FMA_F16_e64 0, 0, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
654 # GCN-LABEL: name: smfma16x16_write_vgpr_valu_f16_write
655 # GCN:      V_MFMA
656 # GCN-NEXT: S_NOP 7
657 # GCN-NEXT: S_NOP 2
658 # GCN-NEXT: V_FMA_F16_e64
659 name:            smfma16x16_write_vgpr_valu_f16_write
660 body:             |
661   bb.0:
662     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
663     $vgpr1 = V_FMA_F16_e64 0, 0, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
665 # GCN-LABEL: name: smfma32x32_write_vgpr_valu_f16_write
666 # GCN:      V_MFMA
667 # GCN-NEXT: S_NOP 7
668 # GCN-NEXT: S_NOP 7
669 # GCN-NEXT: S_NOP 2
670 # GCN-NEXT: V_FMA_F16_e64
671 name:            smfma32x32_write_vgpr_valu_f16_write
672 body:             |
673   bb.0:
674     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
675     $vgpr1 = V_FMA_F16_e64 0, 0, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
677 # GCN-LABEL: name: smfma4x4_write_vgpr_valu_sdwa_write
678 # GCN:      V_MFMA
679 # GCN-NEXT: S_NOP 4
680 # GCN-NEXT: V_MOV_B32_sdwa
681 name:            smfma4x4_write_vgpr_valu_sdwa_write
682 body:             |
683   bb.0:
684     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
685     $vgpr1 = V_MOV_B32_sdwa 0, $vgpr16, 0, 5, 2, 4, implicit $exec, implicit $vgpr1(tied-def 0)
687 # GCN-LABEL: name: smfma16x16_write_vgpr_valu_sdwa_write
688 # GCN:      V_MFMA
689 # GCN-NEXT: S_NOP 7
690 # GCN-NEXT: S_NOP 2
691 # GCN-NEXT: V_MOV_B32_sdwa
692 name:            smfma16x16_write_vgpr_valu_sdwa_write
693 body:             |
694   bb.0:
695     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr16, $vgpr17, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
696     $vgpr1 = V_MOV_B32_sdwa 0, $vgpr16, 0, 5, 2, 4, implicit $exec, implicit $vgpr1(tied-def 0)
698 # GCN-LABEL: name: smfma32x32_write_vgpr_valu_sdwa_write
699 # GCN:      V_MFMA
700 # GCN-NEXT: S_NOP 7
701 # GCN-NEXT: S_NOP 7
702 # GCN-NEXT: S_NOP 2
703 # GCN-NEXT: V_MOV_B32_sdwa
704 name:            smfma32x32_write_vgpr_valu_sdwa_write
705 body:             |
706   bb.0:
707     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
708     $vgpr1 = V_MOV_B32_sdwa 0, $vgpr16, 0, 5, 2, 4, implicit $exec, implicit $vgpr1(tied-def 0)
710 # GCN-LABEL: name: dmfma4x4_write_vgpr_valu_write
711 # GCN:      V_MFMA
712 # GCN-NEXT: S_NOP 5
713 # GCN-NEXT: V_MOV_B32
714 name:            dmfma4x4_write_vgpr_valu_write
715 body:             |
716   bb.0:
717     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
718     $vgpr4 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
720 # GCN-LABEL: name: dmfma16x16_write_vgpr_valu_write
721 # GCN:      V_MFMA
722 # GCN-NEXT: S_NOP 7
723 # GCN-NEXT: S_NOP 2
724 # GCN-NEXT: V_MOV_B32
725 name:            dmfma16x16_write_vgpr_valu_write
726 body:             |
727   bb.0:
728     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
729     $vgpr3 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
731 # GCN-LABEL: name: smfma4x4_write_vgpr_accv_write
732 # GCN:      V_MFMA
733 # GCN-NEXT: S_NOP 4
734 # GCN-NEXT: V_ACCVGPR_READ_B32_e64
735 name:            smfma4x4_write_vgpr_accv_write
736 body:             |
737   bb.0:
738     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
739     $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr0, implicit $mode, implicit $exec
741 # GCN-LABEL: name: smfma4x4_write_vgpr_dot_write
742 # GCN:      V_MFMA
743 # GCN-NEXT: S_NOP 4
744 # GCN-NEXT: V_DOT
745 name:            smfma4x4_write_vgpr_dot_write
746 body:             |
747   bb.0:
748     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
749     $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
751 # GCN-LABEL: name: smfma4x4_read_srcc_vgpr_valu_write
752 # GCN:      V_MFMA
753 # GCN-NEXT: S_NOP 0
754 # GCN-NEXT: V_MOV_B32
755 name:            smfma4x4_read_srcc_vgpr_valu_write
756 body:             |
757   bb.0:
758     $vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr8, $vgpr9, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
759     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
761 # GCN-LABEL: name: smfma16x16_read_srcc_vgpr_valu_write
762 # GCN:      V_MFMA
763 # GCN-NEXT: S_NOP 6
764 # GCN-NEXT: V_MOV_B32
765 name:            smfma16x16_read_srcc_vgpr_valu_write
766 body:             |
767   bb.0:
768     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr18, $vgpr19, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
769     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
771 # GCN-LABEL: name: smfma32x32_read_srcc_vgpr_valu_write
772 # GCN:      V_MFMA
773 # GCN-NEXT: S_NOP 7
774 # GCN-NEXT: S_NOP 6
775 # GCN-NEXT: V_MOV_B32
776 name:            smfma32x32_read_srcc_vgpr_valu_write
777 body:             |
778   bb.0:
779     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr0, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
780     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
782 # GCN-LABEL: name: smfma4x4_read_srca_vgpr_valu_write
783 # GCN:      V_MFMA
784 # GCN-NEXT: V_MOV_B32
785 name:            smfma4x4_read_srca_vgpr_valu_write
786 body:             |
787   bb.0:
788     $vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr8, $vgpr9, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
789     $vgpr8 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
791 # GCN-LABEL: name: smfma16x16_read_srca_vgpr_valu_write
792 # GCN:      V_MFMA
793 # GCN-NEXT: V_MOV_B32
794 name:            smfma16x16_read_srca_vgpr_valu_write
795 body:             |
796   bb.0:
797     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr18, $vgpr19, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
798     $vgpr18 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
800 # GCN-LABEL: name: smfma32x32_read_srca_vgpr_valu_write
801 # GCN:      V_MFMA
802 # GCN-NEXT: V_MOV_B32
803 name:            smfma32x32_read_srca_vgpr_valu_write
804 body:             |
805   bb.0:
806     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr18, $vgpr19, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
807     $vgpr18 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
809 # GCN-LABEL: name: smfma4x4_read_srcb_vgpr_valu_write
810 # GCN:      V_MFMA
811 # GCN-NEXT: V_MOV_B32
812 name:            smfma4x4_read_srcb_vgpr_valu_write
813 body:             |
814   bb.0:
815     $vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr8, $vgpr9, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
816     $vgpr9 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
818 # GCN-LABEL: name: smfma16x16_read_srcb_vgpr_valu_write
819 # GCN:      V_MFMA
820 # GCN-NEXT: V_MOV_B32
821 name:            smfma16x16_read_srcb_vgpr_valu_write
822 body:             |
823   bb.0:
824     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_16X16X1F32_vgprcd_e64 $vgpr18, $vgpr19, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
825     $vgpr19 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
827 # GCN-LABEL: name: smfma32x32_read_srcb_vgpr_valu_write
828 # GCN:      V_MFMA
829 # GCN-NEXT: V_MOV_B32
830 name:            smfma32x32_read_srcb_vgpr_valu_write
831 body:             |
832   bb.0:
833     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F32_32X32X2F32_vgprcd_e64 $vgpr18, $vgpr19, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, 0, 0, 0, implicit $mode, implicit $exec
834     $vgpr19 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
836 # GCN-LABEL: name: dmfma4x4_read_srcc_vgpr_valu_write
837 # GCN:      V_MFMA
838 # GCN-NEXT: V_MOV_B32
839 name:            dmfma4x4_read_srcc_vgpr_valu_write
840 body:             |
841   bb.0:
842     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
843     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
845 # GCN-LABEL: name: dmfma16x16_read_srcc_vgpr_valu_write
846 # GCN:      V_MFMA
847 # GCN-NEXT: V_MOV_B32
848 name:            dmfma16x16_read_srcc_vgpr_valu_write
849 body:             |
850   bb.0:
851     $vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, 0, 0, 0, implicit $mode, implicit $exec
852     $vgpr1 = V_MOV_B32_e32 0, implicit $mode, implicit $exec
854 # GCN-LABEL: name: smfma16x16_read_srcc_vgpr_accv_write
855 # GCN:      V_MFMA
856 # GCN-NEXT: S_NOP 6
857 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
858 name:            smfma16x16_read_srcc_vgpr_accv_write
859 body:             |
860   bb.0:
861     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17 = V_MFMA_F32_16X16X1F32_e64 $agpr18, $agpr19, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
862     $agpr1 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
864 # GCN-LABEL: name: sgemm_to_fma64
865 # GCN:      V_MFMA
866 # GCN-NEXT: V_FMA_F64_e64
867 name:            sgemm_to_fma64
868 body:             |
869   bb.0:
870     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
871     $vgpr4_vgpr5 = V_FMA_F64_e64 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec
873 # GCN-LABEL: name: dgemm_to_fma64
874 # GCN:      V_MFMA
875 # GCN-NEXT: S_NOP 1
876 # GCN-NEXT: V_FMA_F64_e64
877 name:            dgemm_to_fma64
878 body:             |
879   bb.0:
880     $vgpr0_vgpr1 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
881     $vgpr4_vgpr5 = V_FMA_F64_e64 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec
883 # GCN-LABEL: name: dgemm_to_fmac64
884 # GCN:      V_MFMA
885 # GCN-NEXT: S_NOP 1
886 # GCN-NEXT: V_FMAC_F64
887 name:            dgemm_to_fmac64
888 body:             |
889   bb.0:
890     $vgpr0_vgpr1 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
891     $vgpr4_vgpr5 = V_FMAC_F64_e32 $vgpr4_vgpr5, $vgpr4_vgpr5, $vgpr4_vgpr5, implicit $mode, implicit $exec
893 # GCN-LABEL: name: flat_store_data_agpr_overwritten
894 # GCN:      FLAT_STORE_DWORDX4
895 # GCN-NEXT: S_NOP 0
896 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
897 name: flat_store_data_agpr_overwritten
898 body: |
899   bb.0:
900     FLAT_STORE_DWORDX4 $vgpr4_vgpr5, $agpr0_agpr1_agpr2_agpr3, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
901     $agpr0 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
903 # GCN-LABEL: name: dot_write_vgpr_accv_read
904 # GCN:      V_DOT
905 # GCN-NEXT: S_NOP 2
906 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
907 name:            dot_write_vgpr_accv_read
908 body:             |
909   bb.0:
910     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
911     $agpr5 = V_ACCVGPR_WRITE_B32_e64 $vgpr4, implicit $exec
913 # GCN-LABEL: name: valu_write_vgpr_dot_read
914 # GCN:      V_MOV_B32
915 # GCN-NEXT: V_DOT
916 name:            valu_write_vgpr_dot_read
917 body:             |
918   bb.0:
919     $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec
920     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
922 # GCN-LABEL: name: accv_write_vgpr_dot_read
923 # GCN:      V_ACCVGPR_READ
924 # GCN-NEXT: V_DOT
925 name:            accv_write_vgpr_dot_read
926 body:             |
927   bb.0:
928     $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr1, implicit $exec
929     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
931 # GCN-LABEL: name: dot_write_vgpr_same_dot_read_srcc
932 # GCN:      V_DOT
933 # GCN-NEXT: V_DOT
934 name:            dot_write_vgpr_same_dot_read_srcc
935 body:             |
936   bb.0:
937     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
938     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
940 # GCN-LABEL: name: dot_write_vgpr_different_dot_read_srcc
941 # GCN:      V_DOT
942 # GCN-NEXT: S_NOP 2
943 # GCN-NEXT: V_DOT
944 name:            dot_write_vgpr_different_dot_read_srcc
945 body:             |
946   bb.0:
947     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
948     $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
950 # GCN-LABEL: name: dot_write_vgpr_different_dot_write
951 # GCN:      V_DOT
952 # GCN-NEXT: S_NOP 2
953 # GCN-NEXT: V_DOT
954 name:            dot_write_vgpr_different_dot_write
955 body:             |
956   bb.0:
957     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
958     $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
960 # GCN-LABEL: name: dot_write_vgpr_different_valu_read
961 # GCN:      V_DOT
962 # GCN-NEXT: S_NOP 2
963 # GCN-NEXT: V_MOV_B32_e32
964 name:            dot_write_vgpr_different_valu_read
965 body:             |
966   bb.0:
967     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
968     $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec
970 # GCN-LABEL: name: dot_write_vgpr_different_valu_write
971 # GCN:      V_DOT
972 # GCN-NEXT: S_NOP 2
973 # GCN-NEXT: V_MOV_B32_e32
974 name:            dot_write_vgpr_different_valu_write
975 body:             |
976   bb.0:
977     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
978     $vgpr4 = V_MOV_B32_e32 1, implicit $exec
980 # GCN-LABEL: name: dot_write_vgpr_same_dot_read_srca
981 # GCN:      V_DOT
982 # GCN-NEXT: S_NOP 2
983 # GCN-NEXT: V_DOT
984 name:            dot_write_vgpr_same_dot_read_srca
985 body:             |
986   bb.0:
987     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
988     $vgpr0 = V_DOT4C_I32_I8_e32 $vgpr4, $vgpr1, $vgpr0, implicit $mode, implicit $exec
990 # GCN-LABEL: name: dot_write_vgpr_same_dot_read_srcb
991 # GCN:      V_DOT
992 # GCN-NEXT: S_NOP 2
993 # GCN-NEXT: V_DOT
994 name:            dot_write_vgpr_same_dot_read_srcb
995 body:             |
996   bb.0:
997     $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec
998     $vgpr0 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr4, $vgpr0, implicit $mode, implicit $exec
1000 # GCN-LABEL: name: vcmpx_write_exec_mfma
1001 # GCN:      V_CMPX_EQ_I32_e32
1002 # GCN-NEXT: S_NOP 3
1003 # GCN-NEXT: V_MFMA
1004 name:            vcmpx_write_exec_mfma
1005 body:             |
1006   bb.0:
1007     implicit $exec, implicit $vcc = V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit $exec
1008     $agpr4_agpr5_agpr6_agpr7 = V_MFMA_F32_4X4X1F32_e64 killed $agpr8, killed $vgpr1, killed $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1010 # GCN-LABEL: name: valu_write_agpr_dgemm_mfma_read
1011 # GCN:      V_ACCVGPR_WRITE_B32_e64
1012 # GCN:      V_ACCVGPR_WRITE_B32_e64
1013 # GCN-NEXT: S_NOP 1
1014 # GCN-NEXT: V_MFMA
1015 name:            valu_write_agpr_dgemm_mfma_read
1016 body:             |
1017   bb.0:
1018     $agpr0 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
1019     $agpr1 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
1020     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1022 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_mfma_read_same_agpr_as_srcc
1023 # GCN:      V_MFMA
1024 # GCN-NEXT: V_MFMA
1025 name:            dgemm16x16_mfma_write_agpr_mfma_read_same_agpr_as_srcc
1026 body:             |
1027   bb.0:
1028     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $agpr10_agpr11, $agpr10_agpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1029     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $agpr10_agpr11, $agpr10_agpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1031 # GCN-LABEL: name: dgemm4x4_mfma_write_agpr_mfma_read_same_agpr_as_srcc
1032 # GCN:      V_MFMA
1033 # GCN-NEXT: S_NOP 3
1034 # GCN-NEXT: V_MFMA
1035 name:            dgemm4x4_mfma_write_agpr_mfma_read_same_agpr_as_srcc
1036 body:             |
1037   bb.0:
1038     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $vgpr0_vgpr1, $agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1039     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $vgpr0_vgpr1, $agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1041 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_mfma_read_overlap
1042 # GCN:      V_MFMA
1043 # GCN-NEXT: S_NOP 7
1044 # GCN-NEXT: S_NOP 0
1045 # GCN-NEXT: V_MFMA
1046 name:            dgemm16x16_mfma_write_agpr_mfma_read_overlap
1047 body:             |
1048   bb.0:
1049     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1050     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1052 # GCN-LABEL: name: dgemm4x4_mfma_write_agpr_mfma_read_overlap
1053 # GCN:      V_MFMA
1054 # GCN-NEXT: S_NOP 3
1055 # GCN-NEXT: V_MFMA
1056 name:            dgemm4x4_mfma_write_agpr_mfma_read_overlap
1057 body:             |
1058   bb.0:
1059     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1060     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1062 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_sgemm_mfma_read_overlap
1063 # GCN:      V_MFMA
1064 # GCN-NEXT: V_MFMA
1065 name:            dgemm16x16_mfma_write_agpr_sgemm_mfma_read_overlap
1066 body:             |
1067   bb.0:
1068     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1069     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr10, $vgpr11, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1071 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_dgemm_mfma_read_overlap
1072 # GCN:      V_MFMA
1073 # GCN-NEXT: S_NOP 2
1074 # GCN-NEXT: V_MFMA
1075 name:            sgemm4x4_mfma_write_agpr_dgemm_mfma_read_overlap
1076 body:             |
1077   bb.0:
1078     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr10, $vgpr11, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1079     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1081 # GCN-LABEL: name: sgemm16x16_mfma_write_sgpr_dgemm_mfma_read_overlap
1082 # GCN:      V_MFMA
1083 # GCN-NEXT: S_NOP 7
1084 # GCN-NEXT: S_NOP 0
1085 # GCN-NEXT: V_MFMA
1086 name:            sgemm16x16_mfma_write_sgpr_dgemm_mfma_read_overlap
1087 body:             |
1088   bb.0:
1089     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_16X16X1F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
1090     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr20_vgpr21, $vgpr20_vgpr21, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1092 # GCN-LABEL: name: sgemm32x32_mfma_write_agpr_dgemm_mfma_read_overlap
1093 # GCN:      V_MFMA
1094 # GCN-NEXT: S_NOP 7
1095 # GCN-NEXT: S_NOP 7
1096 # GCN-NEXT: S_NOP 0
1097 # GCN-NEXT: V_MFMA
1098 name:            sgemm32x32_mfma_write_agpr_dgemm_mfma_read_overlap
1099 body:             |
1100   bb.0:
1101     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15 = V_MFMA_F32_32X32X2F32_e64 $vgpr26, $vgpr27, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, 0, 0, 0, implicit $mode, implicit $exec
1102     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr20_vgpr21, $vgpr20_vgpr21, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1104 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_dmfma4x4_srca_read_overlap
1105 # GCN:      V_MFMA
1106 # GCN-NEXT: S_NOP 4
1107 # GCN-NEXT: V_MFMA
1108 name:            sgemm4x4_mfma_write_agpr_dmfma4x4_srca_read_overlap
1109 body:             |
1110   bb.0:
1111     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1112     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $agpr0_agpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
1114 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_dmfma16x16_srca_read_overlap
1115 # GCN:      V_MFMA
1116 # GCN-NEXT: S_NOP 4
1117 # GCN-NEXT: V_MFMA
1118 name:            sgemm4x4_mfma_write_agpr_dmfma16x16_srca_read_overlap
1119 body:             |
1120   bb.0:
1121     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr1, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1122     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $agpr0_agpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
1124 # GCN-LABEL: name: dgemm4x4_mfma_write_agpr_mfma_srca_read_overlap
1125 # GCN:      V_MFMA
1126 # GCN-NEXT: S_NOP 5
1127 # GCN-NEXT: V_MFMA
1128 name:            dgemm4x4_mfma_write_agpr_mfma_srca_read_overlap
1129 body:             |
1130   bb.0:
1131     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1132     $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $agpr2_agpr3, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
1134 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_mfma_srca_read_overlap
1135 # GCN:      V_MFMA
1136 # GCN-NEXT: S_NOP 7
1137 # GCN-NEXT: S_NOP 2
1138 # GCN-NEXT: V_MFMA
1139 name:            dgemm16x16_mfma_write_agpr_mfma_srca_read_overlap
1140 body:             |
1141   bb.0:
1142     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17, 0, 0, 0, implicit $mode, implicit $exec
1143     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $agpr0_agpr1, $vgpr10_vgpr11, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
1145 # GCN-LABEL: name: dgemm4x4_mfma_write_agpr_sgemm_mfma_srca_read_overlap
1146 # GCN:      V_MFMA
1147 # GCN-NEXT: S_NOP 5
1148 # GCN-NEXT: V_MFMA
1149 name:            dgemm4x4_mfma_write_agpr_sgemm_mfma_srca_read_overlap
1150 body:             |
1151   bb.0:
1152     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1153     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $agpr4, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
1155 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_sgemm_mfma_srca_read_overlap
1156 # GCN:      V_MFMA
1157 # GCN-NEXT: S_NOP 7
1158 # GCN-NEXT: S_NOP 2
1159 # GCN-NEXT: V_MFMA
1160 name:            dgemm16x16_mfma_write_agpr_sgemm_mfma_srca_read_overlap
1161 body:             |
1162   bb.0:
1163     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17, 0, 0, 0, implicit $mode, implicit $exec
1164     $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $agpr4, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec
1166 # GCN-LABEL: name: sgemm4x4_mfma_write_agpr_dgemm_mfma_srca_read_overlap
1167 # GCN:      V_MFMA
1168 # GCN-NEXT: S_NOP 4
1169 # GCN-NEXT: V_MFMA
1170 name:            sgemm4x4_mfma_write_agpr_dgemm_mfma_srca_read_overlap
1171 body:             |
1172   bb.0:
1173     $agpr0_agpr1_agpr2_agpr3 = V_MFMA_F32_4X4X1F32_e64 $vgpr4, $vgpr0, $agpr0_agpr1_agpr2_agpr3, 0, 0, 0, implicit $mode, implicit $exec
1174     $vgpr4_vgpr5 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $agpr0_agpr1, $vgpr4_vgpr5, $vgpr4_vgpr5, 0, 0, 0, implicit $mode, implicit $exec
1176 # GCN-LABEL: name: dgemm4x4_mfma_write_agpr_mfma_srcb_read_overlap
1177 # GCN:      V_MFMA
1178 # GCN-NEXT: S_NOP 5
1179 # GCN-NEXT: V_MFMA
1180 name:            dgemm4x4_mfma_write_agpr_mfma_srcb_read_overlap
1181 body:             |
1182   bb.0:
1183     $agpr2_agpr3 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1184     $vgpr2_vgpr3 = V_MFMA_F64_4X4X4F64_vgprcd_e64 $vgpr0_vgpr1, $agpr2_agpr3, $vgpr0_vgpr1, 0, 0, 0, implicit $mode, implicit $exec
1186 # GCN-LABEL: name: dgemm16x16_mfma_write_agpr_mfma_srcb_read_overlap
1187 # GCN:      V_MFMA
1188 # GCN-NEXT: S_NOP 7
1189 # GCN-NEXT: S_NOP 2
1190 # GCN-NEXT: V_MFMA
1191 name:            dgemm16x16_mfma_write_agpr_mfma_srcb_read_overlap
1192 body:             |
1193   bb.0:
1194     $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr10_agpr11_agpr12_agpr13_agpr14_agpr15_agpr16_agpr17, 0, 0, 0, implicit $mode, implicit $exec
1195     $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = V_MFMA_F64_16X16X4F64_vgprcd_e64 $vgpr10_vgpr11, $agpr0_agpr1, $vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17, 0, 0, 0, implicit $mode, implicit $exec
1197 # GCN-LABEL: name: dmfma4x4_write_agpr_flat_read_overlap
1198 # GCN:      V_MFMA
1199 # GCN-NEXT: S_NOP 7
1200 # GCN-NEXT: S_NOP 0
1201 # GCN-NEXT: FLAT_STORE_DWORD
1202 name:            dmfma4x4_write_agpr_flat_read_overlap
1203 body:             |
1204   bb.0:
1205     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1206     FLAT_STORE_DWORD $vgpr0_vgpr1, $agpr5, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
1208 # GCN-LABEL: name: dmfma4x4_write_agpr_flat_read_full
1209 # GCN:      V_MFMA
1210 # GCN-NEXT: S_NOP 7
1211 # GCN-NEXT: S_NOP 0
1212 # GCN-NEXT: FLAT_STORE_DWORD
1213 name:            dmfma4x4_write_agpr_flat_read_full
1214 body:             |
1215   bb.0:
1216     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1217     FLAT_STORE_DWORDX2 $vgpr0_vgpr1, $agpr4_agpr5, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
1219 # GCN-LABEL: name: dmfma16x16_write_agpr_flat_read
1220 # GCN:      V_MFMA
1221 # GCN-NEXT: S_NOP 7
1222 # GCN-NEXT: S_NOP 7
1223 # GCN-NEXT: S_NOP 1
1224 # GCN-NEXT: FLAT_STORE_DWORD
1225 name:            dmfma16x16_write_agpr_flat_read
1226 body:             |
1227   bb.0:
1228     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1229     FLAT_STORE_DWORD $vgpr0_vgpr1, $agpr4, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
1231 # GCN-LABEL: name: dmfma4x4_write_agpr_valu_read
1232 # GCN:      V_MFMA
1233 # GCN-NEXT: S_NOP 5
1234 # GCN-NEXT: V_ACCVGPR_READ_B32_e64
1235 name:            dmfma4x4_write_agpr_valu_read
1236 body:             |
1237   bb.0:
1238     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1239     $vgpr5 = V_ACCVGPR_READ_B32_e64 $agpr5, implicit $exec
1241 # GCN-LABEL: name: dmfma16x16_write_agpr_valu_read
1242 # GCN:      V_MFMA
1243 # GCN-NEXT: S_NOP 7
1244 # GCN-NEXT: S_NOP 2
1245 # GCN-NEXT: V_ACCVGPR_READ_B32_e64
1246 name:            dmfma16x16_write_agpr_valu_read
1247 body:             |
1248   bb.0:
1249     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1250     $vgpr12 = V_ACCVGPR_READ_B32_e64 $agpr4, implicit $exec
1252 # GCN-LABEL: name: dmfma4x4_write_agpr_valu_write
1253 # GCN:      V_MFMA
1254 # GCN-NEXT: S_NOP 5
1255 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
1256 name:            dmfma4x4_write_agpr_valu_write
1257 body:             |
1258   bb.0:
1259     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1260     $agpr4 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
1262 # GCN-LABEL: name: dmfma16x16_write_agpr_valu_write
1263 # GCN:      V_MFMA
1264 # GCN-NEXT: S_NOP 7
1265 # GCN-NEXT: S_NOP 2
1266 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
1267 name:            dmfma16x16_write_agpr_valu_write
1268 body:             |
1269   bb.0:
1270     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1271     $agpr3 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
1273 # GCN-LABEL: name: dmfma4x4_read_srcc_agpr_valu_write
1274 # GCN:      V_MFMA
1275 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
1276 name:            dmfma4x4_read_srcc_agpr_valu_write
1277 body:             |
1278   bb.0:
1279     $agpr4_agpr5 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1280     $agpr1 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
1282 # GCN-LABEL: name: dmfma16x16_read_srcc_agpr_valu_write
1283 # GCN:      V_MFMA
1284 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
1285 name:            dmfma16x16_read_srcc_agpr_valu_write
1286 body:             |
1287   bb.0:
1288     $agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9 = V_MFMA_F64_16X16X4F64_e64 $vgpr10_vgpr11, $vgpr10_vgpr11, $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7, 0, 0, 0, implicit $mode, implicit $exec
1289     $agpr1 = V_ACCVGPR_WRITE_B32_e64 0, implicit $mode, implicit $exec
1291 # GCN-LABEL: name: dgemm_accvgr_to_fma64
1292 # GCN:      V_MFMA
1293 # GCN-NEXT: S_NOP 1
1294 # GCN-NEXT: V_FMA_F64_e64
1295 name:            dgemm_accvgr_to_fma64
1296 body:             |
1297   bb.0:
1298     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $vgpr0_vgpr1, $vgpr0_vgpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1299     $vgpr4_vgpr5 = V_FMA_F64_e64 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec
1301 # GCN-LABEL: name: dgemm_accvgr_to_fmac64
1302 # GCN:      V_MFMA
1303 # GCN-NEXT: S_NOP 1
1304 # GCN-NEXT: V_FMAC_F64
1305 name:            dgemm_accvgr_to_fmac64
1306 body:             |
1307   bb.0:
1308     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1309     $vgpr4_vgpr5 = V_FMAC_F64_e32 $vgpr4_vgpr5, $vgpr4_vgpr5, $vgpr4_vgpr5, implicit $mode, implicit $exec
1311 # GCN-LABEL: name: dgemm_between_valu_write_buffer_store
1312 # GCN:      V_MOV_B32_e32
1313 # GCN-NEXT: V_MFMA
1314 # GCN-NEXT: S_NOP 0
1315 # GCN-NEXT: BUFFER_STORE_DWORD
1316 name:            dgemm_between_valu_write_buffer_store
1317 body:             |
1318   bb.0:
1319     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1320     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1322     BUFFER_STORE_DWORDX2_OFFEN_exact $vgpr2_vgpr3, $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
1324 # GCN-LABEL: name: dgemm_between_valu_write_buffer_load
1325 # GCN:      V_MOV_B32_e32
1326 # GCN-NEXT: V_MFMA
1327 # GCN-NEXT: S_NOP 0
1328 # GCN-NEXT: BUFFER_LOAD_DWORD
1329 name:            dgemm_between_valu_write_buffer_load
1330 body:             |
1331   bb.0:
1332     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1333     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1334     $vgpr1 = BUFFER_LOAD_DWORD_OFFEN killed $vgpr0, killed $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec
1336 # GCN-LABEL: name: dgemm_between_valu_write_global_store
1337 # GCN:      V_MOV_B32_e32
1338 # GCN-NEXT: V_MFMA
1339 # GCN-NEXT: S_NOP 0
1340 # GCN-NEXT: GLOBAL_STORE_DWORD
1342 name:            dgemm_between_valu_write_global_store
1343 body:             |
1344   bb.0:
1345     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1346     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1347     GLOBAL_STORE_DWORD undef $vgpr0_vgpr1, killed renamable $vgpr0, 0, 0, implicit $exec
1349 # GCN-LABEL: name: dgemm_between_valu_write_global_load
1350 # GCN:      V_MOV_B32_e32
1351 # GCN-NEXT: V_MOV_B32_e32
1352 # GCN-NEXT: V_MFMA
1353 # GCN-NEXT: S_NOP 0
1354 # GCN-NEXT: GLOBAL_LOAD_DWORD
1355 name:            dgemm_between_valu_write_global_load
1356 body:             |
1357   bb.0:
1358     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1359     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
1360     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1361     $vgpr2 = GLOBAL_LOAD_DWORD undef $vgpr0_vgpr1, 0, 0, implicit $exec
1363 # GCN-LABEL: name: dgemm_between_valu_write_ds_write
1364 # GCN:      V_MOV_B32_e32
1365 # GCN-NEXT: V_MFMA
1366 # GCN-NEXT: S_NOP 0
1367 # GCN-NEXT: DS_WRITE_B32
1368 name:            dgemm_between_valu_write_ds_write
1369 body:             |
1370   bb.0:
1371     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1372     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1373     DS_WRITE_B32 $vgpr1, $vgpr0, 0, 0, implicit $m0, implicit $mode, implicit $exec
1375 # GCN-LABEL: name: dgemm_between_valu_write_ds_read
1376 # GCN:      V_MOV_B32_e32
1377 # GCN-NEXT: V_MFMA
1378 # GCN-NEXT: S_NOP 0
1379 # GCN-NEXT: DS_READ_B32_gfx9
1380 name:            dgemm_between_valu_write_ds_read
1381 body:             |
1382   bb.0:
1383     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1384     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1385     $vgpr1 = DS_READ_B32_gfx9 $vgpr0, 0, 0, implicit $exec
1387 # GCN-LABEL: name: dgemm_between_valu_write_flat_store
1388 # GCN:      V_MOV_B32_e32
1389 # GCN-NEXT: V_MOV_B32_e32
1390 # GCN-NEXT: V_MFMA
1391 # GCN-NEXT: S_NOP 0
1392 # GCN-NEXT: FLAT_STORE_DWORD
1393 name:            dgemm_between_valu_write_flat_store
1394 body:             |
1395   bb.0:
1396     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1397     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
1398     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1399     FLAT_STORE_DWORD $vgpr0_vgpr1, $agpr2, 0, 0, implicit $mode, implicit $exec, implicit $flat_scr
1401 # GCN-LABEL: name: dgemm_between_valu_write_flat_load
1402 # GCN:      V_MOV_B32_e32
1403 # GCN-NEXT: V_MOV_B32_e32
1404 # GCN-NEXT: V_MFMA
1405 # GCN-NEXT: S_NOP 0
1406 # GCN-NEXT: FLAT_LOAD_DWORD
1407 name:            dgemm_between_valu_write_flat_load
1408 body:             |
1409   bb.0:
1410     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1411     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
1412     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1413     $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr
1415 # GCN-LABEL: name: dgemm_between_valu_write_scratch_store
1416 # GCN:      V_MOV_B32_e32
1417 # GCN-NEXT: V_MFMA
1418 # GCN-NEXT: S_NOP 0
1419 # GCN-NEXT: SCRATCH_STORE_DWORD
1420 name:            dgemm_between_valu_write_scratch_store
1421 body:             |
1422   bb.0:
1423     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1424     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1425     SCRATCH_STORE_DWORD $vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
1427 # GCN-LABEL: name: dgemm_between_valu_write_scratch_load
1428 # GCN:      V_MOV_B32_e32
1429 # GCN-NEXT: V_MFMA
1430 # GCN-NEXT: S_NOP 0
1431 # GCN-NEXT: SCRATCH_LOAD_DWORD
1432 name:            dgemm_between_valu_write_scratch_load
1433 body:             |
1434   bb.0:
1435     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1436     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1437     $vgpr1 = SCRATCH_LOAD_DWORD undef $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
1439 # GCN-LABEL: name: dgemm_between_valu_write_buffer_store_fallthrough1
1440 # GCN:      V_MOV_B32_e32
1441 # GCN-NEXT: V_MFMA
1442 # GCN:      bb.1:
1443 # GCN-NEXT: S_NOP
1444 # GCN-NEXT: BUFFER_STORE_DWORD
1445 name:            dgemm_between_valu_write_buffer_store_fallthrough1
1446 body:             |
1447   bb.0:
1448     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1449     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1451   bb.1:
1452     BUFFER_STORE_DWORDX2_OFFEN_exact $vgpr2_vgpr3, $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
1454 # GCN-LABEL: name: dgemm_between_valu_write_buffer_store_fallthrough2
1455 # GCN:      V_MOV_B32_e32
1456 # GCN:      bb.1:
1457 # GCN-NEXT: V_MFMA
1458 # GCN-NEXT: S_NOP
1459 # GCN-NEXT: BUFFER_STORE_DWORD
1460 name:            dgemm_between_valu_write_buffer_store_fallthrough2
1461 body:             |
1462   bb.0:
1463     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1465   bb.1:
1466     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1467     BUFFER_STORE_DWORDX2_OFFEN_exact $vgpr2_vgpr3, $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
1469 # GCN-LABEL: name: dgemm_between_valu_write_buffer_store_fallthrough3
1470 # GCN:      V_MOV_B32_e32
1471 # GCN:      bb.1:
1472 # GCN:      bb.2:
1473 # GCN-NEXT: V_MFMA
1474 # GCN-NEXT: S_NOP
1475 # GCN-NEXT: BUFFER_STORE_DWORD
1476 name:            dgemm_between_valu_write_buffer_store_fallthrough3
1477 body:             |
1478   bb.0:
1479     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
1481   bb.1:
1483   bb.2:
1484     $agpr0_agpr1 = V_MFMA_F64_4X4X4F64_e64 $agpr0_agpr1, $agpr0_agpr1, $agpr0_agpr1, 0, 0, 0, implicit $mode, implicit $exec
1485     BUFFER_STORE_DWORDX2_OFFEN_exact $vgpr2_vgpr3, $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec