brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · 5bc1361 Raw
219 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -run-pass=si-pre-emit-peephole -o -  %s | FileCheck %s3 4---5name: skip_branch_taildup_endpgm6machineFunctionInfo:7  isEntryFunction: true8body:             |9  ; CHECK-LABEL: name: skip_branch_taildup_endpgm10  ; CHECK: bb.0:11  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.1(0x40000000)12  ; CHECK-NEXT:   liveins: $vgpr0, $sgpr4_sgpr5, $sgpr713  ; CHECK-NEXT: {{  $}}14  ; CHECK-NEXT:   renamable $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM renamable $sgpr4_sgpr5, 4, 0 :: (dereferenceable invariant load (s64), align 16, addrspace 4)15  ; CHECK-NEXT:   renamable $vgpr0 = V_LSHLREV_B32_e32 2, killed $vgpr0, implicit $exec16  ; CHECK-NEXT:   S_WAITCNT 12717  ; CHECK-NEXT:   $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec18  ; CHECK-NEXT:   renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec19  ; CHECK-NEXT:   renamable $vgpr1 = V_ADDC_U32_e32 0, killed $vgpr1, implicit-def $vcc, implicit killed $vcc, implicit $exec20  ; CHECK-NEXT:   renamable $vgpr0 = FLAT_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 1)21  ; CHECK-NEXT:   renamable $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed renamable $sgpr4_sgpr5, 0, 0 :: (dereferenceable invariant load (s64), align 16, addrspace 4)22  ; CHECK-NEXT:   S_WAITCNT 11223  ; CHECK-NEXT:   V_CMP_NE_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec24  ; CHECK-NEXT:   $sgpr2_sgpr3 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec25  ; CHECK-NEXT:   renamable $sgpr2_sgpr3 = S_XOR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def dead $scc26  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec27  ; CHECK-NEXT:   S_BRANCH %bb.328  ; CHECK-NEXT: {{  $}}29  ; CHECK-NEXT: bb.1:30  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.2(0x40000000)31  ; CHECK-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr332  ; CHECK-NEXT: {{  $}}33  ; CHECK-NEXT:   renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr2_sgpr3, implicit-def $exec, implicit-def $scc, implicit $exec34  ; CHECK-NEXT:   $exec = S_XOR_B64 $exec, renamable $sgpr2_sgpr3, implicit-def $scc35  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec36  ; CHECK-NEXT:   S_BRANCH %bb.437  ; CHECK-NEXT: {{  $}}38  ; CHECK-NEXT: bb.2:39  ; CHECK-NEXT:   liveins: $sgpr2_sgpr340  ; CHECK-NEXT: {{  $}}41  ; CHECK-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc42  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec43  ; CHECK-NEXT:   S_ENDPGM 044  ; CHECK-NEXT: {{  $}}45  ; CHECK-NEXT: bb.3:46  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.2(0x40000000)47  ; CHECK-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr348  ; CHECK-NEXT: {{  $}}49  ; CHECK-NEXT:   renamable $vgpr2 = V_MOV_B32_e32 15, implicit $exec50  ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr151  ; CHECK-NEXT:   $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec52  ; CHECK-NEXT:   renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr2_sgpr3, implicit-def $exec, implicit-def $scc, implicit $exec53  ; CHECK-NEXT:   $exec = S_XOR_B64 $exec, renamable $sgpr2_sgpr3, implicit-def $scc54  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec55  ; CHECK-NEXT:   S_BRANCH %bb.456  ; CHECK-NEXT: {{  $}}57  ; CHECK-NEXT: bb.4:58  ; CHECK-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2_sgpr359  ; CHECK-NEXT: {{  $}}60  ; CHECK-NEXT:   renamable $vgpr2 = V_MOV_B32_e32 8, implicit $exec61  ; CHECK-NEXT:   $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr162  ; CHECK-NEXT:   $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit killed $sgpr0_sgpr1, implicit $exec63  ; CHECK-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc64  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec65  ; CHECK-NEXT:   S_ENDPGM 066  bb.0:67    successors: %bb.1, %bb.268    liveins: $vgpr0, $sgpr4_sgpr5, $sgpr769 70    renamable $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM renamable $sgpr4_sgpr5, 4, 0 :: (dereferenceable invariant load (s64), align 16, addrspace 4)71    renamable $vgpr0 = V_LSHLREV_B32_e32 2, killed $vgpr0, implicit $exec72    S_WAITCNT 12773    $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $exec74    renamable $vgpr0 = V_ADD_CO_U32_e32 $sgpr0, killed $vgpr0, implicit-def $vcc, implicit $exec75    renamable $vgpr1 = V_ADDC_U32_e32 0, killed $vgpr1, implicit-def $vcc, implicit killed $vcc, implicit $exec76    renamable $vgpr0 = FLAT_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32), addrspace 1)77    renamable $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM killed renamable $sgpr4_sgpr5, 0, 0 :: (dereferenceable invariant load (s64), align 16, addrspace 4)78    S_WAITCNT 11279    V_CMP_NE_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec80    $sgpr2_sgpr3 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec81    renamable $sgpr2_sgpr3 = S_XOR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def dead $scc82    S_CBRANCH_EXECZ %bb.2, implicit $exec83    S_BRANCH %bb.184 85  bb.2:86    successors: %bb.3, %bb.487    liveins: $sgpr0_sgpr1, $sgpr2_sgpr388 89    renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr2_sgpr3, implicit-def $exec, implicit-def $scc, implicit $exec90    $exec = S_XOR_B64 $exec, renamable $sgpr2_sgpr3, implicit-def $scc91    S_CBRANCH_EXECZ %bb.4, implicit $exec92    S_BRANCH %bb.393 94  bb.4:95    liveins: $sgpr2_sgpr396 97    $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc98    renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec99    S_ENDPGM 0100 101  bb.1:102    successors: %bb.3, %bb.4103    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3104 105    renamable $vgpr2 = V_MOV_B32_e32 15, implicit $exec106    $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1107    $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1, implicit $exec108    renamable $sgpr2_sgpr3 = S_OR_SAVEEXEC_B64 killed renamable $sgpr2_sgpr3, implicit-def $exec, implicit-def $scc, implicit $exec109    $exec = S_XOR_B64 $exec, renamable $sgpr2_sgpr3, implicit-def $scc110    S_CBRANCH_EXECZ %bb.4, implicit $exec111    S_BRANCH %bb.3112 113  bb.3:114    liveins: $sgpr0_sgpr1, $sgpr2_sgpr3115 116    renamable $vgpr2 = V_MOV_B32_e32 8, implicit $exec117    $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr1118    $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit killed $sgpr0_sgpr1, implicit $exec119    $exec = S_OR_B64 $exec, killed renamable $sgpr2_sgpr3, implicit-def $scc120    renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec121    S_ENDPGM 0122 123...124 125---126name: skip_branch_taildup_ret127body:             |128  ; CHECK-LABEL: name: skip_branch_taildup_ret129  ; CHECK: bb.0:130  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.1(0x40000000)131  ; CHECK-NEXT:   liveins: $vgpr0, $sgpr30_sgpr31, $vgpr1_vgpr2132  ; CHECK-NEXT: {{  $}}133  ; CHECK-NEXT:   S_WAITCNT 0134  ; CHECK-NEXT:   V_CMP_NE_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec135  ; CHECK-NEXT:   $sgpr6_sgpr7 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec136  ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_XOR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def dead $scc137  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec138  ; CHECK-NEXT:   S_BRANCH %bb.3139  ; CHECK-NEXT: {{  $}}140  ; CHECK-NEXT: bb.1:141  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.2(0x40000000)142  ; CHECK-NEXT:   liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2143  ; CHECK-NEXT: {{  $}}144  ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec145  ; CHECK-NEXT:   $exec = S_XOR_B64 $exec, renamable $sgpr6_sgpr7, implicit-def $scc146  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec147  ; CHECK-NEXT:   S_BRANCH %bb.4148  ; CHECK-NEXT: {{  $}}149  ; CHECK-NEXT: bb.2:150  ; CHECK-NEXT:   liveins: $sgpr6_sgpr7, $sgpr30_sgpr31151  ; CHECK-NEXT: {{  $}}152  ; CHECK-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def $scc153  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec154  ; CHECK-NEXT:   S_SETPC_B64_return $sgpr30_sgpr31155  ; CHECK-NEXT: {{  $}}156  ; CHECK-NEXT: bb.3:157  ; CHECK-NEXT:   successors: %bb.4(0x40000000), %bb.2(0x40000000)158  ; CHECK-NEXT:   liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2159  ; CHECK-NEXT: {{  $}}160  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 15, implicit $exec161  ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec162  ; CHECK-NEXT:   $exec = S_XOR_B64 $exec, renamable $sgpr6_sgpr7, implicit-def $scc163  ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.2, implicit $exec164  ; CHECK-NEXT:   S_BRANCH %bb.4165  ; CHECK-NEXT: {{  $}}166  ; CHECK-NEXT: bb.4:167  ; CHECK-NEXT:   liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2168  ; CHECK-NEXT: {{  $}}169  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 8, implicit $exec170  ; CHECK-NEXT:   $exec = S_OR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def $scc171  ; CHECK-NEXT:   renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec172  ; CHECK-NEXT:   S_SETPC_B64_return $sgpr30_sgpr31173  bb.0:174    successors: %bb.1, %bb.2175    liveins: $vgpr0, $sgpr30_sgpr31, $vgpr1_vgpr2176 177    S_WAITCNT 0178    V_CMP_NE_U32_e32 0, killed $vgpr0, implicit-def $vcc, implicit $exec179    $sgpr6_sgpr7 = S_AND_SAVEEXEC_B64 $vcc, implicit-def $exec, implicit-def $scc, implicit $exec180    renamable $sgpr6_sgpr7 = S_XOR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def dead $scc181    S_CBRANCH_EXECZ %bb.2, implicit $exec182    S_BRANCH %bb.1183 184  bb.2:185    successors: %bb.3, %bb.4186    liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2187 188    renamable $sgpr6_sgpr7 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec189    $exec = S_XOR_B64 $exec, renamable $sgpr6_sgpr7, implicit-def $scc190    S_CBRANCH_EXECZ %bb.4, implicit $exec191    S_BRANCH %bb.3192 193  bb.4:194    liveins: $sgpr6_sgpr7, $sgpr30_sgpr31195 196    $exec = S_OR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def $scc197    renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec198    S_SETPC_B64_return $sgpr30_sgpr31199 200  bb.1:201    successors: %bb.3, %bb.4202    liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2203 204    renamable $vgpr0 = V_MOV_B32_e32 15, implicit $exec205    renamable $sgpr6_sgpr7 = S_OR_SAVEEXEC_B64 killed renamable $sgpr6_sgpr7, implicit-def $exec, implicit-def $scc, implicit $exec206    $exec = S_XOR_B64 $exec, renamable $sgpr6_sgpr7, implicit-def $scc207    S_CBRANCH_EXECZ %bb.4, implicit $exec208    S_BRANCH %bb.3209 210  bb.3:211    liveins: $sgpr6_sgpr7, $sgpr30_sgpr31, $vgpr1_vgpr2212 213    renamable $vgpr0 = V_MOV_B32_e32 8, implicit $exec214    $exec = S_OR_B64 $exec, killed renamable $sgpr6_sgpr7, implicit-def $scc215    renamable $vgpr0 = V_MOV_B32_e32 32, implicit $exec216    S_SETPC_B64_return $sgpr30_sgpr31217 218...219