blob: 88a25dd3d839fb5c0a6b5d6b968bbfd7769b72a7 [file] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -simplify-mir -mtriple=amdgpu11.00 -mattr=+real-true16 -run-pass=si-shrink-instructions -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
# RUN: llc -simplify-mir -mtriple=amdgpu12.00 -mattr=+real-true16 -run-pass=si-shrink-instructions -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
---
name: swap_phys_condensed
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_phys_condensed
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_phys_sparse
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_phys_sparse
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
; GCN-NEXT: $vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_phys_liveout
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_phys_liveout
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_phys_liveout_superreg
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_phys_liveout_superreg
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_phys_overlap_x
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_vgpr1, $vgpr3_vgpr4
; GCN-LABEL: name: swap_phys_overlap_x
; GCN: liveins: $vgpr0_vgpr1, $vgpr3_vgpr4
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr3_vgpr4 = V_ADD_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr3_vgpr4, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
$vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
$vgpr3_vgpr4 = V_ADD_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr3_vgpr4, 0, 0, implicit $mode, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
...
---
name: swap_phys_clobber_y
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16
; GCN-LABEL: name: swap_phys_clobber_y
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
; GCN-NEXT: $vgpr1_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
; GCN-NEXT: $vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_ENDPGM 0
...
---
name: swap_virt_copy_vgpr_16
tracksRegLiveness: true
registers:
- { id: 0, class: vgpr_16 }
- { id: 1, class: vgpr_16 }
- { id: 2, class: vgpr_16 }
body: |
bb.0:
; GCN-LABEL: name: swap_virt_copy_vgpr_16
; GCN: [[DEF:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_16 = IMPLICIT_DEF
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_16 = COPY [[DEF]]
; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_16 = COPY [[DEF1]]
; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_16 = COPY [[COPY]]
%0 = IMPLICIT_DEF
%1 = IMPLICIT_DEF
%2 = COPY %0
%0 = COPY %1
%1 = COPY %2
...
---
name: swap_exact_max_insns_apart
tracksRegLiveness: true
body: |
bb.0:
; GCN-LABEL: name: swap_exact_max_insns_apart
; GCN: $vgpr0_lo16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr1_hi16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr2_lo16 = COPY $vgpr0_lo16
; GCN-NEXT: $vgpr3_hi16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr1_hi16 = IMPLICIT_DEF
$vgpr2_lo16 = COPY $vgpr0_lo16
$vgpr3_hi16 = IMPLICIT_DEF
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr0_lo16 = COPY $vgpr1_hi16
$vgpr1_hi16 = COPY $vgpr2_lo16
S_ENDPGM 0
...
---
name: swap_too_far
tracksRegLiveness: true
body: |
bb.0:
; GCN-LABEL: name: swap_too_far
; GCN: $vgpr0_lo16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr1_hi16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr2_lo16 = COPY $vgpr0_lo16
; GCN-NEXT: $vgpr3_hi16 = IMPLICIT_DEF
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr4_lo16 = COPY $vgpr3_hi16
; GCN-NEXT: $vgpr3_hi16 = COPY $vgpr4_lo16
; GCN-NEXT: $vgpr0_lo16 = COPY $vgpr1_hi16
; GCN-NEXT: $vgpr1_hi16 = COPY $vgpr2_lo16
; GCN-NEXT: S_ENDPGM 0
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr1_hi16 = IMPLICIT_DEF
$vgpr2_lo16 = COPY $vgpr0_lo16
$vgpr3_hi16 = IMPLICIT_DEF
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr4_lo16 = COPY $vgpr3_hi16
$vgpr3_hi16 = COPY $vgpr4_lo16
$vgpr0_lo16 = COPY $vgpr1_hi16
$vgpr1_hi16 = COPY $vgpr2_lo16
S_ENDPGM 0
...
---
name: swap_liveness_error_mov
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr5_hi16, $vgpr1_vgpr2
; GCN-LABEL: name: swap_liveness_error_mov
; GCN: liveins: $vgpr5_hi16, $vgpr1_vgpr2
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr6_lo16 = V_MOV_B16_t16_e32 $vgpr1_hi16, implicit $exec
; GCN-NEXT: $vgpr1_hi16, $vgpr5_hi16 = V_SWAP_B16 $vgpr5_hi16, $vgpr1_hi16, implicit $exec
; GCN-NEXT: $vgpr5_vgpr6 = IMPLICIT_DEF
; GCN-NEXT: $vgpr6_lo16 = V_MOV_B16_t16_e32 $vgpr7_hi16, implicit $exec, implicit $vgpr6_vgpr7
; GCN-NEXT: $vgpr5_hi16 = V_MOV_B16_t16_e32 $vgpr6_lo16, implicit $exec
; GCN-NEXT: S_ENDPGM 0
$vgpr6_lo16 = V_MOV_B16_t16_e32 $vgpr1_hi16, implicit $exec, implicit killed $vgpr1_vgpr2
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr5_hi16, implicit $exec
$vgpr5_hi16 = V_MOV_B16_t16_e32 $vgpr6_lo16, implicit $exec, implicit-def $vgpr5_vgpr6, implicit $vgpr6_vgpr7
$vgpr6_lo16 = V_MOV_B16_t16_e32 $vgpr7_hi16, implicit $exec, implicit $vgpr6_vgpr7
$vgpr5_hi16 = V_MOV_B16_t16_e32 $vgpr6_lo16, implicit $exec
S_ENDPGM 0
...
---
name: swap_liveness_error_copy
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr5_hi16, $vgpr1_vgpr2
; GCN-LABEL: name: swap_liveness_error_copy
; GCN: liveins: $vgpr5_hi16, $vgpr1_vgpr2
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr6_lo16 = COPY $vgpr1_hi16
; GCN-NEXT: $vgpr1_hi16, $vgpr5_hi16 = V_SWAP_B16 $vgpr5_hi16, $vgpr1_hi16, implicit $exec
; GCN-NEXT: $vgpr5_vgpr6 = IMPLICIT_DEF
; GCN-NEXT: $vgpr6_lo16 = COPY $vgpr7, implicit $vgpr6_vgpr7
; GCN-NEXT: $vgpr5_hi16 = COPY $vgpr6_lo16
; GCN-NEXT: S_ENDPGM 0
$vgpr6_lo16 = COPY $vgpr1_hi16, implicit killed $vgpr1_vgpr2
$vgpr1_hi16 = COPY killed $vgpr5_hi16
$vgpr5_hi16 = COPY $vgpr6_lo16, implicit-def $vgpr5_vgpr6, implicit $vgpr6_vgpr7
$vgpr6_lo16 = COPY $vgpr7, implicit $vgpr6_vgpr7
$vgpr5_hi16 = COPY $vgpr6_lo16
S_ENDPGM 0
...
---
name: swap_killed_t_early
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_killed_t_early
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec, implicit killed $vgpr2_lo16
; GCN-NEXT: $vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec, implicit killed $vgpr2_lo16
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 undef $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_killed_t_late
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_killed_t_late
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
; GCN-NEXT: $vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec, implicit killed $vgpr2_lo16
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec, implicit killed $vgpr2_lo16
$vgpr1_hi16 = V_MOV_B16_t16_e32 undef $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: swap_killed_x
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-LABEL: name: swap_killed_x
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr4_lo16, $vgpr6_lo16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec, implicit killed $vgpr0_lo16
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr1_hi16
$vgpr2_lo16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr4_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 killed $vgpr1_hi16, implicit $exec
$vgpr5_hi16 = V_MOV_B16_t16_e32 killed $vgpr6_lo16, implicit $exec, implicit killed $vgpr0_lo16
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr2_lo16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr1_hi16
...
---
name: implicit_ops_mov_x_swap_b16
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-LABEL: name: implicit_ops_mov_x_swap_b16
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec, implicit $vgpr2_lo16, implicit killed $vgpr1_vgpr2
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 $vgpr1_hi16, implicit $exec, implicit $vgpr2_lo16, implicit killed $vgpr1_vgpr2
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr3_hi16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: implicit_ops_mov_t_swap_b16
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-LABEL: name: implicit_ops_mov_t_swap_b16
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec, implicit $vgpr2_lo16, implicit killed $vgpr1_vgpr2, implicit-def $vgpr1_hi16
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec, implicit $vgpr2_lo16, implicit killed $vgpr1_vgpr2, implicit-def $vgpr1_hi16
$vgpr0_lo16 = V_MOV_B16_t16_e32 $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr3_hi16, implicit $exec
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...
---
name: implicit_ops_mov_y_swap_b16
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr2_lo16, $sgpr30_sgpr31
; GCN-LABEL: name: implicit_ops_mov_y_swap_b16
; GCN: liveins: $vgpr0_lo16, $vgpr1_hi16, $vgpr2_lo16, $sgpr30_sgpr31
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr3_hi16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_lo16, $vgpr1_hi16 = V_SWAP_B16 $vgpr1_hi16, $vgpr0_lo16, implicit $exec
; GCN-NEXT: $vgpr0_vgpr1 = IMPLICIT_DEF
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
$vgpr3_hi16 = V_MOV_B16_t16_e32 killed $vgpr0_lo16, implicit $exec
$vgpr0_lo16 = V_MOV_B16_t16_e32 $vgpr1_hi16, implicit $exec
$vgpr1_hi16 = V_MOV_B16_t16_e32 killed $vgpr3_hi16, implicit $exec, implicit $vgpr2_lo16, implicit-def $vgpr0_vgpr1, implicit killed $vgpr3_hi16
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0_lo16, implicit $vgpr1_hi16
...