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