11f0aadfaSSebastian Neubauer# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 21f0aadfaSSebastian Neubauer# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -verify-machineinstrs -run-pass=postrapseudos -o - %s | FileCheck %s 31f0aadfaSSebastian Neubauer 41f0aadfaSSebastian Neubauer# Don't set a kill of the super register on the last instruction with 51f0aadfaSSebastian Neubauer# an overlapping copy. This would kill part of the values in the 61f0aadfaSSebastian Neubauer# result copies. 71f0aadfaSSebastian Neubauer 81f0aadfaSSebastian Neubauer--- 91f0aadfaSSebastian Neubauername: overlapping_copy_kill_undef_reg_after_copy 101f0aadfaSSebastian NeubauertracksRegLiveness: true 111f0aadfaSSebastian Neubauerbody: | 121f0aadfaSSebastian Neubauer bb.0: 131f0aadfaSSebastian Neubauer liveins: $sgpr30_sgpr31, $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 141f0aadfaSSebastian Neubauer 151f0aadfaSSebastian Neubauer ; CHECK-LABEL: name: overlapping_copy_kill_undef_reg_after_copy 161f0aadfaSSebastian Neubauer ; CHECK: liveins: $sgpr30_sgpr31, $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 171f0aadfaSSebastian Neubauer ; CHECK-NEXT: {{ $}} 181f0aadfaSSebastian Neubauer ; CHECK-NEXT: $sgpr0_sgpr1 = S_MOV_B64 $sgpr4_sgpr5, implicit $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 191f0aadfaSSebastian Neubauer ; CHECK-NEXT: $sgpr2_sgpr3 = S_MOV_B64 $sgpr6_sgpr7, implicit $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 201f0aadfaSSebastian Neubauer ; CHECK-NEXT: $sgpr4_sgpr5 = S_MOV_B64 $sgpr8_sgpr9, implicit $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 211f0aadfaSSebastian Neubauer ; CHECK-NEXT: $sgpr6_sgpr7 = S_MOV_B64 $sgpr10_sgpr11, implicit $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 221f0aadfaSSebastian Neubauer ; CHECK-NEXT: renamable $sgpr1 = S_ADD_I32 0, $sgpr1, implicit-def $scc 231f0aadfaSSebastian Neubauer ; CHECK-NEXT: S_SETPC_B64 $sgpr30_sgpr31, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7 241f0aadfaSSebastian Neubauer renamable $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY killed renamable $sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11 251f0aadfaSSebastian Neubauer renamable $sgpr1 = S_ADD_I32 0, $sgpr1, implicit-def $scc 261f0aadfaSSebastian Neubauer S_SETPC_B64 $sgpr30_sgpr31, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7 271f0aadfaSSebastian Neubauer 281f0aadfaSSebastian Neubauer... 291f0aadfaSSebastian Neubauer 301f0aadfaSSebastian Neubauer--- 311f0aadfaSSebastian Neubauername: nonoverlapping_copy_kill 321f0aadfaSSebastian NeubauertracksRegLiveness: true 331f0aadfaSSebastian Neubauerbody: | 341f0aadfaSSebastian Neubauer bb.0: 35*e4284a7cSJay Foad liveins: $sgpr30_sgpr31, $sgpr4_sgpr5_sgpr6 361f0aadfaSSebastian Neubauer 371f0aadfaSSebastian Neubauer ; CHECK-LABEL: name: nonoverlapping_copy_kill 38*e4284a7cSJay Foad ; CHECK: liveins: $sgpr30_sgpr31, $sgpr4_sgpr5_sgpr6 391f0aadfaSSebastian Neubauer ; CHECK-NEXT: {{ $}} 40*e4284a7cSJay Foad ; CHECK-NEXT: $sgpr0_sgpr1 = S_MOV_B64 $sgpr4_sgpr5, implicit $sgpr4_sgpr5_sgpr6, implicit-def $sgpr0_sgpr1_sgpr2 41*e4284a7cSJay Foad ; CHECK-NEXT: $sgpr2 = S_MOV_B32 $sgpr6, implicit killed $sgpr4_sgpr5_sgpr6 421f0aadfaSSebastian Neubauer ; CHECK-NEXT: renamable $sgpr1 = S_ADD_I32 0, $sgpr1, implicit-def $scc 431f0aadfaSSebastian Neubauer ; CHECK-NEXT: S_SETPC_B64 $sgpr30_sgpr31, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2 44*e4284a7cSJay Foad renamable $sgpr0_sgpr1_sgpr2 = COPY killed renamable $sgpr4_sgpr5_sgpr6 451f0aadfaSSebastian Neubauer renamable $sgpr1 = S_ADD_I32 0, $sgpr1, implicit-def $scc 461f0aadfaSSebastian Neubauer S_SETPC_B64 $sgpr30_sgpr31, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2 471f0aadfaSSebastian Neubauer 481f0aadfaSSebastian Neubauer... 49