These used to consistently be zeroed pre-gfx9, but gfx9 made the situation complicated since now some still do and some don't. This also manages to pick up a few cases that the pattern fails to optimize away. We handle some cases with instruction patterns, but some get through. In particular this improves the integer cases.
1955 lines
92 KiB
YAML
1955 lines
92 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX8 %s
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX9 %s
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX10 %s
|
|
|
|
# Test we recognize all forms of and with mask as clearing the high bits.
|
|
---
|
|
name: v_cvt_f16_f32_altmask
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_cvt_f16_f32_altmask
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %smask:sreg_32 = S_MOV_B32 65535
|
|
; GFX8: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX8: $vgpr1 = COPY %op
|
|
; GFX8: $vgpr2 = COPY %op
|
|
; GFX9-LABEL: name: v_cvt_f16_f32_altmask
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %smask:sreg_32 = S_MOV_B32 65535
|
|
; GFX9: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op
|
|
; GFX9: $vgpr1 = COPY %op
|
|
; GFX9: $vgpr2 = COPY %op
|
|
; GFX10-LABEL: name: v_cvt_f16_f32_altmask
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: %and1:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
|
|
; GFX10: %and2:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and0
|
|
; GFX10: $vgpr1 = COPY %and1
|
|
; GFX10: $vgpr2 = COPY %and2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
|
|
%and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
%smask:sreg_32 = S_MOV_B32 65535
|
|
%and1:vgpr_32 = V_AND_B32_e64 %smask, %op, implicit $exec
|
|
%vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec
|
|
%and2:vgpr_32 = V_AND_B32_e64 %vmask, %op, implicit $exec
|
|
$vgpr0 = COPY %and0
|
|
$vgpr1 = COPY %and1
|
|
$vgpr2 = COPY %and2
|
|
|
|
...
|
|
|
|
# Test we do not assume the high bits are zero
|
|
---
|
|
name: wrong_mask_value
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: wrong_mask_value
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %mask:sreg_32 = S_MOV_B32 65534
|
|
; GFX8: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %and
|
|
; GFX9-LABEL: name: wrong_mask_value
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %mask:sreg_32 = S_MOV_B32 65534
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: wrong_mask_value
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e64 65534, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec
|
|
%mask:sreg_32 = S_MOV_B32 65534
|
|
%and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_cvt_f16_f32
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_cvt_f16_f32
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_cvt_f16_f32
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_cvt_f16_f32
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_cvt_f16_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_cvt_f16_u16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_cvt_f16_u16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_cvt_f16_u16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_cvt_f16_i16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_cvt_f16_i16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_cvt_f16_i16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_cvt_f16_i16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_rcp_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_rcp_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_rcp_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_rcp_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
---
|
|
name: v_rsq_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_rsq_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_rsq_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_rsq_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
---
|
|
name: v_sqrt_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_sqrt_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_sqrt_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_sqrt_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_log_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_log_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_log_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_log_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_exp_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_exp_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_exp_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_exp_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_sin_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_sin_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_sin_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_sin_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_cos_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_cos_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_cos_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_cos_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_floor_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_floor_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_floor_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_floor_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_ceil_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_ceil_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_ceil_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_ceil_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_trunc_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_trunc_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_trunc_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_trunc_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_rndne_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_rndne_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_rndne_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_rndne_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_fract_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_fract_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_fract_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_fract_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_frexp_mant_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_frexp_mant_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_frexp_mant_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_frexp_mant_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_frexp_exp_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0
|
|
; GFX8-LABEL: name: v_frexp_exp_f16
|
|
; GFX8: liveins: $vgpr0
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_frexp_exp_f16
|
|
; GFX9: liveins: $vgpr0
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_frexp_exp_f16
|
|
; GFX10: liveins: $vgpr0
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop1
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 %0, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop1
|
|
|
|
...
|
|
|
|
---
|
|
name: v_ldexp_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_ldexp_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_ldexp_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_ldexp_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_lshlrev_b16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_lshlrev_b16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_lshlrev_b16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_lshlrev_b16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_lshrrev_b16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_lshrrev_b16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_lshrrev_b16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_lshrrev_b16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_ashrrev_i16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_ashrrev_i16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_ashrrev_i16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_ashrrev_i16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_add_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_add_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_add_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_add_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_sub_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_sub_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_sub_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_sub_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_subrev_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_subrev_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_subrev_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_subrev_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 %0, %1, 0, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_mul_lo_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_mul_lo_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_mul_lo_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_mul_lo_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_add_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_add_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_add_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_add_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_sub_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_sub_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_sub_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_sub_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_subrev_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_subrev_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_subrev_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_subrev_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_mul_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_mul_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_mul_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_mul_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_max_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_max_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_max_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_max_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_min_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_min_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop1
|
|
; GFX9-LABEL: name: v_min_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop1
|
|
; GFX10-LABEL: name: v_min_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec
|
|
%op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_max_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_max_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_max_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_max_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
---
|
|
name: v_min_u16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_min_u16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_min_u16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_min_u16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_max_i16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_max_i16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_max_i16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_max_i16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
---
|
|
name: v_min_i16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_min_i16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX8: $vgpr1 = COPY %op_vop2
|
|
; GFX9-LABEL: name: v_min_i16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %op_vop3
|
|
; GFX9: $vgpr1 = COPY %op_vop2
|
|
; GFX10-LABEL: name: v_min_i16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
; GFX10: $vgpr1 = COPY %and_vop2
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 %0, %1, implicit $mode, implicit $exec
|
|
%op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 %0, %1, implicit $mode, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
$vgpr0 = COPY %and_vop3
|
|
$vgpr1 = COPY %and_vop2
|
|
|
|
...
|
|
|
|
---
|
|
name: v_mad_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8-LABEL: name: v_mad_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_mad_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_mad_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_fma_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8-LABEL: name: v_fma_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_fma_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_fma_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_div_fixup_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8-LABEL: name: v_div_fixup_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_div_fixup_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_div_fixup_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_madak_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_madak_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_madak_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_madak_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op:vgpr_32 = nofpexcept V_MADAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_madmk_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_madmk_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_madmk_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_madmk_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op:vgpr_32 = nofpexcept V_MADMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_fmaak_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_fmaak_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_fmaak_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_fmaak_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op:vgpr_32 = nofpexcept V_FMAAK_F16 %0, %1, 1234, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_fmamk_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1
|
|
; GFX8-LABEL: name: v_fmamk_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op
|
|
; GFX9-LABEL: name: v_fmamk_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: v_fmamk_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%op:vgpr_32 = nofpexcept V_FMAMK_F16 %0, 1234, %1, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: v_mac_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8-LABEL: name: v_mac_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop2
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX9-LABEL: name: v_mac_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX9: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and_vop2
|
|
; GFX9: $vgpr0 = COPY %and_vop3
|
|
; GFX10-LABEL: name: v_mac_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop2
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
|
|
%op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
$vgpr0 = COPY %and_vop2
|
|
$vgpr0 = COPY %and_vop3
|
|
|
|
...
|
|
|
|
---
|
|
name: v_fmac_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8-LABEL: name: v_fmac_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX8: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %op_vop2
|
|
; GFX8: $vgpr0 = COPY %op_vop3
|
|
; GFX9-LABEL: name: v_fmac_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX9: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX9: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and_vop2
|
|
; GFX9: $vgpr0 = COPY %and_vop3
|
|
; GFX10-LABEL: name: v_fmac_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec
|
|
; GFX10: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
; GFX10: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and_vop2
|
|
; GFX10: $vgpr0 = COPY %and_vop3
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec
|
|
%op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
|
|
%and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec
|
|
%and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec
|
|
$vgpr0 = COPY %and_vop2
|
|
$vgpr0 = COPY %and_vop3
|
|
|
|
...
|
|
|
|
---
|
|
name: no_fold_v_mad_mixlo_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX8-LABEL: name: no_fold_v_mad_mixlo_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %and
|
|
; GFX9-LABEL: name: no_fold_v_mad_mixlo_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: no_fold_v_mad_mixlo_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%3:vgpr_32 = COPY $vgpr3
|
|
%op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|
|
|
|
---
|
|
name: no_fold_v_mad_mixhi_f16
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX8-LABEL: name: no_fold_v_mad_mixhi_f16
|
|
; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX8: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX8: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX8: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX8: $vgpr0 = COPY %and
|
|
; GFX9-LABEL: name: no_fold_v_mad_mixhi_f16
|
|
; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX9: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX9: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX9: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX9: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX9: $vgpr0 = COPY %and
|
|
; GFX10-LABEL: name: no_fold_v_mad_mixhi_f16
|
|
; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
|
|
; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX10: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3
|
|
; GFX10: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec
|
|
; GFX10: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
; GFX10: $vgpr0 = COPY %and
|
|
%0:vgpr_32 = COPY $vgpr0
|
|
%1:vgpr_32 = COPY $vgpr1
|
|
%2:vgpr_32 = COPY $vgpr2
|
|
%3:vgpr_32 = COPY $vgpr3
|
|
%op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec
|
|
%and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec
|
|
$vgpr0 = COPY %and
|
|
|
|
...
|