xref: /llvm-project/llvm/test/CodeGen/AMDGPU/copy-overlap-sgpr-kill.mir (revision e4284a7c70cd6af818922cbe9722940fa2134ec0)
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