brintos

brintos / llvm-project-archived public Read only

0
0
Text · 37.0 KiB · ed22b35 Raw
803 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs -run-pass=machine-sink -o - %s | FileCheck -check-prefixes=GFX9 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs -run-pass=machine-sink --sink-insts-to-avoid-spills=1 -o - %s | FileCheck -check-prefixes=GFX9 %s4 5 6---7name:            test_sink_fmac_to_only_use8alignment:       19tracksRegLiveness: true10machineFunctionInfo:11  isEntryFunction: true12body:             |13  ; GFX9-LABEL: name: test_sink_fmac_to_only_use14  ; GFX9: bb.0:15  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)16  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr217  ; GFX9-NEXT: {{  $}}18  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr019  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr120  ; GFX9-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec21  ; GFX9-NEXT:   [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec22  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 023  ; GFX9-NEXT:   [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 024  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]25  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]26  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)27  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)28  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr029  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 130  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec31  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec32  ; GFX9-NEXT:   S_BRANCH %bb.133  ; GFX9-NEXT: {{  $}}34  ; GFX9-NEXT: bb.1:35  ; GFX9-NEXT:   successors: %bb.2(0x80000000)36  ; GFX9-NEXT: {{  $}}37  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec38  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec39  ; GFX9-NEXT:   [[V_FMAC_F32_e64_2:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec40  ; GFX9-NEXT:   [[V_FMAC_F32_e64_3:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_2]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec41  ; GFX9-NEXT:   [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_]], [[V_FMAC_F32_e64_1]], implicit $mode, implicit $exec42  ; GFX9-NEXT:   [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_2]], [[V_FMAC_F32_e64_3]], implicit $mode, implicit $exec43  ; GFX9-NEXT: {{  $}}44  ; GFX9-NEXT: bb.2:45  ; GFX9-NEXT:   successors: %bb.3(0x80000000)46  ; GFX9-NEXT: {{  $}}47  ; GFX9-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.148  ; GFX9-NEXT:   [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.149  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec50  ; GFX9-NEXT: {{  $}}51  ; GFX9-NEXT: bb.3:52  ; GFX9-NEXT:   S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]53  bb.0:54    liveins: $vgpr0, $vgpr1, $vgpr255    %1:vgpr_32 = COPY $vgpr056    %2:vgpr_32 = COPY $vgpr157    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec58    %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec59    %5:sreg_64 = S_MOV_B64 060    %6:sreg_64 = S_MOV_B64 061    %7:vreg_64 = COPY %562    %8:vreg_64 = COPY %663    %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)64    %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec65    %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec66    %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)67    %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec68    %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec69    %15:vgpr_32(s32) = COPY $vgpr070    %16:sreg_32 = S_MOV_B32 171    %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec72    %18:sreg_64 = COPY %1773    %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec74    S_BRANCH %bb.175 76  bb.1:77    %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec78    %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec79 80  bb.2:81    %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.182    %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.183    SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec84 85  bb.3:86    S_ENDPGM 0, implicit %22, implicit %2387...88---89name:            test_no_sink_into_if_cond_multiple_uses90alignment:       191tracksRegLiveness: true92machineFunctionInfo:93  isEntryFunction: true94body:             |95  ; GFX9-LABEL: name: test_no_sink_into_if_cond_multiple_uses96  ; GFX9: bb.0:97  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)98  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr299  ; GFX9-NEXT: {{  $}}100  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0101  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1102  ; GFX9-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec103  ; GFX9-NEXT:   [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec104  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0105  ; GFX9-NEXT:   [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0106  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]107  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]108  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)109  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec110  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec111  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)112  ; GFX9-NEXT:   [[V_FMAC_F32_e64_2:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec113  ; GFX9-NEXT:   [[V_FMAC_F32_e64_3:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_2]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec114  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0115  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1116  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec117  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec118  ; GFX9-NEXT:   S_BRANCH %bb.1119  ; GFX9-NEXT: {{  $}}120  ; GFX9-NEXT: bb.1:121  ; GFX9-NEXT:   successors: %bb.2(0x80000000)122  ; GFX9-NEXT: {{  $}}123  ; GFX9-NEXT:   [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_]], [[V_FMAC_F32_e64_1]], implicit $mode, implicit $exec124  ; GFX9-NEXT:   [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_2]], [[V_FMAC_F32_e64_3]], implicit $mode, implicit $exec125  ; GFX9-NEXT: {{  $}}126  ; GFX9-NEXT: bb.2:127  ; GFX9-NEXT:   successors: %bb.3(0x80000000)128  ; GFX9-NEXT: {{  $}}129  ; GFX9-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.1130  ; GFX9-NEXT:   [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.1131  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec132  ; GFX9-NEXT: {{  $}}133  ; GFX9-NEXT: bb.3:134  ; GFX9-NEXT:   [[V_ADD_F32_e32_2:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_3]], [[V_FMAC_F32_e64_1]], implicit $mode, implicit $exec135  ; GFX9-NEXT:   S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]136  bb.0:137    liveins: $vgpr0, $vgpr1, $vgpr2138    %1:vgpr_32 = COPY $vgpr0139    %2:vgpr_32 = COPY $vgpr1140    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec141    %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec142    %5:sreg_64 = S_MOV_B64 0143    %6:sreg_64 = S_MOV_B64 0144    %7:vreg_64 = COPY %5145    %8:vreg_64 = COPY %6146    %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)147    %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec148    %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec149    %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)150    %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec151    %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec152    %15:vgpr_32(s32) = COPY $vgpr0153    %16:sreg_32 = S_MOV_B32 1154    %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec155    %18:sreg_64 = COPY %17156    %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec157    S_BRANCH %bb.1158 159  bb.1:160    %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec161    %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec162 163  bb.2:164    %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.1165    %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.1166    SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec167 168  bb.3:169    %24:vgpr_32 = V_ADD_F32_e32 %14, %11, implicit $mode, implicit $exec170    S_ENDPGM 0, implicit %22, implicit %23171...172---173name:            no_sink_fmac_not_constant_mode174alignment:       1175tracksRegLiveness: true176machineFunctionInfo:177  isEntryFunction: true178body:             |179  ; GFX9-LABEL: name: no_sink_fmac_not_constant_mode180  ; GFX9: bb.0:181  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)182  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2183  ; GFX9-NEXT: {{  $}}184  ; GFX9-NEXT:   $mode = IMPLICIT_DEF185  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0186  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1187  ; GFX9-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec188  ; GFX9-NEXT:   [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec189  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0190  ; GFX9-NEXT:   [[S_MOV_B64_1:%[0-9]+]]:sreg_64 = S_MOV_B64 0191  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]192  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_1]]193  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)194  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec195  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec196  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)197  ; GFX9-NEXT:   [[V_FMAC_F32_e64_2:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec198  ; GFX9-NEXT:   [[V_FMAC_F32_e64_3:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[V_FMAC_F32_e64_2]], 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec199  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0200  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1201  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec202  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec203  ; GFX9-NEXT:   S_BRANCH %bb.1204  ; GFX9-NEXT: {{  $}}205  ; GFX9-NEXT: bb.1:206  ; GFX9-NEXT:   successors: %bb.2(0x80000000)207  ; GFX9-NEXT: {{  $}}208  ; GFX9-NEXT:   [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_]], [[V_FMAC_F32_e64_1]], implicit $mode, implicit $exec209  ; GFX9-NEXT:   [[V_ADD_F32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 [[V_FMAC_F32_e64_2]], [[V_FMAC_F32_e64_3]], implicit $mode, implicit $exec210  ; GFX9-NEXT: {{  $}}211  ; GFX9-NEXT: bb.2:212  ; GFX9-NEXT:   successors: %bb.3(0x80000000)213  ; GFX9-NEXT: {{  $}}214  ; GFX9-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_ADD_F32_e32_]], %bb.1215  ; GFX9-NEXT:   [[PHI1:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_1]], %bb.0, [[V_ADD_F32_e32_1]], %bb.1216  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec217  ; GFX9-NEXT: {{  $}}218  ; GFX9-NEXT: bb.3:219  ; GFX9-NEXT:   S_ENDPGM 0, implicit [[PHI]], implicit [[PHI1]]220  bb.0:221    liveins: $vgpr0, $vgpr1, $vgpr2222    $mode = IMPLICIT_DEF223    %1:vgpr_32 = COPY $vgpr0224    %2:vgpr_32 = COPY $vgpr1225    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec226    %4:vgpr_32 = V_MOV_B32_e32 0, implicit $exec227    %5:sreg_64 = S_MOV_B64 0228    %6:sreg_64 = S_MOV_B64 0229    %7:vreg_64 = COPY %5230    %8:vreg_64 = COPY %6231    %9:vgpr_32 = GLOBAL_LOAD_DWORD killed %7, 0, 0, implicit $exec :: (load (s32), addrspace 1)232    %10:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %9, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec233    %11:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %10, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec234    %12:vgpr_32 = GLOBAL_LOAD_DWORD killed %8, 0, 0, implicit $exec :: (load (s32), addrspace 1)235    %13:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %12, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec236    %14:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %13, 0, %2, 0, %1, 0, 0, implicit $mode, implicit $exec237    %15:vgpr_32(s32) = COPY $vgpr0238    %16:sreg_32 = S_MOV_B32 1239    %17:sreg_64 = V_CMP_LT_I32_e64 %15(s32), %16, implicit $exec240    %18:sreg_64 = COPY %17241    %19:sreg_64 = SI_IF %18, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec242    S_BRANCH %bb.1243 244  bb.1:245    %20:vgpr_32 = V_ADD_F32_e32 %10, %11, implicit $mode, implicit $exec246    %21:vgpr_32 = V_ADD_F32_e32 %13, %14, implicit $mode, implicit $exec247 248  bb.2:249    %22:vgpr_32 = PHI %3, %bb.0, %20, %bb.1250    %23:vgpr_32 = PHI %4, %bb.0, %21, %bb.1251    SI_END_CF %19, implicit-def dead $exec, implicit-def dead $scc, implicit $exec252 253  bb.3:254    S_ENDPGM 0, implicit %22, implicit %23255...256---257name:            test_no_sink_fmac_wwm258alignment:       1259tracksRegLiveness: true260machineFunctionInfo:261  isEntryFunction: true262body:             |263  ; GFX9-LABEL: name: test_no_sink_fmac_wwm264  ; GFX9: bb.0:265  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)266  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2267  ; GFX9-NEXT: {{  $}}268  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0269  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1270  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0271  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]272  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)273  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec274  ; GFX9-NEXT:   early-clobber %6:vgpr_32 = STRICT_WWM [[V_FMAC_F32_e64_]], implicit $exec275  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0276  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1277  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY3]](s32), [[S_MOV_B32_]], implicit $exec278  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec279  ; GFX9-NEXT:   S_BRANCH %bb.1280  ; GFX9-NEXT: {{  $}}281  ; GFX9-NEXT: bb.1:282  ; GFX9-NEXT:   successors: %bb.2(0x80000000)283  ; GFX9-NEXT: {{  $}}284  ; GFX9-NEXT: bb.2:285  ; GFX9-NEXT:   successors: %bb.3(0x80000000)286  ; GFX9-NEXT: {{  $}}287  ; GFX9-NEXT:   S_NOP 0, implicit [[V_FMAC_F32_e64_]]288  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec289  ; GFX9-NEXT: {{  $}}290  ; GFX9-NEXT: bb.3:291  ; GFX9-NEXT:   S_ENDPGM 0, implicit %6292  bb.0:293    liveins: $vgpr0, $vgpr1, $vgpr2294    %1:vgpr_32 = COPY $vgpr0295    %2:vgpr_32 = COPY $vgpr1296 297    %20:sreg_64 = S_MOV_B64 0298    %30:vreg_64 = COPY %20299    %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)300    %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec301    %9:vgpr_32 = STRICT_WWM %6, implicit $exec302 303    %16:vgpr_32(s32) = COPY $vgpr0304    %23:sreg_32 = S_MOV_B32 1305    %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec306    %0:sreg_64 = COPY %24307    %5:sreg_64 = SI_IF %0, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec308    S_BRANCH %bb.1309 310  bb.1:311 312  bb.2:313    S_NOP 0, implicit %6314    SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec315 316  bb.3:317    S_ENDPGM 0, implicit %9318...319---320name:            test_def_and_use_in_loop_sink_fmac321tracksRegLiveness: true322machineFunctionInfo:323  isEntryFunction: true324body:             |325  ; GFX9-LABEL: name: test_def_and_use_in_loop_sink_fmac326  ; GFX9: bb.0.entry:327  ; GFX9-NEXT:   successors: %bb.1(0x80000000)328  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc329  ; GFX9-NEXT: {{  $}}330  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0331  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1332  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3333  ; GFX9-NEXT: {{  $}}334  ; GFX9-NEXT: bb.1:335  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)336  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc337  ; GFX9-NEXT: {{  $}}338  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0339  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]340  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)341  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)342  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0343  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1344  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec345  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec346  ; GFX9-NEXT:   S_BRANCH %bb.2347  ; GFX9-NEXT: {{  $}}348  ; GFX9-NEXT: bb.2:349  ; GFX9-NEXT:   successors: %bb.3(0x80000000)350  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc351  ; GFX9-NEXT: {{  $}}352  ; GFX9-NEXT:   S_NOP 0353  ; GFX9-NEXT: {{  $}}354  ; GFX9-NEXT: bb.3:355  ; GFX9-NEXT:   successors: %bb.4(0x40000000), %bb.6(0x40000000)356  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc357  ; GFX9-NEXT: {{  $}}358  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec359  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec360  ; GFX9-NEXT:   S_NOP 0, implicit [[V_FMAC_F32_e64_]], implicit [[V_FMAC_F32_e64_1]]361  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec362  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.6, implicit $exec363  ; GFX9-NEXT: {{  $}}364  ; GFX9-NEXT: bb.4:365  ; GFX9-NEXT:   successors: %bb.5(0x04000000), %bb.4(0x7c000000)366  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc367  ; GFX9-NEXT: {{  $}}368  ; GFX9-NEXT:   S_NOP 0369  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.4, implicit $exec370  ; GFX9-NEXT: {{  $}}371  ; GFX9-NEXT: bb.5:372  ; GFX9-NEXT:   successors: %bb.6(0x80000000)373  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc374  ; GFX9-NEXT: {{  $}}375  ; GFX9-NEXT:   S_NOP 0376  ; GFX9-NEXT: {{  $}}377  ; GFX9-NEXT: bb.6:378  ; GFX9-NEXT:   successors: %bb.7(0x04000000), %bb.1(0x7c000000)379  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc380  ; GFX9-NEXT: {{  $}}381  ; GFX9-NEXT:   S_CBRANCH_VCCZ %bb.1, implicit $vcc382  ; GFX9-NEXT: {{  $}}383  ; GFX9-NEXT: bb.7:384  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc385  ; GFX9-NEXT: {{  $}}386  ; GFX9-NEXT:   S_ENDPGM 0387  bb.0.entry:388    successors: %bb.1(0x80000000)389 390    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc391    %101:vgpr_32 = COPY $vgpr0392    %102:vgpr_32 = COPY $vgpr1393    %15:vreg_64 = COPY $vgpr2_vgpr3394 395  bb.1:396    successors: %bb.2(0x40000000), %bb.3(0x40000000)397    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc398 399    %20:sreg_64 = S_MOV_B64 0400    %30:vreg_64 = COPY %20401    %29:vgpr_32 = GLOBAL_LOAD_DWORD %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)402    %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec403    %31:vgpr_32 = GLOBAL_LOAD_DWORD  %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)404    %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec405    %16:vgpr_32(s32) = COPY $vgpr0406    %23:sreg_32 = S_MOV_B32 1407    %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec408    %0:sreg_64 = COPY %24409    %5:sreg_64 = SI_IF %0, %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec410    S_BRANCH %bb.2411 412  bb.2:413    successors: %bb.3(0x80000000)414    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc415 416    S_NOP 0417 418  bb.3:419    successors: %bb.4(0x40000000), %bb.6(0x40000000)420    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc421 422    S_NOP 0, implicit %6, implicit %7423    SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec424    S_CBRANCH_EXECZ %bb.6, implicit $exec425 426  bb.4:427    successors: %bb.5(0x04000000), %bb.4(0x7c000000)428    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc429 430    S_NOP 0431    S_CBRANCH_EXECZ %bb.4, implicit $exec432 433  bb.5:434    successors: %bb.6(0x80000000)435    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc436 437    S_NOP 0438 439  bb.6:440    successors: %bb.7(0x04000000), %bb.1(0x7c000000)441    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc442 443    S_CBRANCH_VCCZ %bb.1, implicit $vcc444 445  bb.7:446    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc447    S_ENDPGM 0448...449---450name:            test_no_sink_def_into_loop451tracksRegLiveness: true452machineFunctionInfo:453  isEntryFunction: true454body:             |455  ; GFX9-LABEL: name: test_no_sink_def_into_loop456  ; GFX9: bb.0.entry:457  ; GFX9-NEXT:   successors: %bb.1(0x80000000)458  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc459  ; GFX9-NEXT: {{  $}}460  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0461  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1462  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3463  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0464  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]465  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)466  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec467  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)468  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec469  ; GFX9-NEXT: {{  $}}470  ; GFX9-NEXT: bb.1:471  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)472  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc473  ; GFX9-NEXT: {{  $}}474  ; GFX9-NEXT:   S_NOP 0, implicit [[V_FMAC_F32_e64_]], implicit [[V_FMAC_F32_e64_1]]475  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0476  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1477  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec478  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec479  ; GFX9-NEXT:   S_BRANCH %bb.2480  ; GFX9-NEXT: {{  $}}481  ; GFX9-NEXT: bb.2:482  ; GFX9-NEXT:   successors: %bb.3(0x80000000)483  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc484  ; GFX9-NEXT: {{  $}}485  ; GFX9-NEXT:   S_NOP 0486  ; GFX9-NEXT: {{  $}}487  ; GFX9-NEXT: bb.3:488  ; GFX9-NEXT:   successors: %bb.4(0x40000000), %bb.6(0x40000000)489  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc490  ; GFX9-NEXT: {{  $}}491  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec492  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.6, implicit $exec493  ; GFX9-NEXT: {{  $}}494  ; GFX9-NEXT: bb.4:495  ; GFX9-NEXT:   successors: %bb.5(0x04000000), %bb.4(0x7c000000)496  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc497  ; GFX9-NEXT: {{  $}}498  ; GFX9-NEXT:   S_NOP 0499  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.4, implicit $exec500  ; GFX9-NEXT: {{  $}}501  ; GFX9-NEXT: bb.5:502  ; GFX9-NEXT:   successors: %bb.6(0x80000000)503  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc504  ; GFX9-NEXT: {{  $}}505  ; GFX9-NEXT:   S_NOP 0506  ; GFX9-NEXT: {{  $}}507  ; GFX9-NEXT: bb.6:508  ; GFX9-NEXT:   successors: %bb.7(0x04000000), %bb.1(0x7c000000)509  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc510  ; GFX9-NEXT: {{  $}}511  ; GFX9-NEXT:   S_CBRANCH_VCCZ %bb.1, implicit $vcc512  ; GFX9-NEXT: {{  $}}513  ; GFX9-NEXT: bb.7:514  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc515  ; GFX9-NEXT: {{  $}}516  ; GFX9-NEXT:   S_ENDPGM 0517  bb.0.entry:518    successors: %bb.1(0x80000000)519 520    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc521    %101:vgpr_32 = COPY $vgpr0522    %102:vgpr_32 = COPY $vgpr1523    %15:vreg_64 = COPY $vgpr2_vgpr3524    %20:sreg_64 = S_MOV_B64 0525    %30:vreg_64 = COPY %20526    %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)527    %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec528    %31:vgpr_32 = GLOBAL_LOAD_DWORD killed %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)529    %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec530 531  bb.1:532    successors: %bb.2(0x40000000), %bb.3(0x40000000)533    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc534 535    S_NOP 0, implicit %6, implicit %7536    %16:vgpr_32(s32) = COPY $vgpr0537    %23:sreg_32 = S_MOV_B32 1538    %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec539    %0:sreg_64 = COPY %24540    %5:sreg_64 = SI_IF %0, %bb.3, implicit-def dead $exec, implicit-def dead $scc, implicit $exec541    S_BRANCH %bb.2542 543  bb.2:544    successors: %bb.3(0x80000000)545    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc546 547    S_NOP 0548 549  bb.3:550    successors: %bb.4(0x40000000), %bb.6(0x40000000)551    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc552 553    SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec554    S_CBRANCH_EXECZ %bb.6, implicit $exec555 556  bb.4:557    successors: %bb.5(0x04000000), %bb.4(0x7c000000)558    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc559 560    S_NOP 0561    S_CBRANCH_EXECZ %bb.4, implicit $exec562 563  bb.5:564    successors: %bb.6(0x80000000)565    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc566 567    S_NOP 0568 569  bb.6:570    successors: %bb.7(0x04000000), %bb.1(0x7c000000)571    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc572 573    S_CBRANCH_VCCZ %bb.1, implicit $vcc574 575  bb.7:576    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc577    S_ENDPGM 0578...579---580name:            test_no_sink_def_into_loop2581tracksRegLiveness: true582machineFunctionInfo:583  isEntryFunction: true584body:             |585  ; GFX9-LABEL: name: test_no_sink_def_into_loop2586  ; GFX9: bb.0.entry:587  ; GFX9-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)588  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc589  ; GFX9-NEXT: {{  $}}590  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0591  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1592  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3593  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0594  ; GFX9-NEXT:   [[COPY3:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]595  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY3]], 0, 0, implicit $exec :: (load (s32), addrspace 1)596  ; GFX9-NEXT:   [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec597  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY2]], 0, 0, implicit $exec :: (load (s32), addrspace 1)598  ; GFX9-NEXT:   [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, [[GLOBAL_LOAD_DWORD1]], 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec599  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec600  ; GFX9-NEXT:   S_BRANCH %bb.1601  ; GFX9-NEXT: {{  $}}602  ; GFX9-NEXT: bb.1:603  ; GFX9-NEXT:   successors: %bb.2(0x80000000)604  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc605  ; GFX9-NEXT: {{  $}}606  ; GFX9-NEXT:   S_NOP 0607  ; GFX9-NEXT:   S_BRANCH %bb.2608  ; GFX9-NEXT: {{  $}}609  ; GFX9-NEXT: bb.2:610  ; GFX9-NEXT:   successors: %bb.3(0x40000000), %bb.4(0x40000000)611  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc612  ; GFX9-NEXT: {{  $}}613  ; GFX9-NEXT:   S_NOP 0, implicit [[V_FMAC_F32_e64_]], implicit [[V_FMAC_F32_e64_1]]614  ; GFX9-NEXT:   [[COPY4:%[0-9]+]]:vgpr_32(s32) = COPY $vgpr0615  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1616  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY4]](s32), [[S_MOV_B32_]], implicit $exec617  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.4, implicit-def dead $exec, implicit-def dead $scc, implicit $exec618  ; GFX9-NEXT:   S_BRANCH %bb.3619  ; GFX9-NEXT: {{  $}}620  ; GFX9-NEXT: bb.3:621  ; GFX9-NEXT:   successors: %bb.4(0x80000000)622  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc623  ; GFX9-NEXT: {{  $}}624  ; GFX9-NEXT:   S_NOP 0625  ; GFX9-NEXT:   S_BRANCH %bb.4626  ; GFX9-NEXT: {{  $}}627  ; GFX9-NEXT: bb.4:628  ; GFX9-NEXT:   successors: %bb.5(0x40000000), %bb.7(0x40000000)629  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc630  ; GFX9-NEXT: {{  $}}631  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec632  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.7, implicit $exec633  ; GFX9-NEXT:   S_BRANCH %bb.5634  ; GFX9-NEXT: {{  $}}635  ; GFX9-NEXT: bb.5:636  ; GFX9-NEXT:   successors: %bb.6(0x04000000), %bb.5(0x7c000000)637  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc638  ; GFX9-NEXT: {{  $}}639  ; GFX9-NEXT:   S_NOP 0640  ; GFX9-NEXT:   S_CBRANCH_EXECZ %bb.5, implicit $exec641  ; GFX9-NEXT:   S_BRANCH %bb.6642  ; GFX9-NEXT: {{  $}}643  ; GFX9-NEXT: bb.6:644  ; GFX9-NEXT:   successors: %bb.7(0x80000000)645  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc646  ; GFX9-NEXT: {{  $}}647  ; GFX9-NEXT:   S_NOP 0648  ; GFX9-NEXT:   S_BRANCH %bb.7649  ; GFX9-NEXT: {{  $}}650  ; GFX9-NEXT: bb.7:651  ; GFX9-NEXT:   successors: %bb.8(0x04000000), %bb.2(0x7c000000)652  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc653  ; GFX9-NEXT: {{  $}}654  ; GFX9-NEXT:   S_CBRANCH_VCCZ %bb.2, implicit $vcc655  ; GFX9-NEXT:   S_BRANCH %bb.8656  ; GFX9-NEXT: {{  $}}657  ; GFX9-NEXT: bb.8:658  ; GFX9-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc659  ; GFX9-NEXT: {{  $}}660  ; GFX9-NEXT:   S_ENDPGM 0661  bb.0.entry:662    successors: %bb.1(0x40000000), %bb.2 (0x40000000)663 664    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc665    %101:vgpr_32 = COPY $vgpr0666    %102:vgpr_32 = COPY $vgpr1667    %15:vreg_64 = COPY $vgpr2_vgpr3668    %20:sreg_64 = S_MOV_B64 0669    %30:vreg_64 = COPY %20670    %29:vgpr_32 = GLOBAL_LOAD_DWORD killed %30, 0, 0, implicit $exec :: (load (s32), addrspace 1)671    %6:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %29, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec672    %31:vgpr_32 = GLOBAL_LOAD_DWORD killed %15, 0, 0, implicit $exec :: (load (s32), addrspace 1)673    %7:vgpr_32 = contract nofpexcept V_FMAC_F32_e64 0, %31, 0, %101, 0, %102, 0, 0, implicit $mode, implicit $exec674    S_CBRANCH_EXECZ %bb.2, implicit $exec675    S_BRANCH %bb.1676 677  bb.1:678    successors: %bb.2(0x80000000)679    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc680    S_NOP 0681    S_BRANCH %bb.2682 683  bb.2:684    successors: %bb.3(0x40000000), %bb.4(0x40000000)685    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc686 687    S_NOP 0, implicit %6, implicit %7688    %16:vgpr_32(s32) = COPY $vgpr0689    %23:sreg_32 = S_MOV_B32 1690    %24:sreg_64 = V_CMP_LT_I32_e64 %16(s32), %23, implicit $exec691    %0:sreg_64 = COPY %24692    %5:sreg_64 = SI_IF %0, %bb.4, implicit-def dead $exec, implicit-def dead $scc, implicit $exec693    S_BRANCH %bb.3694 695  bb.3:696    successors: %bb.4(0x80000000)697    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc698 699    S_NOP 0700    S_BRANCH %bb.4701 702  bb.4:703    successors: %bb.5(0x40000000), %bb.7(0x40000000)704    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc705 706    SI_END_CF %5, implicit-def dead $exec, implicit-def dead $scc, implicit $exec707    S_CBRANCH_EXECZ %bb.7, implicit $exec708    S_BRANCH %bb.5709 710  bb.5:711    successors: %bb.6(0x04000000), %bb.5(0x7c000000)712    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc713 714    S_NOP 0715    S_CBRANCH_EXECZ %bb.5, implicit $exec716    S_BRANCH %bb.6717 718  bb.6:719    successors: %bb.7(0x80000000)720    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc721 722    S_NOP 0723    S_BRANCH %bb.7724 725  bb.7:726    successors: %bb.8(0x04000000), %bb.2(0x7c000000)727    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc728 729    S_CBRANCH_VCCZ %bb.2, implicit $vcc730    S_BRANCH %bb.8731 732  bb.8:733    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc734    S_ENDPGM 0735...736---737name: test_no_sink_permlane_swap738tracksRegLiveness: true739machineFunctionInfo:740  isEntryFunction: true741body: |742  ; GFX9-LABEL: name: test_no_sink_permlane_swap743  ; GFX9: bb.0:744  ; GFX9-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)745  ; GFX9-NEXT:   liveins: $vgpr0746  ; GFX9-NEXT: {{  $}}747  ; GFX9-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0748  ; GFX9-NEXT:   [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec749  ; GFX9-NEXT:   [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0750  ; GFX9-NEXT:   [[COPY1:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]751  ; GFX9-NEXT:   [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY1]], 0, 0, implicit $exec :: (load (s32), addrspace 1)752  ; GFX9-NEXT:   [[V_PERMLANE32_SWAP_B32_e64_:%[0-9]+]]:vgpr_32, [[V_PERMLANE32_SWAP_B32_e64_1:%[0-9]+]]:vgpr_32 = V_PERMLANE32_SWAP_B32_e64 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD]], 0, 0, implicit $exec753  ; GFX9-NEXT:   [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0754  ; GFX9-NEXT:   [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1755  ; GFX9-NEXT:   [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY2]], [[S_MOV_B32_]], implicit $exec756  ; GFX9-NEXT:   [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec757  ; GFX9-NEXT:   S_BRANCH %bb.1758  ; GFX9-NEXT: {{  $}}759  ; GFX9-NEXT: bb.1:760  ; GFX9-NEXT:   successors: %bb.2(0x80000000)761  ; GFX9-NEXT: {{  $}}762  ; GFX9-NEXT:   [[V_MAX_I32_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I32_e64 [[V_PERMLANE32_SWAP_B32_e64_]], [[V_PERMLANE32_SWAP_B32_e64_1]], implicit $exec763  ; GFX9-NEXT: {{  $}}764  ; GFX9-NEXT: bb.2:765  ; GFX9-NEXT:   successors: %bb.3(0x80000000)766  ; GFX9-NEXT: {{  $}}767  ; GFX9-NEXT:   [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_MAX_I32_e64_]], %bb.1768  ; GFX9-NEXT:   SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec769  ; GFX9-NEXT: {{  $}}770  ; GFX9-NEXT: bb.3:771  ; GFX9-NEXT:   S_ENDPGM 0, implicit [[PHI]]772  bb.0:773    successors: %bb.2(0x40000000), %bb.1(0x40000000)774    liveins: $vgpr0775 776    %0:vgpr_32 = COPY $vgpr0777    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec778    %2:sreg_64 = S_MOV_B64 0779    %3:vreg_64 = COPY %2780    %4:vgpr_32 = GLOBAL_LOAD_DWORD killed %3, 0, 0, implicit $exec :: (load (s32), addrspace 1)781    %5:vgpr_32, %6:vgpr_32 = V_PERMLANE32_SWAP_B32_e64 %4, %4, 0, 0, implicit $exec782    %7:vgpr_32 = COPY $vgpr0783    %8:sreg_32 = S_MOV_B32 1784    %9:sreg_64 = V_CMP_LT_I32_e64 %7, %8, implicit $exec785    %10:sreg_64 = COPY %9786    %11:sreg_64 = SI_IF %10, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec787    S_BRANCH %bb.1788 789  bb.1:790    successors: %bb.2(0x80000000)791 792    %12:vgpr_32 = V_MAX_I32_e64 %5, %6, implicit $exec793 794  bb.2:795    successors: %bb.3(0x80000000)796 797    %13:vgpr_32 = PHI %1, %bb.0, %12, %bb.1798    SI_END_CF %11, implicit-def dead $exec, implicit-def dead $scc, implicit $exec799 800  bb.3:801    S_ENDPGM 0, implicit %13802...803