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
8 name: test_v_wmma_f32_16x16x16_f16_twoaddr_w32
10 - { id: 0, class: vreg_256 }
11 - { id: 1, class: vreg_256 }
12 - { id: 2, class: vreg_256 }
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
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
26 name: test_v_wmma_f32_16x16x16_bf16_twoaddr_w32
28 - { id: 0, class: vreg_256 }
29 - { id: 1, class: vreg_256 }
30 - { id: 2, class: vreg_256 }
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
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
44 name: test_v_wmma_f16_16x16x16_f16_twoaddr_w32
46 - { id: 0, class: vreg_256 }
47 - { id: 1, class: vreg_256 }
48 - { id: 2, class: vreg_256 }
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
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
62 name: test_v_wmma_bf16_16x16x16_bf16_twoaddr_w32
64 - { id: 0, class: vreg_256 }
65 - { id: 1, class: vreg_256 }
66 - { id: 2, class: vreg_256 }
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
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
80 name: test_v_wmma_i32_16x16x16_iu8_twoaddr_w32
82 - { id: 0, class: vreg_256 }
83 - { id: 1, class: vreg_128 }
84 - { id: 2, class: vreg_256 }
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
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
98 name: test_v_wmma_i32_16x16x16_iu4_twoaddr_w32
100 - { id: 0, class: vreg_256 }
101 - { id: 1, class: vreg_64 }
102 - { id: 2, class: vreg_256 }
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
118 - { id: 0, class: vreg_128 }
119 - { id: 1, class: vreg_256 }
120 - { id: 2, class: vreg_128 }
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
136 - { id: 0, class: vreg_128 }
137 - { id: 1, class: vreg_256 }
138 - { id: 2, class: vreg_128 }
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
154 - { id: 0, class: vreg_128 }
155 - { id: 1, class: vreg_256 }
156 - { id: 2, class: vreg_128 }
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
172 - { id: 0, class: vreg_128 }
173 - { id: 1, class: vreg_256 }
174 - { id: 2, class: vreg_128 }
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
190 - { id: 0, class: vreg_128 }
191 - { id: 1, class: vreg_128 }
192 - { id: 2, class: vreg_128 }
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
208 - { id: 0, class: vreg_128 }
209 - { id: 1, class: vreg_64 }
210 - { id: 2, class: vreg_128 }
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