blob: a4ace9cfa54449a6b0b3af69437400b527bf573c [file] [edit]
# REQUIRES: asserts
# RUN: llc -mtriple=amdgcn -mcpu=gfx942 -start-before=machine-scheduler -verify-misched -misched-print-dags -stop-after=machine-scheduler -filetype=null %s 2>&1 | FileCheck -check-prefix=GCN %s
# Note: the source modifier is the parameter before the source itself. So,
# src0_modifiers is the parameter in the list before src0, src1_modifiers before
# src1.
# For the srcN_modifiers, the following values are relevant for these tests:
# - 0: op_sel=0 and op_sel_hi=0
# - 4: op_sel=1 and op_sel_hi=0
# - 8: op_sel=0 and op_sel_hi=1
# - 12: op_sel=1 and op_sel_hi=1
# For every test where we test two register arguments, the size of the arguments
# and the used parts are encoded in the test name. Examples:
# - *_32_lo_lo_32_lo_lo: two args of size 32 where only the low parts are used
# - *_16_lo_hi_16_hi_hi: two args of size 16 where both parts of the first arg
# and the high part of the second arg are used
# For a "(lo|hi)_(lo|hi)" pair, the first field denotes the part controlled by
# op_sel, the second field the one controlled by op_sel_hi.
#
# For the mad_mix_* tests, op_sel and op_sel_hi have slightly different semantics:
# - op_sel_hi: selects if the full 32bit of the arg should be used or only a
# 16bit part (which is then selected by op_sel)
# op_sel_hi=0 selects 32bit
# op_sel_hi=1 selects 16bit
# - op_sel: selects low/high part of arg
# So, for the srcN_modifiers, we have the following values:
# - 0: op_sel=0 and 32bit (op_sel_hi=0)
# - 4: op_sel=1 and 32bit (op_sel_hi=0)
# - 8: op_sel=0 and 16bit (op_sel_hi=1)
# - 12: op_sel=1 and 16bit (op_sel_hi=1)
---
name: pk_mul_virtual_32_lo_lo_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.sub0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 0, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.sub0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1:vreg_64_align2 = IMPLICIT_DEF
%1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 0, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_32_lo_lo_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 0, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr1 = IMPLICIT_DEF
$vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 0, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_lo_lo_16_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_lo_lo_16_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_32_lo_lo_32_lo_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.sub0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 0, %0:vreg_64_align2, 8, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 3
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.sub0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1:vreg_64_align2 = IMPLICIT_DEF
%1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 0, %0:vreg_64_align2, 8, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_32_lo_lo_32_hi_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 0, $vgpr0_vgpr1, 4, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr1
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr1 = IMPLICIT_DEF
$vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 0, $vgpr0_vgpr1, 4, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_lo_lo_16_lo_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0:vgpr_32, 8, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 3
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0:vgpr_32, 8, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_lo_lo_16_hi_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 4, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 4, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_32_hi_lo_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.sub0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 4, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 3
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.sub0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1:vreg_64_align2 = IMPLICIT_DEF
%1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 4, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_32_lo_hi_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr1 = IMPLICIT_DEF
$vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_hi_lo_16_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 4, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 3
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 4, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_hi_lo_16_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 4, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 4, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_32_hi_hi_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.sub0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 12, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.sub0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1:vreg_64_align2 = IMPLICIT_DEF
%1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 12, %0:vreg_64_align2, 0, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_32_hi_hi_32_lo_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 12, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 6
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr1 = IMPLICIT_DEF
$vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 12, $vgpr0_vgpr1, 0, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_hi_hi_16_hi_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 12, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 12, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_hi_hi_16_hi_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_32_hi_hi_32_hi_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.sub0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 12, %0:vreg_64_align2, 12, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
undef %0.sub0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1:vreg_64_align2 = IMPLICIT_DEF
%1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 12, %0:vreg_64_align2, 12, %0:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_32_hi_hi_32_hi_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 12, $vgpr0_vgpr1, 12, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr1
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr1 = IMPLICIT_DEF
$vgpr0_vgpr1 = nofpexcept V_PK_MUL_F32 12, $vgpr0_vgpr1, 12, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_lo_lo_16_lo_lo_superreg_definition
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1_hi16:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0.sub0:vreg_64_align2, 0, %0.sub1:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
%0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1_hi16:vreg_64_align2 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 0, %0.sub0:vreg_64_align2, 0, %0.sub1:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_lo_lo_16_lo_lo_superreg_definition
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 0, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 2
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr1_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_vgpr1 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 0, $vgpr0, 0, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_virtual_16_hi_hi_16_hi_hi_superreg_definition
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.sub1_lo16:vreg_64_align2 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_PK_MUL_F16 12, %0.sub0:vreg_64_align2, 12, %0.sub1:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
%0:vreg_64_align2 = IMPLICIT_DEF
%0.sub1_lo16:vreg_64_align2 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_PK_MUL_F16 12, %0.sub0:vreg_64_align2, 12, %0.sub1:vreg_64_align2, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_hi_hi_16_hi_hi_superreg_definition
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 5
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 2
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr1_hi16
; GCN-NEXT: Pressure Diff
;
$vgpr0_vgpr1 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: pk_mul_physical_16_hi_hi_16_hi_hi_superreg_definition1
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_vgpr1 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr1_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr1_hi16
; GCN-NEXT: Pressure Diff
;
$vgpr0_vgpr1 = IMPLICIT_DEF
$vgpr1_lo16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_PK_MUL_F16 12, $vgpr0, 12, $vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_virtual_16_lo_16_lo_16_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 8, %0:vgpr_32, 8, %0:vgpr_32, 8, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_MAD_MIX_F32 8, %0:vgpr_32, 8, %0:vgpr_32, 8, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_physical_16_lo_16_lo_16_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_MAD_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_MAD_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_virtual_16_hi_16_hi_16_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 12, %0:vgpr_32, 12, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_MAD_MIX_F32 12, %0:vgpr_32, 12, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_physical_16_hi_16_hi_16_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_MAD_MIX_F32 12, $vgpr0, 12, $vgpr0, 12, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_MAD_MIX_F32 12, $vgpr0, 12, $vgpr0, 12, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_virtual_16_hi_16_lo_16_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 12, %0:vgpr_32, 8, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_MAD_MIX_F32 12, %0:vgpr_32, 8, %0:vgpr_32, 12, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_physical_16_hi_16_lo_16_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_MAD_MIX_F32 12, $vgpr0, 8, $vgpr0, 12, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 6
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(1): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Ord Latency=0 Artificial
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_MAD_MIX_F32 12, $vgpr0, 8, $vgpr0, 12, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_virtual_32_hi_32_hi_32_hi
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): dead %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 4, %0:vgpr_32, 4, %0:vgpr_32, 4, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 0
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: SU(0): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
undef %0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_MAD_MIX_F32 4, %0:vgpr_32, 4, %0:vgpr_32, 4, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_physical_32_lo_32_lo_32_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0 = nofpexcept V_MAD_MIX_F32 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(0): Out Latency=1
; GCN-NEXT: SU(0): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_MAD_MIX_F32 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_virtual_32_hi_32_hi_32_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): %0:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(1): %0.lo16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(2): %0.hi16:vgpr_32 = IMPLICIT_DEF
; GCN-LABEL: SU(3): dead %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 4, %0:vgpr_32, 4, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 2
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 1
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(2): Data Latency=0 Reg=%0
; GCN-NEXT: SU(1): Data Latency=0 Reg=%0
; GCN-NEXT: Pressure Diff
;
%0:vgpr_32 = IMPLICIT_DEF
%0.lo16:vgpr_32 = IMPLICIT_DEF
%0.hi16:vgpr_32 = IMPLICIT_DEF
%1:vgpr_32 = nofpexcept V_MAD_MIX_F32 4, %0:vgpr_32, 4, %0:vgpr_32, 0, %0:vgpr_32, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...
---
name: mad_mix_physical_32_lo_32_hi_32_lo
tracksRegLiveness: true
machineFunctionInfo:
stackPtrOffsetReg: '$sgpr32'
body: |
bb.0:
; GCN-LABEL: SU(0): $vgpr0 = IMPLICIT_DEF
; GCN-LABEL: SU(1): $vgpr0_lo16 = IMPLICIT_DEF
; GCN-LABEL: SU(2): $vgpr0_hi16 = IMPLICIT_DEF
; GCN-LABEL: SU(3): $vgpr0 = nofpexcept V_MAD_MIX_F32 0, $vgpr0, 4, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: # preds left : 4
; GCN-NEXT: # succs left : 0
; GCN-NEXT: # rdefs left : 0
; GCN-NEXT: Latency : 1
; GCN-NEXT: Depth : 2
; GCN-NEXT: Height : 0
; GCN-NEXT: Predecessors:
; GCN-NEXT: SU(2): Out Latency=1
; GCN-NEXT: SU(2): Data Latency=0 Reg=$vgpr0_hi16
; GCN-NEXT: SU(1): Out Latency=1
; GCN-NEXT: SU(1): Data Latency=0 Reg=$vgpr0_lo16
; GCN-NEXT: Pressure Diff
;
$vgpr0 = IMPLICIT_DEF
$vgpr0_lo16 = IMPLICIT_DEF
$vgpr0_hi16 = IMPLICIT_DEF
$vgpr0 = nofpexcept V_MAD_MIX_F32 0, $vgpr0, 4, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0
...