1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX11 %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX12 %s 4 5--- 6name: partial_forwarding_1_hazard 7body: | 8 bb.0: 9 ; GFX11-LABEL: name: partial_forwarding_1_hazard 10 ; GFX11: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 11 ; GFX11-NEXT: $exec = S_MOV_B64 -1 12 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 13 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 14 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 15 ; GFX11-NEXT: S_ENDPGM 0 16 ; 17 ; GFX12-LABEL: name: partial_forwarding_1_hazard 18 ; GFX12: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 19 ; GFX12-NEXT: $exec = S_MOV_B64 -1 20 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 21 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 22 ; GFX12-NEXT: S_ENDPGM 0 23 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 24 $exec = S_MOV_B64 -1 25 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 26 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 27 S_ENDPGM 0 28... 29 30--- 31name: partial_forwarding_2_hazard 32body: | 33 bb.0: 34 ; GFX11-LABEL: name: partial_forwarding_2_hazard 35 ; GFX11: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 36 ; GFX11-NEXT: $sgpr0 = S_MOV_B32 0 37 ; GFX11-NEXT: $sgpr1 = S_MOV_B32 0 38 ; GFX11-NEXT: $sgpr2 = S_MOV_B32 0 39 ; GFX11-NEXT: $exec = S_MOV_B64 -1 40 ; GFX11-NEXT: $sgpr3 = S_MOV_B32 0 41 ; GFX11-NEXT: $sgpr4 = S_MOV_B32 0 42 ; GFX11-NEXT: $sgpr5 = S_MOV_B32 0 43 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 44 ; GFX11-NEXT: $sgpr6 = S_MOV_B32 0 45 ; GFX11-NEXT: $sgpr7 = S_MOV_B32 0 46 ; GFX11-NEXT: $sgpr8 = S_MOV_B32 0 47 ; GFX11-NEXT: $sgpr9 = S_MOV_B32 0 48 ; GFX11-NEXT: $sgpr10 = S_MOV_B32 0 49 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 50 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 51 ; GFX11-NEXT: S_ENDPGM 0 52 ; 53 ; GFX12-LABEL: name: partial_forwarding_2_hazard 54 ; GFX12: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 55 ; GFX12-NEXT: $sgpr0 = S_MOV_B32 0 56 ; GFX12-NEXT: $sgpr1 = S_MOV_B32 0 57 ; GFX12-NEXT: $sgpr2 = S_MOV_B32 0 58 ; GFX12-NEXT: $exec = S_MOV_B64 -1 59 ; GFX12-NEXT: $sgpr3 = S_MOV_B32 0 60 ; GFX12-NEXT: $sgpr4 = S_MOV_B32 0 61 ; GFX12-NEXT: $sgpr5 = S_MOV_B32 0 62 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 63 ; GFX12-NEXT: $sgpr6 = S_MOV_B32 0 64 ; GFX12-NEXT: $sgpr7 = S_MOV_B32 0 65 ; GFX12-NEXT: $sgpr8 = S_MOV_B32 0 66 ; GFX12-NEXT: $sgpr9 = S_MOV_B32 0 67 ; GFX12-NEXT: $sgpr10 = S_MOV_B32 0 68 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 69 ; GFX12-NEXT: S_ENDPGM 0 70 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 71 $sgpr0 = S_MOV_B32 0 72 $sgpr1 = S_MOV_B32 0 73 $sgpr2 = S_MOV_B32 0 74 $exec = S_MOV_B64 -1 75 $sgpr3 = S_MOV_B32 0 76 $sgpr4 = S_MOV_B32 0 77 $sgpr5 = S_MOV_B32 0 78 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 79 $sgpr6 = S_MOV_B32 0 80 $sgpr7 = S_MOV_B32 0 81 $sgpr8 = S_MOV_B32 0 82 $sgpr9 = S_MOV_B32 0 83 $sgpr10 = S_MOV_B32 0 84 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 85 S_ENDPGM 0 86... 87 88--- 89name: partial_forwarding_3_hazard 90body: | 91 bb.0: 92 ; GFX11-LABEL: name: partial_forwarding_3_hazard 93 ; GFX11: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 94 ; GFX11-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 95 ; GFX11-NEXT: $exec = S_MOV_B64 -1 96 ; GFX11-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 97 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 98 ; GFX11-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 99 ; GFX11-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 100 ; GFX11-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 101 ; GFX11-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 102 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 103 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 104 ; GFX11-NEXT: S_ENDPGM 0 105 ; 106 ; GFX12-LABEL: name: partial_forwarding_3_hazard 107 ; GFX12: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 108 ; GFX12-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 109 ; GFX12-NEXT: $exec = S_MOV_B64 -1 110 ; GFX12-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 111 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 112 ; GFX12-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 113 ; GFX12-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 114 ; GFX12-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 115 ; GFX12-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 116 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 117 ; GFX12-NEXT: S_ENDPGM 0 118 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 119 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 120 $exec = S_MOV_B64 -1 121 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 122 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 123 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 124 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 125 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 126 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 127 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 128 S_ENDPGM 0 129... 130 131--- 132name: partial_forwarding_3_no_hazard_1 133body: | 134 bb.0: 135 ; GCN-LABEL: name: partial_forwarding_3_no_hazard_1 136 ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 137 ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 138 ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec 139 ; GCN-NEXT: $exec = S_MOV_B64 -1 140 ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 141 ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 142 ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 143 ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 144 ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 145 ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 146 ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 147 ; GCN-NEXT: S_ENDPGM 0 148 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 149 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 150 $vgpr20 = V_MOV_B32_e32 0, implicit $exec 151 $exec = S_MOV_B64 -1 152 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 153 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 154 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 155 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 156 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 157 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 158 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 159 S_ENDPGM 0 160... 161 162--- 163name: partial_forwarding_3_no_hazard_2 164body: | 165 bb.0: 166 ; GCN-LABEL: name: partial_forwarding_3_no_hazard_2 167 ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 168 ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 169 ; GCN-NEXT: $exec = S_MOV_B64 -1 170 ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 171 ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec 172 ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 173 ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 174 ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 175 ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 176 ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 177 ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 178 ; GCN-NEXT: S_ENDPGM 0 179 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 180 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 181 $exec = S_MOV_B64 -1 182 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 183 $vgpr20 = V_MOV_B32_e32 0, implicit $exec 184 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 185 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 186 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 187 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 188 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 189 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 190 S_ENDPGM 0 191... 192 193--- 194name: partial_forwarding_3_no_hazard_3 195body: | 196 bb.0: 197 ; GCN-LABEL: name: partial_forwarding_3_no_hazard_3 198 ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 199 ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 200 ; GCN-NEXT: $exec = S_MOV_B64 -1 201 ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 202 ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 203 ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 204 ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 205 ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 206 ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 207 ; GCN-NEXT: $vgpr20 = V_MOV_B32_e32 0, implicit $exec 208 ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 209 ; GCN-NEXT: S_ENDPGM 0 210 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 211 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 212 $exec = S_MOV_B64 -1 213 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 214 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 215 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 216 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 217 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 218 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 219 $vgpr20 = V_MOV_B32_e32 0, implicit $exec 220 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 221 S_ENDPGM 0 222... 223 224--- 225name: partial_forwarding_4_hazard 226body: | 227 bb.0: 228 ; GFX11-LABEL: name: partial_forwarding_4_hazard 229 ; GFX11: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 230 ; GFX11-NEXT: $exec = S_MOV_B64 -1 231 ; GFX11-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 232 ; GFX11-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 233 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 234 ; GFX11-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 235 ; GFX11-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 236 ; GFX11-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 237 ; GFX11-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 238 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 239 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 240 ; GFX11-NEXT: S_ENDPGM 0 241 ; 242 ; GFX12-LABEL: name: partial_forwarding_4_hazard 243 ; GFX12: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 244 ; GFX12-NEXT: $exec = S_MOV_B64 -1 245 ; GFX12-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 246 ; GFX12-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 247 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 248 ; GFX12-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 249 ; GFX12-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 250 ; GFX12-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 251 ; GFX12-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 252 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 253 ; GFX12-NEXT: S_ENDPGM 0 254 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 255 $exec = S_MOV_B64 -1 256 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 257 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 258 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 259 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 260 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 261 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 262 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 263 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 264 S_ENDPGM 0 265... 266 267--- 268name: partial_forwarding_4_no_hazard 269body: | 270 bb.0: 271 ; GCN-LABEL: name: partial_forwarding_4_no_hazard 272 ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 273 ; GCN-NEXT: $exec = S_MOV_B64 -1 274 ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 275 ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 276 ; GCN-NEXT: $vgpr21 = V_MOV_B32_e32 0, implicit $exec 277 ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 278 ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 279 ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 280 ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 281 ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 282 ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 283 ; GCN-NEXT: S_ENDPGM 0 284 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 285 $exec = S_MOV_B64 -1 286 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 287 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 288 $vgpr21 = V_MOV_B32_e32 0, implicit $exec 289 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 290 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 291 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 292 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 293 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 294 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 295 S_ENDPGM 0 296... 297 298--- 299name: partial_forwarding_5_hazard 300body: | 301 bb.0: 302 ; GFX11-LABEL: name: partial_forwarding_5_hazard 303 ; GFX11: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 304 ; GFX11-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 305 ; GFX11-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 306 ; GFX11-NEXT: $exec = S_MOV_B64 -1 307 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 308 ; GFX11-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 309 ; GFX11-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 310 ; GFX11-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 311 ; GFX11-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 312 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 313 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 314 ; GFX11-NEXT: S_ENDPGM 0 315 ; 316 ; GFX12-LABEL: name: partial_forwarding_5_hazard 317 ; GFX12: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 318 ; GFX12-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 319 ; GFX12-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 320 ; GFX12-NEXT: $exec = S_MOV_B64 -1 321 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 322 ; GFX12-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 323 ; GFX12-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 324 ; GFX12-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 325 ; GFX12-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 326 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 327 ; GFX12-NEXT: S_ENDPGM 0 328 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 329 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 330 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 331 $exec = S_MOV_B64 -1 332 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 333 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 334 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 335 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 336 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 337 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 338 S_ENDPGM 0 339... 340 341--- 342name: partial_forwarding_5_no_hazard 343body: | 344 bb.0: 345 ; GCN-LABEL: name: partial_forwarding_5_no_hazard 346 ; GCN: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 347 ; GCN-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 348 ; GCN-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 349 ; GCN-NEXT: $vgpr21 = V_MOV_B32_e32 0, implicit $exec 350 ; GCN-NEXT: $exec = S_MOV_B64 -1 351 ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 352 ; GCN-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 353 ; GCN-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 354 ; GCN-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 355 ; GCN-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 356 ; GCN-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 357 ; GCN-NEXT: S_ENDPGM 0 358 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 359 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 360 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 361 $vgpr21 = V_MOV_B32_e32 0, implicit $exec 362 $exec = S_MOV_B64 -1 363 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 364 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 365 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 366 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 367 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 368 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 369 S_ENDPGM 0 370... 371 372--- 373name: partial_forwarding_branching_1a 374body: | 375 ; GFX11-LABEL: name: partial_forwarding_branching_1a 376 ; GFX11: bb.0: 377 ; GFX11-NEXT: successors: %bb.2(0x80000000) 378 ; GFX11-NEXT: {{ $}} 379 ; GFX11-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 380 ; GFX11-NEXT: $exec = S_MOV_B64 -1 381 ; GFX11-NEXT: S_BRANCH %bb.2 382 ; GFX11-NEXT: {{ $}} 383 ; GFX11-NEXT: bb.1: 384 ; GFX11-NEXT: successors: %bb.2(0x80000000) 385 ; GFX11-NEXT: {{ $}} 386 ; GFX11-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 387 ; GFX11-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec 388 ; GFX11-NEXT: $vgpr31 = V_MOV_B32_e32 0, implicit $exec 389 ; GFX11-NEXT: S_BRANCH %bb.2 390 ; GFX11-NEXT: {{ $}} 391 ; GFX11-NEXT: bb.2: 392 ; GFX11-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 393 ; GFX11-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 394 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 395 ; GFX11-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 396 ; GFX11-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 397 ; GFX11-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 398 ; GFX11-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 399 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 400 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 401 ; GFX11-NEXT: S_ENDPGM 0 402 ; 403 ; GFX12-LABEL: name: partial_forwarding_branching_1a 404 ; GFX12: bb.0: 405 ; GFX12-NEXT: successors: %bb.2(0x80000000) 406 ; GFX12-NEXT: {{ $}} 407 ; GFX12-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 408 ; GFX12-NEXT: $exec = S_MOV_B64 -1 409 ; GFX12-NEXT: S_BRANCH %bb.2 410 ; GFX12-NEXT: {{ $}} 411 ; GFX12-NEXT: bb.1: 412 ; GFX12-NEXT: successors: %bb.2(0x80000000) 413 ; GFX12-NEXT: {{ $}} 414 ; GFX12-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 415 ; GFX12-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec 416 ; GFX12-NEXT: $vgpr31 = V_MOV_B32_e32 0, implicit $exec 417 ; GFX12-NEXT: S_BRANCH %bb.2 418 ; GFX12-NEXT: {{ $}} 419 ; GFX12-NEXT: bb.2: 420 ; GFX12-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 421 ; GFX12-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 422 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 423 ; GFX12-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 424 ; GFX12-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 425 ; GFX12-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 426 ; GFX12-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 427 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 428 ; GFX12-NEXT: S_ENDPGM 0 429 bb.0: 430 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 431 $exec = S_MOV_B64 -1 432 S_BRANCH %bb.2 433 bb.1: 434 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 435 $vgpr30 = V_MOV_B32_e32 0, implicit $exec 436 $vgpr31 = V_MOV_B32_e32 0, implicit $exec 437 S_BRANCH %bb.2 438 bb.2: 439 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 440 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 441 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 442 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 443 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 444 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 445 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 446 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 447 S_ENDPGM 0 448... 449 450--- 451name: partial_forwarding_branching_1b 452body: | 453 ; GFX11-LABEL: name: partial_forwarding_branching_1b 454 ; GFX11: bb.0: 455 ; GFX11-NEXT: successors: %bb.2(0x80000000) 456 ; GFX11-NEXT: {{ $}} 457 ; GFX11-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 458 ; GFX11-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec 459 ; GFX11-NEXT: $vgpr31 = V_MOV_B32_e32 0, implicit $exec 460 ; GFX11-NEXT: S_BRANCH %bb.2 461 ; GFX11-NEXT: {{ $}} 462 ; GFX11-NEXT: bb.1: 463 ; GFX11-NEXT: successors: %bb.2(0x80000000) 464 ; GFX11-NEXT: {{ $}} 465 ; GFX11-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 466 ; GFX11-NEXT: $exec = S_MOV_B64 -1 467 ; GFX11-NEXT: S_BRANCH %bb.2 468 ; GFX11-NEXT: {{ $}} 469 ; GFX11-NEXT: bb.2: 470 ; GFX11-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 471 ; GFX11-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 472 ; GFX11-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 473 ; GFX11-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 474 ; GFX11-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 475 ; GFX11-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 476 ; GFX11-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 477 ; GFX11-NEXT: S_WAITCNT_DEPCTR 4095 478 ; GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 479 ; GFX11-NEXT: S_ENDPGM 0 480 ; 481 ; GFX12-LABEL: name: partial_forwarding_branching_1b 482 ; GFX12: bb.0: 483 ; GFX12-NEXT: successors: %bb.2(0x80000000) 484 ; GFX12-NEXT: {{ $}} 485 ; GFX12-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 486 ; GFX12-NEXT: $vgpr30 = V_MOV_B32_e32 0, implicit $exec 487 ; GFX12-NEXT: $vgpr31 = V_MOV_B32_e32 0, implicit $exec 488 ; GFX12-NEXT: S_BRANCH %bb.2 489 ; GFX12-NEXT: {{ $}} 490 ; GFX12-NEXT: bb.1: 491 ; GFX12-NEXT: successors: %bb.2(0x80000000) 492 ; GFX12-NEXT: {{ $}} 493 ; GFX12-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec 494 ; GFX12-NEXT: $exec = S_MOV_B64 -1 495 ; GFX12-NEXT: S_BRANCH %bb.2 496 ; GFX12-NEXT: {{ $}} 497 ; GFX12-NEXT: bb.2: 498 ; GFX12-NEXT: $vgpr10 = V_MOV_B32_e32 0, implicit $exec 499 ; GFX12-NEXT: $vgpr11 = V_MOV_B32_e32 0, implicit $exec 500 ; GFX12-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec 501 ; GFX12-NEXT: $vgpr12 = V_MOV_B32_e32 0, implicit $exec 502 ; GFX12-NEXT: $vgpr13 = V_MOV_B32_e32 0, implicit $exec 503 ; GFX12-NEXT: $vgpr14 = V_MOV_B32_e32 0, implicit $exec 504 ; GFX12-NEXT: $vgpr15 = V_MOV_B32_e32 0, implicit $exec 505 ; GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 506 ; GFX12-NEXT: S_ENDPGM 0 507 bb.0: 508 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 509 $vgpr30 = V_MOV_B32_e32 0, implicit $exec 510 $vgpr31 = V_MOV_B32_e32 0, implicit $exec 511 S_BRANCH %bb.2 512 bb.1: 513 $vgpr0 = V_MOV_B32_e32 0, implicit $exec 514 $exec = S_MOV_B64 -1 515 S_BRANCH %bb.2 516 bb.2: 517 $vgpr10 = V_MOV_B32_e32 0, implicit $exec 518 $vgpr11 = V_MOV_B32_e32 0, implicit $exec 519 $vgpr1 = V_MOV_B32_e32 0, implicit $exec 520 $vgpr12 = V_MOV_B32_e32 0, implicit $exec 521 $vgpr13 = V_MOV_B32_e32 0, implicit $exec 522 $vgpr14 = V_MOV_B32_e32 0, implicit $exec 523 $vgpr15 = V_MOV_B32_e32 0, implicit $exec 524 $vgpr2 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 525 S_ENDPGM 0 526... 527