Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / twoaddr-wmma.mir
blobfc5b942804ca41f149e5297c9fe6447f0f9df70a
1 # RUN: llc -march=amdgcn -mcpu=gfx1100 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck -check-prefix=GCN %s
2 # RUN: llc -march=amdgcn -mcpu=gfx1100 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - -early-live-intervals | FileCheck -check-prefix=GCN %s
4 # GCN-LABEL: name: test_v_wmma_f32_16x16x16_f16_twoaddr_w32
5 # 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
7 ---
8 name:            test_v_wmma_f32_16x16x16_f16_twoaddr_w32
9 registers:
10   - { id: 0, class: vreg_256 }
11   - { id: 1, class: vreg_256 }
12   - { id: 2, class: vreg_256 }
13 body:             |
14   bb.0:
16     %0 = IMPLICIT_DEF
17     %1 = IMPLICIT_DEF
18     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
19     S_ENDPGM 0, implicit %0
20 ...
22 # GCN-LABEL: name: test_v_wmma_f32_16x16x16_bf16_twoaddr_w32
23 # 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
25 ---
26 name:            test_v_wmma_f32_16x16x16_bf16_twoaddr_w32
27 registers:
28   - { id: 0, class: vreg_256 }
29   - { id: 1, class: vreg_256 }
30   - { id: 2, class: vreg_256 }
31 body:             |
32   bb.0:
34     %0 = IMPLICIT_DEF
35     %1 = IMPLICIT_DEF
36     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
37     S_ENDPGM 0, implicit %0
38 ...
40 # GCN-LABEL: name: test_v_wmma_f16_16x16x16_f16_twoaddr_w32
41 # 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
43 ---
44 name:            test_v_wmma_f16_16x16x16_f16_twoaddr_w32
45 registers:
46   - { id: 0, class: vreg_256 }
47   - { id: 1, class: vreg_256 }
48   - { id: 2, class: vreg_256 }
49 body:             |
50   bb.0:
52     %0 = IMPLICIT_DEF
53     %1 = IMPLICIT_DEF
54     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
55     S_ENDPGM 0, implicit %0
56 ...
58 # GCN-LABEL: name: test_v_wmma_bf16_16x16x16_bf16_twoaddr_w32
59 # 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
61 ---
62 name:            test_v_wmma_bf16_16x16x16_bf16_twoaddr_w32
63 registers:
64   - { id: 0, class: vreg_256 }
65   - { id: 1, class: vreg_256 }
66   - { id: 2, class: vreg_256 }
67 body:             |
68   bb.0:
70     %0 = IMPLICIT_DEF
71     %1 = IMPLICIT_DEF
72     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
73     S_ENDPGM 0, implicit %0
74 ...
76 # GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu8_twoaddr_w32
77 # 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
79 ---
80 name:            test_v_wmma_i32_16x16x16_iu8_twoaddr_w32
81 registers:
82   - { id: 0, class: vreg_256 }
83   - { id: 1, class: vreg_128 }
84   - { id: 2, class: vreg_256 }
85 body:             |
86   bb.0:
88     %0 = IMPLICIT_DEF
89     %1 = IMPLICIT_DEF
90     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
91     S_ENDPGM 0, implicit %0
92 ...
94 # GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu4_twoaddr_w32
95 # 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
97 ---
98 name:            test_v_wmma_i32_16x16x16_iu4_twoaddr_w32
99 registers:
100   - { id: 0, class: vreg_256 }
101   - { id: 1, class: vreg_64 }
102   - { id: 2, class: vreg_256 }
103 body:             |
104   bb.0:
106     %0 = IMPLICIT_DEF
107     %1 = IMPLICIT_DEF
108     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
109     S_ENDPGM 0, implicit %0
112 # GCN-LABEL: name: test_v_wmma_f32_16x16x16_f16_twoaddr_w64
113 # 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
116 name:            test_v_wmma_f32_16x16x16_f16_twoaddr_w64
117 registers:
118   - { id: 0, class: vreg_128 }
119   - { id: 1, class: vreg_256 }
120   - { id: 2, class: vreg_128 }
121 body:             |
122   bb.0:
124     %0 = IMPLICIT_DEF
125     %1 = IMPLICIT_DEF
126     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
127     S_ENDPGM 0, implicit %0
130 # GCN-LABEL: name: test_v_wmma_f32_16x16x16_bf16_twoaddr_w64
131 # 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
134 name:            test_v_wmma_f32_16x16x16_bf16_twoaddr_w64
135 registers:
136   - { id: 0, class: vreg_128 }
137   - { id: 1, class: vreg_256 }
138   - { id: 2, class: vreg_128 }
139 body:             |
140   bb.0:
142     %0 = IMPLICIT_DEF
143     %1 = IMPLICIT_DEF
144     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
145     S_ENDPGM 0, implicit %0
148 # GCN-LABEL: name: test_v_wmma_f16_16x16x16_f16_twoaddr_w64
149 # 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
152 name:            test_v_wmma_f16_16x16x16_f16_twoaddr_w64
153 registers:
154   - { id: 0, class: vreg_128 }
155   - { id: 1, class: vreg_256 }
156   - { id: 2, class: vreg_128 }
157 body:             |
158   bb.0:
160     %0 = IMPLICIT_DEF
161     %1 = IMPLICIT_DEF
162     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
163     S_ENDPGM 0, implicit %0
166 # GCN-LABEL: name: test_v_wmma_bf16_16x16x16_bf16_twoaddr_w64
167 # 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
170 name:            test_v_wmma_bf16_16x16x16_bf16_twoaddr_w64
171 registers:
172   - { id: 0, class: vreg_128 }
173   - { id: 1, class: vreg_256 }
174   - { id: 2, class: vreg_128 }
175 body:             |
176   bb.0:
178     %0 = IMPLICIT_DEF
179     %1 = IMPLICIT_DEF
180     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
181     S_ENDPGM 0, implicit %0
184 # GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu8_twoaddr_w64
185 # 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
188 name:            test_v_wmma_i32_16x16x16_iu8_twoaddr_w64
189 registers:
190   - { id: 0, class: vreg_128 }
191   - { id: 1, class: vreg_128 }
192   - { id: 2, class: vreg_128 }
193 body:             |
194   bb.0:
196     %0 = IMPLICIT_DEF
197     %1 = IMPLICIT_DEF
198     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
199     S_ENDPGM 0, implicit %0
202 # GCN-LABEL: name: test_v_wmma_i32_16x16x16_iu4_twoaddr_w64
203 # 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
206 name:            test_v_wmma_i32_16x16x16_iu4_twoaddr_w64
207 registers:
208   - { id: 0, class: vreg_128 }
209   - { id: 1, class: vreg_64 }
210   - { id: 2, class: vreg_128 }
211 body:             |
212   bb.0:
214     %0 = IMPLICIT_DEF
215     %1 = IMPLICIT_DEF
216     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
217     S_ENDPGM 0, implicit %0