1# RUN: llc -march=amdgcn -mcpu=gfx1100 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck -check-prefix=GCN %s
2
3# GCN-LABEL: name: test_v_wmma_f32_16x16x16_f16_twoaddr_w32
4# GCN: early-clobber %2:vreg_256 = V_WMMA_F32_16X16X16_F16_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, implicit $exec
5
6---
7name:            test_v_wmma_f32_16x16x16_f16_twoaddr_w32
8registers:
9  - { id: 0, class: vreg_256 }
10  - { id: 1, class: vreg_256 }
11  - { id: 2, class: vreg_256 }
12body:             |
13  bb.0:
14
15    %0 = IMPLICIT_DEF
16    %1 = IMPLICIT_DEF
17    early-clobber %2:vreg_256 = V_WMMA_F32_16X16X16_F16_twoaddr_w32 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_256, 0, 0, implicit $exec
18
19...
20
21# GCN-LABEL: name: test_v_wmma_f32_16x16x16_bf16_twoaddr_w32
22# GCN: early-clobber %2:vreg_256 = V_WMMA_F32_16X16X16_BF16_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, implicit $exec
23
24---
25name:            test_v_wmma_f32_16x16x16_bf16_twoaddr_w32
26registers:
27  - { id: 0, class: vreg_256 }
28  - { id: 1, class: vreg_256 }
29  - { id: 2, class: vreg_256 }
30body:             |
31  bb.0:
32
33    %0 = IMPLICIT_DEF
34    %1 = IMPLICIT_DEF
35    early-clobber %2:vreg_256 = V_WMMA_F32_16X16X16_BF16_twoaddr_w32 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_256, 0, 0, implicit $exec
36
37...
38
39# GCN-LABEL: name: test_v_wmma_f16_16x16x16_f16_twoaddr_w32
40# GCN: early-clobber %2:vreg_256 = V_WMMA_F16_16X16X16_F16_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, 0, implicit $exec
41
42---
43name:            test_v_wmma_f16_16x16x16_f16_twoaddr_w32
44registers:
45  - { id: 0, class: vreg_256 }
46  - { id: 1, class: vreg_256 }
47  - { id: 2, class: vreg_256 }
48body:             |
49  bb.0:
50
51    %0 = IMPLICIT_DEF
52    %1 = IMPLICIT_DEF
53    early-clobber %2:vreg_256 = V_WMMA_F16_16X16X16_F16_twoaddr_w32 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_256, 0, 0, 0, 0, implicit $exec
54
55...
56
57# GCN-LABEL: name: test_v_wmma_bf16_16x16x16_bf16_twoaddr_w32
58# GCN: early-clobber %2:vreg_256 = V_WMMA_BF16_16X16X16_BF16_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, 0, implicit $exec
59
60---
61name:            test_v_wmma_bf16_16x16x16_bf16_twoaddr_w32
62registers:
63  - { id: 0, class: vreg_256 }
64  - { id: 1, class: vreg_256 }
65  - { id: 2, class: vreg_256 }
66body:             |
67  bb.0:
68
69    %0 = IMPLICIT_DEF
70    %1 = IMPLICIT_DEF
71    early-clobber %2:vreg_256 = V_WMMA_BF16_16X16X16_BF16_twoaddr_w32 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_256, 0, 0, 0, 0, implicit $exec
72
73...
74
75# GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu8_twoaddr_w32
76# GCN: early-clobber %2:vreg_256 = V_WMMA_I32_16X16X16_IU8_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, implicit $exec
77
78---
79name:            test_v_wmma_i32_16x16x16_iu8_twoaddr_w32
80registers:
81  - { id: 0, class: vreg_256 }
82  - { id: 1, class: vreg_128 }
83  - { id: 2, class: vreg_256 }
84body:             |
85  bb.0:
86
87    %0 = IMPLICIT_DEF
88    %1 = IMPLICIT_DEF
89    early-clobber %2:vreg_256 = V_WMMA_I32_16X16X16_IU8_twoaddr_w32 8, killed %1:vreg_128, 8, killed %1:vreg_128, 8, %0:vreg_256, 0, 0, 0, implicit $exec
90
91...
92
93# GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu4_twoaddr_w32
94# GCN: early-clobber %2:vreg_256 = V_WMMA_I32_16X16X16_IU4_threeaddr_w32 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, implicit $exec
95
96---
97name:            test_v_wmma_i32_16x16x16_iu4_twoaddr_w32
98registers:
99  - { id: 0, class: vreg_256 }
100  - { id: 1, class: vreg_64 }
101  - { id: 2, class: vreg_256 }
102body:             |
103  bb.0:
104
105    %0 = IMPLICIT_DEF
106    %1 = IMPLICIT_DEF
107    early-clobber %2:vreg_256 = V_WMMA_I32_16X16X16_IU4_twoaddr_w32 8, killed %1:vreg_64, 8, killed %1:vreg_64, 8, %0:vreg_256, 0, 0, 0, implicit $exec
108
109...
110
111# GCN-LABEL: name: test_v_wmma_f32_16x16x16_f16_twoaddr_w64
112# GCN: early-clobber %2:vreg_128 = V_WMMA_F32_16X16X16_F16_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, implicit $exec
113
114---
115name:            test_v_wmma_f32_16x16x16_f16_twoaddr_w64
116registers:
117  - { id: 0, class: vreg_128 }
118  - { id: 1, class: vreg_256 }
119  - { id: 2, class: vreg_128 }
120body:             |
121  bb.0:
122
123    %0 = IMPLICIT_DEF
124    %1 = IMPLICIT_DEF
125    early-clobber %2:vreg_128 = V_WMMA_F32_16X16X16_F16_twoaddr_w64 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_128, 0, 0, implicit $exec
126
127...
128
129# GCN-LABEL: name: test_v_wmma_f32_16x16x16_bf16_twoaddr_w64
130# GCN: early-clobber %2:vreg_128 = V_WMMA_F32_16X16X16_BF16_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, implicit $exec
131
132---
133name:            test_v_wmma_f32_16x16x16_bf16_twoaddr_w64
134registers:
135  - { id: 0, class: vreg_128 }
136  - { id: 1, class: vreg_256 }
137  - { id: 2, class: vreg_128 }
138body:             |
139  bb.0:
140
141    %0 = IMPLICIT_DEF
142    %1 = IMPLICIT_DEF
143    early-clobber %2:vreg_128 = V_WMMA_F32_16X16X16_BF16_twoaddr_w64 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_128, 0, 0, implicit $exec
144
145...
146
147# GCN-LABEL: name: test_v_wmma_f16_16x16x16_f16_twoaddr_w64
148# GCN: early-clobber %2:vreg_128 = V_WMMA_F16_16X16X16_F16_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, 0, implicit $exec
149
150---
151name:            test_v_wmma_f16_16x16x16_f16_twoaddr_w64
152registers:
153  - { id: 0, class: vreg_128 }
154  - { id: 1, class: vreg_256 }
155  - { id: 2, class: vreg_128 }
156body:             |
157  bb.0:
158
159    %0 = IMPLICIT_DEF
160    %1 = IMPLICIT_DEF
161    early-clobber %2:vreg_128 = V_WMMA_F16_16X16X16_F16_twoaddr_w64 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_128, 0, 0, 0, 0, implicit $exec
162
163...
164
165# GCN-LABEL: name: test_v_wmma_bf16_16x16x16_bf16_twoaddr_w64
166# GCN: early-clobber %2:vreg_128 = V_WMMA_BF16_16X16X16_BF16_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, 0, implicit $exec
167
168---
169name:            test_v_wmma_bf16_16x16x16_bf16_twoaddr_w64
170registers:
171  - { id: 0, class: vreg_128 }
172  - { id: 1, class: vreg_256 }
173  - { id: 2, class: vreg_128 }
174body:             |
175  bb.0:
176
177    %0 = IMPLICIT_DEF
178    %1 = IMPLICIT_DEF
179    early-clobber %2:vreg_128 = V_WMMA_BF16_16X16X16_BF16_twoaddr_w64 8, killed %1:vreg_256, 8, killed %1:vreg_256, 8, %0:vreg_128, 0, 0, 0, 0, implicit $exec
180
181...
182
183# GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu8_twoaddr_w64
184# GCN: early-clobber %2:vreg_128 = V_WMMA_I32_16X16X16_IU8_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, implicit $exec
185
186---
187name:            test_v_wmma_i32_16x16x16_iu8_twoaddr_w64
188registers:
189  - { id: 0, class: vreg_128 }
190  - { id: 1, class: vreg_128 }
191  - { id: 2, class: vreg_128 }
192body:             |
193  bb.0:
194
195    %0 = IMPLICIT_DEF
196    %1 = IMPLICIT_DEF
197    early-clobber %2:vreg_128 = V_WMMA_I32_16X16X16_IU8_twoaddr_w64 8, killed %1:vreg_128, 8, killed %1:vreg_128, 8, %0:vreg_128, 0, 0, 0, implicit $exec
198
199...
200
201# GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu4_twoaddr_w64
202# GCN: early-clobber %2:vreg_128 = V_WMMA_I32_16X16X16_IU4_threeaddr_w64 8, killed %1, 8, killed %1, 8, %0, 0, 0, 0, implicit $exec
203
204---
205name:            test_v_wmma_i32_16x16x16_iu4_twoaddr_w64
206registers:
207  - { id: 0, class: vreg_128 }
208  - { id: 1, class: vreg_64 }
209  - { id: 2, class: vreg_128 }
210body:             |
211  bb.0:
212
213    %0 = IMPLICIT_DEF
214    %1 = IMPLICIT_DEF
215    early-clobber %2:vreg_128 = V_WMMA_I32_16X16X16_IU4_twoaddr_w64 8, killed %1:vreg_64, 8, killed %1:vreg_64, 8, %0:vreg_128, 0, 0, 0, implicit $exec
216
217...
218