1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefixes=PAIR,PAIR-GFX11 %s 4# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s 5# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefixes=PAIR,PAIR-GFX12 %s 6 7--- | 8 @lds = external addrspace(3) global [8 x i8] 9 define void @vopd_schedule() { ret void } 10 define void @vopd_fmamk() { ret void } 11 define void @vopd_fmamk_fail() { ret void } 12 define void @vopd_cndmask() { ret void } 13 define void @vopd_mov() { ret void } 14 define void @vopd_mov_mov() { ret void } 15 define void @vopd_constants_fail() { ret void } 16 define void @vopd_constants_inlinable() { ret void } 17 define void @vopd_constants_same() { ret void } 18 define void @vopd_mov_fmaak_constants_same() { ret void } 19 define void @vopd_debug() { ret void } 20 define void @vopd_schedule_unconstrained() { ret void } 21 define void @vopd_schedule_unconstrained_2() { ret void } 22 define void @vopd_mov_fixup() { ret void } 23 define void @vopd_mov_fixup_fail() { ret void } 24 define void @vopd_no_combine_dependent_subreg() { ret void } 25 define void @vopd_mov_mov_same_src_bank() { ret void } 26 define void @vopd_combine_opy_overwrites_opx() { ret void } 27 define void @vopd_no_combine_opx_overwrites_opy() { ret void } 28... 29 30--- 31name: vopd_schedule 32tracksRegLiveness: true 33body: | 34 bb.0: 35 36 ; SCHED-LABEL: name: vopd_schedule 37 ; SCHED: $vgpr0 = IMPLICIT_DEF 38 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 39 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 40 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 41 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec 42 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 43 ; 44 ; PAIR-GFX11-LABEL: name: vopd_schedule 45 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF 46 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 47 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 48 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 49 ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 50 ; 51 ; PAIR-GFX12-LABEL: name: vopd_schedule 52 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF 53 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 54 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 55 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 56 ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 57 $vgpr0 = IMPLICIT_DEF 58 $vgpr1 = IMPLICIT_DEF 59 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 60 ; can fuse vgpr3 and vgpr6 writing insts only due to reg constraints 61 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 62 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 63 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 64 65... 66 67--- 68name: vopd_fmamk 69tracksRegLiveness: true 70body: | 71 bb.0: 72 73 ; SCHED-LABEL: name: vopd_fmamk 74 ; SCHED: $vgpr2 = IMPLICIT_DEF 75 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 76 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 77 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 78 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr3, implicit $mode, implicit $exec 79 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 80 ; 81 ; PAIR-GFX11-LABEL: name: vopd_fmamk 82 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF 83 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 84 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 85 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 86 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 10, killed $vgpr3, killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 87 ; 88 ; PAIR-GFX12-LABEL: name: vopd_fmamk 89 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF 90 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 91 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 92 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 93 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 10, killed $vgpr3, killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 94 $vgpr0 = IMPLICIT_DEF 95 $vgpr1 = IMPLICIT_DEF 96 $vgpr2 = IMPLICIT_DEF 97 $vgpr3 = IMPLICIT_DEF 98 ; should pair 99 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec 100 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec 101 102... 103 104--- 105name: vopd_fmamk_fail 106tracksRegLiveness: true 107body: | 108 bb.0: 109 110 ; SCHED-LABEL: name: vopd_fmamk_fail 111 ; SCHED: $vgpr1 = IMPLICIT_DEF 112 ; SCHED-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 113 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 114 ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF 115 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec 116 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 117 ; 118 ; PAIR-LABEL: name: vopd_fmamk_fail 119 ; PAIR: $vgpr1 = IMPLICIT_DEF 120 ; PAIR-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 121 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF 122 ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF 123 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec 124 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 125 $vgpr0 = IMPLICIT_DEF 126 $vgpr1 = IMPLICIT_DEF 127 $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 128 $vgpr4 = IMPLICIT_DEF 129 ; should not pair 130 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec 131 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr4, implicit $mode, implicit $exec 132 133... 134 135--- 136name: vopd_cndmask 137tracksRegLiveness: true 138body: | 139 bb.0: 140 liveins: $vcc_lo 141 ; SCHED-LABEL: name: vopd_cndmask 142 ; SCHED: liveins: $vcc_lo 143 ; SCHED-NEXT: {{ $}} 144 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF 145 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 146 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 147 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 148 ; SCHED-NEXT: $sgpr20 = IMPLICIT_DEF 149 ; SCHED-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec 150 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $sgpr20, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 151 ; SCHED-NEXT: $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 152 ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 153 ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec 154 ; SCHED-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo 155 ; 156 ; PAIR-GFX11-LABEL: name: vopd_cndmask 157 ; PAIR-GFX11: liveins: $vcc_lo 158 ; PAIR-GFX11-NEXT: {{ $}} 159 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF 160 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 161 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 162 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 163 ; PAIR-GFX11-NEXT: $sgpr20 = IMPLICIT_DEF 164 ; PAIR-GFX11-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec 165 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr5 = V_DUAL_FMAC_F32_e32_X_CNDMASK_B32_e32_gfx11 $sgpr20, killed $vgpr1, killed $vgpr2, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 166 ; PAIR-GFX11-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 167 ; PAIR-GFX11-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec 168 ; PAIR-GFX11-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo 169 ; 170 ; PAIR-GFX12-LABEL: name: vopd_cndmask 171 ; PAIR-GFX12: liveins: $vcc_lo 172 ; PAIR-GFX12-NEXT: {{ $}} 173 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF 174 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 175 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 176 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 177 ; PAIR-GFX12-NEXT: $sgpr20 = IMPLICIT_DEF 178 ; PAIR-GFX12-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec 179 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr5 = V_DUAL_FMAC_F32_e32_X_CNDMASK_B32_e32_gfx12 $sgpr20, killed $vgpr1, killed $vgpr2, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 180 ; PAIR-GFX12-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 181 ; PAIR-GFX12-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec 182 ; PAIR-GFX12-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo 183 $vgpr0 = IMPLICIT_DEF 184 $vgpr1 = IMPLICIT_DEF 185 $vgpr2 = IMPLICIT_DEF 186 $vgpr3 = IMPLICIT_DEF 187 $sgpr20 = IMPLICIT_DEF 188 ; should pair 189 $vgpr2 = V_FMAC_F32_e32 $sgpr20, $vgpr1, $vgpr2, implicit $mode, implicit $exec 190 $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 191 ; should not pair, uses 3 scalars (implicit vcc) 192 $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec 193 $vgpr7 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 194 ; should not pair, uses 3 scalars (implicit vcc) 195 $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec 196 $vgpr9 = V_CNDMASK_B32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 197 198... 199 200--- 201name: vopd_mov 202tracksRegLiveness: true 203body: | 204 bb.0: 205 206 ; SCHED-LABEL: name: vopd_mov 207 ; SCHED: $vgpr0 = IMPLICIT_DEF 208 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 209 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr0, implicit $exec 210 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 211 ; 212 ; PAIR-GFX11-LABEL: name: vopd_mov 213 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF 214 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 215 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 killed $vgpr0, killed $vgpr1, $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 216 ; 217 ; PAIR-GFX12-LABEL: name: vopd_mov 218 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF 219 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 220 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 killed $vgpr0, killed $vgpr1, $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 221 $vgpr0 = IMPLICIT_DEF 222 $vgpr1 = IMPLICIT_DEF 223 $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec 224 $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 225 226... 227 228--- 229name: vopd_mov_mov 230tracksRegLiveness: true 231body: | 232 bb.0: 233 234 ; SCHED-LABEL: name: vopd_mov_mov 235 ; SCHED: $sgpr0 = IMPLICIT_DEF 236 ; SCHED-NEXT: $sgpr7 = IMPLICIT_DEF 237 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec 238 ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $sgpr7, implicit $exec 239 ; 240 ; PAIR-GFX11-LABEL: name: vopd_mov_mov 241 ; PAIR-GFX11: $sgpr0 = IMPLICIT_DEF 242 ; PAIR-GFX11-NEXT: $sgpr7 = IMPLICIT_DEF 243 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx11 killed $sgpr0, killed $sgpr7, implicit $exec, implicit $exec, implicit $exec 244 ; 245 ; PAIR-GFX12-LABEL: name: vopd_mov_mov 246 ; PAIR-GFX12: $sgpr0 = IMPLICIT_DEF 247 ; PAIR-GFX12-NEXT: $sgpr7 = IMPLICIT_DEF 248 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $sgpr0, killed $sgpr7, implicit $exec, implicit $exec, implicit $exec 249 $sgpr0 = IMPLICIT_DEF 250 $sgpr7 = IMPLICIT_DEF 251 $vgpr2 = V_MOV_B32_e32 $sgpr0, implicit $exec 252 $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec 253 254... 255 256 257--- 258name: vopd_constants_fail 259tracksRegLiveness: true 260body: | 261 bb.0: 262 263 ; SCHED-LABEL: name: vopd_constants_fail 264 ; SCHED: $vgpr2 = IMPLICIT_DEF 265 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 266 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 267 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 268 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec 269 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 270 ; 271 ; PAIR-LABEL: name: vopd_constants_fail 272 ; PAIR: $vgpr2 = IMPLICIT_DEF 273 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF 274 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF 275 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF 276 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec 277 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 278 $vgpr0 = IMPLICIT_DEF 279 $vgpr1 = IMPLICIT_DEF 280 $vgpr2 = IMPLICIT_DEF 281 $vgpr3 = IMPLICIT_DEF 282 ; should not pair with two different literals 283 $vgpr2 = V_FMAC_F32_e32 99, $vgpr1, $vgpr2, implicit $mode, implicit $exec 284 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec 285 286... 287 288--- 289name: vopd_constants_inlinable 290tracksRegLiveness: true 291body: | 292 bb.0: 293 ; SCHED-LABEL: name: vopd_constants_inlinable 294 ; SCHED: $vgpr2 = IMPLICIT_DEF 295 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 296 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 297 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 298 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec 299 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 300 ; 301 ; PAIR-GFX11-LABEL: name: vopd_constants_inlinable 302 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF 303 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 304 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 305 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 306 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 100, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 307 ; 308 ; PAIR-GFX12-LABEL: name: vopd_constants_inlinable 309 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF 310 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 311 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 312 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 313 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 100, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 314 $vgpr0 = IMPLICIT_DEF 315 $vgpr1 = IMPLICIT_DEF 316 $vgpr2 = IMPLICIT_DEF 317 $vgpr3 = IMPLICIT_DEF 318 ; can pair since 4 is inlinable 319 $vgpr2 = V_FMAC_F32_e32 4, $vgpr1, $vgpr2, implicit $mode, implicit $exec 320 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec 321 322... 323 324 325--- 326name: vopd_constants_same 327tracksRegLiveness: true 328body: | 329 bb.0: 330 331 ; SCHED-LABEL: name: vopd_constants_same 332 ; SCHED: $vgpr2 = IMPLICIT_DEF 333 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 334 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 335 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 336 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec 337 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 338 ; 339 ; PAIR-GFX11-LABEL: name: vopd_constants_same 340 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF 341 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 342 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 343 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 344 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 100, killed $vgpr3, 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 345 ; 346 ; PAIR-GFX12-LABEL: name: vopd_constants_same 347 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF 348 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 349 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 350 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 351 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 100, killed $vgpr3, 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 352 $vgpr0 = IMPLICIT_DEF 353 $vgpr1 = IMPLICIT_DEF 354 $vgpr2 = IMPLICIT_DEF 355 $vgpr3 = IMPLICIT_DEF 356 ; should be able to pair using 1 deduplicated literal 357 $vgpr2 = V_FMAC_F32_e32 100, $vgpr1, $vgpr2, implicit $mode, implicit $exec 358 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec 359 360... 361 362--- 363name: vopd_mov_fmaak_constants_same 364tracksRegLiveness: true 365body: | 366 bb.0: 367 368 ; SCHED-LABEL: name: vopd_mov_fmaak_constants_same 369 ; SCHED: $vgpr0 = IMPLICIT_DEF 370 ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF 371 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec 372 ; SCHED-NEXT: $vgpr2 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec 373 ; 374 ; PAIR-GFX11-LABEL: name: vopd_mov_fmaak_constants_same 375 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF 376 ; PAIR-GFX11-NEXT: $sgpr0 = IMPLICIT_DEF 377 ; PAIR-GFX11-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32_gfx11 981467136, killed $sgpr0, killed $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 378 ; 379 ; PAIR-GFX12-LABEL: name: vopd_mov_fmaak_constants_same 380 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF 381 ; PAIR-GFX12-NEXT: $sgpr0 = IMPLICIT_DEF 382 ; PAIR-GFX12-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32_gfx12 981467136, killed $sgpr0, killed $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 383 $vgpr0 = IMPLICIT_DEF 384 $sgpr0 = IMPLICIT_DEF 385 ; should be able to pair using 1 deduplicated literal 386 $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec 387 $vgpr2 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec 388 389... 390 391--- 392name: vopd_debug 393tracksRegLiveness: true 394body: | 395 bb.0: 396 397 ; SCHED-LABEL: name: vopd_debug 398 ; SCHED: $vgpr0 = IMPLICIT_DEF 399 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 400 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 401 ; SCHED-NEXT: DBG_VALUE $vgpr0, 0, 0 402 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec 403 ; 404 ; PAIR-GFX11-LABEL: name: vopd_debug 405 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF 406 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 407 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 killed $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 408 ; PAIR-GFX11-NEXT: DBG_VALUE $vgpr0, 0, 0 409 ; 410 ; PAIR-GFX12-LABEL: name: vopd_debug 411 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF 412 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 413 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 killed $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 414 ; PAIR-GFX12-NEXT: DBG_VALUE $vgpr0, 0, 0 415 $vgpr0 = IMPLICIT_DEF 416 $vgpr1 = IMPLICIT_DEF 417 ; TODO Debug values disable VOPD creation 418 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 419 DBG_VALUE $vgpr0, 0, 0 420 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 421 422... 423 424--- 425name: vopd_schedule_unconstrained 426tracksRegLiveness: true 427body: | 428 bb.0: 429 liveins: $vcc_lo 430 431 ; SCHED-LABEL: name: vopd_schedule_unconstrained 432 ; SCHED: liveins: $vcc_lo 433 ; SCHED-NEXT: {{ $}} 434 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF 435 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 436 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 437 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 438 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 439 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 440 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 441 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 442 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 443 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 444 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 445 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 446 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec 447 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 448 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 449 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 450 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 451 ; 452 ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained 453 ; PAIR-GFX11: liveins: $vcc_lo 454 ; PAIR-GFX11-NEXT: {{ $}} 455 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF 456 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 457 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 458 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 459 ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 460 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 461 ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 462 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 463 ; PAIR-GFX11-NEXT: $vgpr12, $vgpr19 = V_DUAL_ADD_F32_e32_X_CNDMASK_B32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 464 ; PAIR-GFX11-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 465 ; PAIR-GFX11-NEXT: $vgpr17, $vgpr10 = V_DUAL_MUL_F32_e32_X_CNDMASK_B32_e32_gfx11 killed $vgpr0, $vgpr0, $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 466 ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 467 ; PAIR-GFX11-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 468 ; PAIR-GFX11-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 469 ; 470 ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained 471 ; PAIR-GFX12: liveins: $vcc_lo 472 ; PAIR-GFX12-NEXT: {{ $}} 473 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF 474 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 475 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 476 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 477 ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 478 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 479 ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 480 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 481 ; PAIR-GFX12-NEXT: $vgpr12, $vgpr19 = V_DUAL_ADD_F32_e32_X_CNDMASK_B32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 482 ; PAIR-GFX12-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 483 ; PAIR-GFX12-NEXT: $vgpr17, $vgpr10 = V_DUAL_MUL_F32_e32_X_CNDMASK_B32_e32_gfx12 killed $vgpr0, $vgpr0, $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 484 ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 485 ; PAIR-GFX12-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 486 ; PAIR-GFX12-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 487 $vgpr0 = IMPLICIT_DEF 488 $vgpr1 = IMPLICIT_DEF 489 $vgpr2 = IMPLICIT_DEF 490 $vgpr3 = IMPLICIT_DEF 491 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec 492 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 493 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 494 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 495 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 496 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 497 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec 498 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 499 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 500 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 501 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 502 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec 503 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec 504 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 505 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 506 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 507 508... 509 510--- 511name: vopd_schedule_unconstrained_2 512tracksRegLiveness: true 513body: | 514 bb.0: 515 liveins: $vcc_lo 516 517 ; SCHED-LABEL: name: vopd_schedule_unconstrained_2 518 ; SCHED: liveins: $vcc_lo 519 ; SCHED-NEXT: {{ $}} 520 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF 521 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 522 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF 523 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 524 ; SCHED-NEXT: $vgpr20 = IMPLICIT_DEF 525 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 526 ; SCHED-NEXT: $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 527 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 528 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 529 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 530 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 531 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 532 ; SCHED-NEXT: $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 533 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 534 ; SCHED-NEXT: $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr20, implicit $mode, implicit $exec 535 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 536 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 537 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 538 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 539 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 540 ; SCHED-NEXT: $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo 541 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 542 ; SCHED-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 543 ; SCHED-NEXT: $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 544 ; SCHED-NEXT: $vgpr24 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec 545 ; SCHED-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 546 ; SCHED-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 547 ; SCHED-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 548 ; SCHED-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 549 ; SCHED-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 550 ; SCHED-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 551 ; 552 ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained_2 553 ; PAIR-GFX11: liveins: $vcc_lo 554 ; PAIR-GFX11-NEXT: {{ $}} 555 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF 556 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 557 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF 558 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 559 ; PAIR-GFX11-NEXT: $vgpr20 = IMPLICIT_DEF 560 ; PAIR-GFX11-NEXT: $vgpr16, $vgpr35 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 561 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 562 ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 563 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 564 ; PAIR-GFX11-NEXT: $vgpr4, $vgpr29 = V_DUAL_SUB_F32_e32_X_CNDMASK_B32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 565 ; PAIR-GFX11-NEXT: $vgpr19, $vgpr20 = V_DUAL_CNDMASK_B32_e32_X_FMAC_F32_e32_gfx11 $vgpr0, $vgpr3, 10, $vgpr1, killed $vgpr20, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 566 ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 567 ; PAIR-GFX11-NEXT: $vgpr10, $vgpr17 = V_DUAL_CNDMASK_B32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr2, $vgpr0, $vgpr0, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 568 ; PAIR-GFX11-NEXT: $vgpr11, $vgpr12 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_gfx11 $vgpr0, $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 569 ; PAIR-GFX11-NEXT: $vgpr37, $vgpr14 = V_DUAL_CNDMASK_B32_e32_X_SUB_F32_e32_gfx11 $vgpr0, killed $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 570 ; PAIR-GFX11-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 571 ; PAIR-GFX11-NEXT: $vgpr21, $vgpr24 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 572 ; PAIR-GFX11-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 573 ; PAIR-GFX11-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 574 ; PAIR-GFX11-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 575 ; PAIR-GFX11-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 576 ; PAIR-GFX11-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 577 ; PAIR-GFX11-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 578 ; 579 ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained_2 580 ; PAIR-GFX12: liveins: $vcc_lo 581 ; PAIR-GFX12-NEXT: {{ $}} 582 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF 583 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 584 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF 585 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 586 ; PAIR-GFX12-NEXT: $vgpr20 = IMPLICIT_DEF 587 ; PAIR-GFX12-NEXT: $vgpr16, $vgpr35 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 588 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 589 ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec 590 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 591 ; PAIR-GFX12-NEXT: $vgpr4, $vgpr29 = V_DUAL_SUB_F32_e32_X_CNDMASK_B32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo 592 ; PAIR-GFX12-NEXT: $vgpr19, $vgpr20 = V_DUAL_CNDMASK_B32_e32_X_FMAC_F32_e32_gfx12 $vgpr0, $vgpr3, 10, $vgpr1, killed $vgpr20, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 593 ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 594 ; PAIR-GFX12-NEXT: $vgpr10, $vgpr17 = V_DUAL_CNDMASK_B32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr2, $vgpr0, $vgpr0, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 595 ; PAIR-GFX12-NEXT: $vgpr11, $vgpr12 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_gfx12 $vgpr0, $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 596 ; PAIR-GFX12-NEXT: $vgpr37, $vgpr14 = V_DUAL_CNDMASK_B32_e32_X_SUB_F32_e32_gfx12 $vgpr0, killed $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec 597 ; PAIR-GFX12-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 598 ; PAIR-GFX12-NEXT: $vgpr21, $vgpr24 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 599 ; PAIR-GFX12-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo 600 ; PAIR-GFX12-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 601 ; PAIR-GFX12-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 602 ; PAIR-GFX12-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo 603 ; PAIR-GFX12-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 604 ; PAIR-GFX12-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec 605 $vgpr0 = IMPLICIT_DEF 606 $vgpr1 = IMPLICIT_DEF 607 $vgpr2 = IMPLICIT_DEF 608 $vgpr3 = IMPLICIT_DEF 609 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec 610 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 611 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 612 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 613 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 614 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 615 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec 616 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 617 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 618 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 619 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 620 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec 621 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec 622 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 623 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 624 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 625 $vgpr20 = IMPLICIT_DEF 626 $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, $vgpr20, implicit $mode, implicit $exec 627 $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 628 $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 629 $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 630 $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 631 $vgpr24 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 632 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec 633 $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 634 $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc 635 $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 636 $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec 637 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec 638 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec 639 $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc 640 $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 641 $vgpr32 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec 642 643... 644 645--- 646name: vopd_mov_fixup 647tracksRegLiveness: true 648body: | 649 bb.0: 650 ; SCHED-LABEL: name: vopd_mov_fixup 651 ; SCHED: $vgpr0 = IMPLICIT_DEF 652 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF 653 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 654 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec 655 ; SCHED-NEXT: $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 656 ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 657 ; 658 ; PAIR-GFX11-LABEL: name: vopd_mov_fixup 659 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF 660 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF 661 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 target-flags(amdgpu-abs32-lo) @lds, killed $vgpr0, killed $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 662 ; PAIR-GFX11-NEXT: $vgpr4, $vgpr5 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx11 target-flags(amdgpu-abs32-lo) @lds, target-flags(amdgpu-abs32-lo) @lds, implicit $exec, implicit $exec, implicit $exec 663 ; 664 ; PAIR-GFX12-LABEL: name: vopd_mov_fixup 665 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF 666 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF 667 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 target-flags(amdgpu-abs32-lo) @lds, killed $vgpr0, killed $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 668 ; PAIR-GFX12-NEXT: $vgpr4, $vgpr5 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 target-flags(amdgpu-abs32-lo) @lds, target-flags(amdgpu-abs32-lo) @lds, implicit $exec, implicit $exec, implicit $exec 669 $vgpr0 = IMPLICIT_DEF 670 $vgpr1 = IMPLICIT_DEF 671 ; should pair 672 $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 673 $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 674 ; should pair 675 $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 676 $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 677... 678 679--- 680name: vopd_mov_fixup_fail 681tracksRegLiveness: true 682body: | 683 bb.0: 684 ; SCHED-LABEL: name: vopd_mov_fixup_fail 685 ; SCHED: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 686 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec 687 ; 688 ; PAIR-LABEL: name: vopd_mov_fixup_fail 689 ; PAIR: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 690 ; PAIR-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec 691 $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec 692 $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec 693... 694 695--- 696name: vopd_no_combine_dependent_subreg 697tracksRegLiveness: true 698body: | 699 bb.0: 700 701 ; SCHED-LABEL: name: vopd_no_combine_dependent_subreg 702 ; SCHED: $vgpr0 = IMPLICIT_DEF 703 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec 704 ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec 705 ; 706 ; PAIR-LABEL: name: vopd_no_combine_dependent_subreg 707 ; PAIR: $vgpr0 = IMPLICIT_DEF 708 ; PAIR-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec 709 ; PAIR-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec 710 $vgpr0 = IMPLICIT_DEF 711 $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec 712 $vgpr5 = V_ADD_F32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec 713... 714 715--- 716name: vopd_mov_mov_same_src_bank 717tracksRegLiveness: true 718body: | 719 bb.0: 720 721 ; SCHED-LABEL: name: vopd_mov_mov_same_src_bank 722 ; SCHED: $vgpr1 = IMPLICIT_DEF 723 ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF 724 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec 725 ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec 726 ; 727 ; PAIR-GFX11-LABEL: name: vopd_mov_mov_same_src_bank 728 ; PAIR-GFX11: $vgpr1 = IMPLICIT_DEF 729 ; PAIR-GFX11-NEXT: $vgpr5 = IMPLICIT_DEF 730 ; PAIR-GFX11-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec 731 ; PAIR-GFX11-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec 732 ; 733 ; PAIR-GFX12-LABEL: name: vopd_mov_mov_same_src_bank 734 ; PAIR-GFX12: $vgpr1 = IMPLICIT_DEF 735 ; PAIR-GFX12-NEXT: $vgpr5 = IMPLICIT_DEF 736 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $vgpr1, killed $vgpr5, implicit $exec, implicit $exec, implicit $exec 737 $vgpr1 = IMPLICIT_DEF 738 $vgpr5 = IMPLICIT_DEF 739 $vgpr2 = V_MOV_B32_e32 $vgpr1, implicit $exec 740 $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec 741... 742 743--- 744# There is no race between mov and add, they are executed at the same time 745name: vopd_combine_opy_overwrites_opx 746tracksRegLiveness: true 747body: | 748 bb.0: 749 ; SCHED-LABEL: name: vopd_combine_opy_overwrites_opx 750 ; SCHED: $vgpr1 = IMPLICIT_DEF 751 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF 752 ; SCHED-NEXT: $vgpr0 = V_MOV_B32_e32 killed $vgpr1, implicit $exec 753 ; SCHED-NEXT: $vgpr1 = V_ADD_F32_e32 killed $vgpr3, $vgpr3, implicit $mode, implicit $exec 754 ; 755 ; PAIR-GFX11-LABEL: name: vopd_combine_opy_overwrites_opx 756 ; PAIR-GFX11: $vgpr1 = IMPLICIT_DEF 757 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF 758 ; PAIR-GFX11-NEXT: $vgpr0, $vgpr1 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 killed $vgpr1, killed $vgpr3, $vgpr3, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 759 ; 760 ; PAIR-GFX12-LABEL: name: vopd_combine_opy_overwrites_opx 761 ; PAIR-GFX12: $vgpr1 = IMPLICIT_DEF 762 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF 763 ; PAIR-GFX12-NEXT: $vgpr0, $vgpr1 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 killed $vgpr1, killed $vgpr3, $vgpr3, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec 764 $vgpr1 = IMPLICIT_DEF 765 $vgpr3 = IMPLICIT_DEF 766 $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec 767 $vgpr1 = V_ADD_F32_e32 $vgpr3, $vgpr3, implicit $mode, implicit $exec 768... 769 770--- 771# OPY cannot cosume value produced by OPX 772name: vopd_no_combine_opx_overwrites_opy 773tracksRegLiveness: true 774body: | 775 bb.0: 776 ; SCHED-LABEL: name: vopd_no_combine_opx_overwrites_opy 777 ; SCHED: $vgpr1 = IMPLICIT_DEF 778 ; SCHED-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec 779 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec 780 ; 781 ; PAIR-LABEL: name: vopd_no_combine_opx_overwrites_opy 782 ; PAIR: $vgpr1 = IMPLICIT_DEF 783 ; PAIR-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec 784 ; PAIR-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec 785 $vgpr1 = IMPLICIT_DEF 786 $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec 787 $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec 788... 789