| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 |
| # RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s |
| # RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefix=PAIR %s |
| |
| --- |
| name: vopd_combine_low_vgprs |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_low_vgprs |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_low_vgprs |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_mov_max_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_mov_max_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_MAX_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_mov_max_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MAX_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_MAX_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_mov_min_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_mov_min_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_MIN_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_mov_min_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MIN_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_MIN_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_max_i32_max_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_max_i32_max_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MAX_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_MAX_I32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_max_i32_max_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = V_MAX_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_MAX_I32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MAX_I32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| $vgpr3 = V_MAX_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_min_i32_min_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_min_i32_min_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MIN_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_MIN_I32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_min_i32_min_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = V_MIN_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_MIN_I32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MIN_I32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| $vgpr3 = V_MIN_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_mov_sub_nc_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_mov_sub_nc_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_SUB_U32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_mov_sub_nc_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_SUB_U32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_SUB_U32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_mov_lshrrev_b32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_mov_lshrrev_b32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_LSHRREV_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_mov_lshrrev_b32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_LSHRREV_B32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_LSHRREV_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_mov_ashrrev_i32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_mov_ashrrev_i32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_ASHRREV_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_mov_ashrrev_i32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ASHRREV_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_ASHRREV_I32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_same_vgprs_banks |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_same_vgprs_banks |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, killed $vgpr5, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_same_vgprs_banks |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, killed $vgpr5, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr5, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_same_vgprs |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_same_vgprs |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_same_vgprs |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr0, $vgpr1, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_same_dst_parity |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_same_dst_parity |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr5 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_e96_gfx1250 0, $vgpr1, 0, $vgpr1, 0, $vgpr0, 0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_x_fmaak |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_x_fmaak |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = V_FMAAK_F32 killed $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr0, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_x_fmaak |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1, $vgpr2 = V_DUAL_FMAAK_F32_X_MOV_B32_e32_gfx1250 killed $sgpr0, $vgpr0, 981467136, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr0, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_y_fmaak |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_y_fmaak |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = V_FMAAK_F32 killed $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr0, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_y_fmaak |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32_gfx1250 $vgpr0, killed $sgpr0, $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr0, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| $vgpr2 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_x_fmaak_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_x_fmaak_same_dst_parity |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = V_FMAAK_F32 killed $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr0, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_x_fmaak_same_dst_parity |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = V_FMAAK_F32 killed $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr0, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_y_fmaak_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_y_fmaak_same_dst_parity |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_y_fmaak_same_dst_parity |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec |
| $vgpr3 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_literal_x |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_literal_x |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_literal_x |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 12345, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_literal_y |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_literal_y |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_literal_y |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_MUL_F32_e32_X_SUB_F32_e32_gfx1250 $vgpr0, $vgpr0, 12345, $vgpr1, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| # Below 2 tests cannot use VOPD because of the vdst parity and cannot use |
| # VOPD3 because of the literal use. |
| --- |
| name: vopd_no_combine_literal_x |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_literal_x |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_literal_x |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_literal_y |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_literal_y |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_SUB_F32_e32 12345, killed $vgpr1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_literal_y |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_SUB_F32_e32 12345, killed $vgpr1, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_u32_add_f32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_u32_add_f32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_u32_add_f32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4, $vgpr6 = V_DUAL_ADD_U32_e32_X_ADD_F32_e32_e96_gfx1250 $vgpr0, $vgpr1, 0, killed $vgpr2, 0, killed $vgpr3, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f32_add_u32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f32_add_u32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f32_add_u32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr4 = V_DUAL_ADD_F32_e32_X_ADD_U32_e32_e96_gfx1250 0, killed $vgpr2, 0, killed $vgpr3, $vgpr0, $vgpr1, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_u32_add_f32_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_u32_add_f32_same_dst_parity |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_ADD_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_u32_add_f32_same_dst_parity |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5, $vgpr4 = V_DUAL_ADD_F32_e32_X_ADD_U32_e32_gfx1250 killed $vgpr2, killed $vgpr3, killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f32_add_u32_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f32_add_u32_same_dst_parity |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_ADD_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f32_add_u32_same_dst_parity |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5, $vgpr4 = V_DUAL_ADD_F32_e32_X_ADD_U32_e32_gfx1250 killed $vgpr2, killed $vgpr3, killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr5 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| $vgpr4 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_lshl_lshl |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_lshl_lshl |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_LSHLREV_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_LSHLREV_B32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_lshl_lshl |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4, $vgpr6 = V_DUAL_LSHLREV_B32_e32_X_LSHLREV_B32_e32_e96_gfx1250 killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = V_LSHLREV_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_LSHLREV_B32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_ashr_ashr |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_ashr_ashr |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_ASHRREV_I32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_ASHRREV_I32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_ashr_ashr |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4, $vgpr5 = V_DUAL_ASHRREV_I32_e32_X_ASHRREV_I32_e32_e96_gfx1250 killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = V_ASHRREV_I32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_ASHRREV_I32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_sub_u32_sub_u32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_sub_u32_sub_u32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_SUB_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_SUB_U32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_sub_u32_sub_u32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4, $vgpr5 = V_DUAL_SUB_U32_e32_X_SUB_U32_e32_e96_gfx1250 killed $vgpr0, killed $vgpr1, killed $vgpr2, killed $vgpr3, implicit $exec, implicit $exec, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = V_SUB_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_SUB_U32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_sub_u32_sub_u32_lit |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_sub_u32_sub_u32_lit |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = V_SUB_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_SUB_U32_e32 300, killed $vgpr2, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_sub_u32_sub_u32_lit |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = V_SUB_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_SUB_U32_e32 300, killed $vgpr2, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr4 = V_SUB_U32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_SUB_U32_e32 300, $vgpr2, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fmac_fmac |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fmac_fmac |
| ; SCHED: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fmac_fmac |
| ; PAIR: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_FMAC_F32_e32_X_FMAC_F32_e32_gfx1250 $vgpr1, $vgpr1, killed $vgpr2, killed $vgpr1, $vgpr1, killed $vgpr3, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec |
| $vgpr3 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fmac_fmac_same_dst_parity |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fmac_fmac_same_dst_parity |
| ; SCHED: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr4, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fmac_fmac_same_dst_parity |
| ; PAIR: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2, $vgpr4 = V_DUAL_FMAC_F32_e32_X_FMAC_F32_e32_e96_gfx1250 0, $vgpr1, 0, $vgpr1, killed $vgpr2, 0, killed $vgpr1, 0, $vgpr1, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec |
| $vgpr4 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fmac_fmac_same_dst |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fmac_fmac_same_dst |
| ; SCHED: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fmac_fmac_same_dst |
| ; PAIR: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec |
| $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_add_f32_fadd_f32_same_dst |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_add_f32_fadd_f32_same_dst |
| ; SCHED: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_add_f32_fadd_f32_same_dst |
| ; PAIR: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f64_add_f32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f64_add_f32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f64_add_f32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5, $vgpr6 = V_DUAL_ADD_F64_pseudo_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr8_vgpr9, 0, killed $vgpr2, 0, killed $vgpr3, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr8_vgpr9, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f32_add_f64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f32_add_f64 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f32_add_f64 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5, $vgpr6 = V_DUAL_ADD_F64_pseudo_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr8_vgpr9, 0, killed $vgpr2, 0, killed $vgpr3, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = IMPLICIT_DEF |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_add_f64_add_f64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_add_f64_add_f64 |
| ; SCHED: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_add_f64_add_f64 |
| ; PAIR: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr8_vgpr9, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6_vgpr7 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_add_f64_add_f32_overlapping_dst |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_dst |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_dst |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr3, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr8_vgpr9, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_ADD_F32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub1 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub1 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr5, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub1 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr5, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr10_vgpr11, implicit $mode, implicit $exec |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr5, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub0 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub0 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr4, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub0 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_ADD_F32_e32 killed $vgpr2, killed $vgpr4, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr10_vgpr11, implicit $mode, implicit $exec |
| $vgpr6 = V_ADD_F32_e32 $vgpr2, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_fma |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_fma |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_fma_bank_conflict_src2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_fma_bank_conflict_src2 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr10, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_fma_bank_conflict_src2 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr10, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr10 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr10, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_add_f32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_add_f32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_add_f32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f32_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f32_fma |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f32_fma |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr7, $vgpr6 = V_DUAL_ADD_F32_e32_X_FMA_F32_e64_e96_gfx1250 0, killed $vgpr3, 0, killed $vgpr4, 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_add_f64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_add_f64 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 killed $vgpr2_vgpr3, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_add_f64 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr6 = V_DUAL_ADD_F64_pseudo_e32_X_FMA_F32_e64_e96_gfx1250 0, killed $vgpr2_vgpr3, 0, killed $vgpr10_vgpr11, 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr2_vgpr3, $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_src0_mod_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_src0_mod_fma |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 3, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_src0_mod_fma |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 3, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 3, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_fma_src1_mod |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_fma_src1_mod |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 2, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_fma_src1_mod |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 2, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 2, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_fma_src2_mod |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_fma_src2_mod |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 3, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_fma_src2_mod |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 3, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 3, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_clamp_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_clamp_fma |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 1, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_clamp_fma |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 1, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_fma_omod |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_fma_omod |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_fma_omod |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 1, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 1, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_fma_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_fma_neg |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 1, $vgpr0, 1, $vgpr1, 1, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 1, killed $vgpr3, 1, killed $vgpr4, 1, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_fma_neg |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_FMA_F32_e64_e96_gfx1250 1, $vgpr0, 1, $vgpr1, 1, killed $vgpr2, 1, killed $vgpr3, 1, killed $vgpr4, 1, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 1, $vgpr0, 1, $vgpr1, 1, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 1, $vgpr3, 1, $vgpr4, 1, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_fma_src0_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_fma_src0_neg |
| ; SCHED: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 1, $sgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $sgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_fma_src0_neg |
| ; PAIR: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_FMA_F32_e64_e96_gfx1250 1, $sgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $sgpr0, killed $vgpr1, implicit $exec |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 1, $sgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $sgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_fma_src1_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_fma_src1_neg |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 1, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_fma_src1_neg |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, killed $vgpr3, 1, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 1, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_fma_src2_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_fma_src2_neg |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 1, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_fma_src2_neg |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_FMA_F32_e64_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 1, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 1, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_f64_fma_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_f64_fma_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = V_FMA_F64_e64 1, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 1, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr8, 0, killed $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_f64_fma_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11, $vgpr9 = V_DUAL_FMA_F64_e64_X_FMA_F32_e64_e96_gfx1250 1, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 1, killed $vgpr4_vgpr5, 0, killed $vgpr6, 0, killed $vgpr8, 0, killed $vgpr7, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = IMPLICIT_DEF |
| $vgpr8 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = V_FMA_F64_e64 1, $vgpr0_vgpr1, 1, $vgpr2_vgpr3, 1, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr12 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr9 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr8, 0, $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_lshl_add_u64_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_lshl_add_u64_fma |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr2, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_lshl_add_u64_fma |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr2, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr2, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_lshl_add_u64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_lshl_add_u64 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr2, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 killed $vgpr0_vgpr1, $vgpr1, killed $vgpr2_vgpr3, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_lshl_add_u64 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr2, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 killed $vgpr0_vgpr1, $vgpr1, killed $vgpr2_vgpr3, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr2, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_lshl_add_u64_fma_overlapping_src2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_lshl_add_u64_fma_overlapping_src2 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, $vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_lshl_add_u64_fma_overlapping_src2 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, $vgpr3, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec |
| $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr3, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_lshl_add_u64_fma_src0_conflict |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src0_conflict |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, killed $vgpr5, $vgpr2_vgpr3, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr1, 0, killed $vgpr3, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src0_conflict |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, killed $vgpr5, $vgpr2_vgpr3, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr1, 0, killed $vgpr3, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr5, $vgpr2_vgpr3, implicit $exec |
| $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8 = V_FMA_F32_e64 0, $vgpr1, 0, $vgpr3, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_lshl_add_u64_fma_src1_conflict |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src1_conflict |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr5, $vgpr2_vgpr3, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr5, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src1_conflict |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr5, $vgpr2_vgpr3, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr5, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr5, $vgpr2_vgpr3, implicit $exec |
| $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr5, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_f64_fma_f32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_f64_fma_f32 |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr8, 0, killed $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_f64_fma_f32 |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11, $vgpr9 = V_DUAL_FMA_F64_e64_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr4_vgpr5, 0, killed $vgpr6, 0, killed $vgpr8, 0, killed $vgpr7, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = IMPLICIT_DEF |
| $vgpr8 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr12 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr9 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr8, 0, $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fma_f64_fma_f32_overlapping_src1 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fma_f64_fma_f32_overlapping_src1 |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr9 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr3, 0, killed $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fma_f64_fma_f32_overlapping_src1 |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr7 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr9 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr3, 0, killed $vgpr7, 0, 0, implicit $mode, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4_vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr12 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr9 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr3, 0, $vgpr7, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_f32_add_f64_e32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_f32_add_f64_e32 |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_f32_add_f64_e32 |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_ADD_F64_pseudo_e32_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr10 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_f32_add_f64_e64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_f32_add_f64_e64 |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e64 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_f32_add_f64_e64 |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_ADD_F64_pseudo_e32_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr10 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8_vgpr9 = V_ADD_F64_pseudo_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_f32_add_f64_e64_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_f32_add_f64_e64_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e64 1, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_f32_add_f64_e64_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_ADD_F64_pseudo_e32_X_FMA_F32_e64_e96_gfx1250 1, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 0, killed $vgpr6, 0, killed $vgpr4, 0, killed $vgpr5, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr6, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr10 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr8_vgpr9 = V_ADD_F64_pseudo_e64 1, $vgpr0_vgpr1, 1, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fma_bitop |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_bitop |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_BITOP3_B32_e64 killed $vgpr3, killed $vgpr4, 0, 123, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_bitop |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5, $vgpr6 = V_DUAL_FMA_F32_e64_X_BITOP2_B32_e64_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, killed $vgpr3, killed $vgpr4, 123, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_BITOP3_B32_e64 $vgpr3, $vgpr4, 0, 123, implicit $exec |
| ... |
| |
| # Make sure bitop3 modifier does not count against constant bus limit. |
| --- |
| name: vopd_combine_fma_bitop_2_scalar_src |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fma_bitop_2_scalar_src |
| ; SCHED: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = V_FMA_F32_e64 0, $sgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_BITOP3_B32_e64 killed $sgpr3, killed $vgpr4, 0, 123, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_BFM_B32_e64 killed $sgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fma_bitop_2_scalar_src |
| ; PAIR: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5, $vgpr6 = V_DUAL_FMA_F32_e64_X_BITOP2_B32_e64_e96_gfx1250 0, $sgpr0, 0, $vgpr1, 0, killed $vgpr2, killed $sgpr3, killed $vgpr4, 123, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_BFM_B32_e64 killed $sgpr0, killed $vgpr1, implicit $exec |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $sgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = V_FMA_F32_e64 0, $sgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr7 = V_BFM_B32_e64 $sgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_BITOP3_B32_e64 $sgpr3, $vgpr4, 0, 123, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_bitop_mov_b32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_bitop_mov_b32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_BITOP3_B32_e64 $vgpr0, $vgpr1, 0, 20, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_bitop_mov_b32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5, $vgpr3 = V_DUAL_MOV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 killed $vgpr2, $vgpr0, $vgpr1, 20, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_BITOP3_B32_e64 $vgpr0, $vgpr1, 0, 20, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_mov_b32_bitop_non_imm_src2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_mov_b32_bitop_non_imm_src2 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_BITOP3_B32_e64 killed $vgpr0, killed $vgpr1, killed $vgpr2, 20, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_mov_b32_bitop_non_imm_src2 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_BITOP3_B32_e64 killed $vgpr0, killed $vgpr1, killed $vgpr2, 20, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_BITOP3_B32_e64 $vgpr0, $vgpr1, $vgpr2, 20, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_mov_b32_bitop_non_zero_src2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_mov_b32_bitop_non_zero_src2 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr3 = V_BITOP3_B32_e64 killed $vgpr0, killed $vgpr1, 1, 20, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_mov_b32_bitop_non_zero_src2 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = V_MOV_B32_e32 killed $vgpr2, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr3 = V_BITOP3_B32_e64 killed $vgpr0, killed $vgpr1, 1, 20, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr3 = V_BITOP3_B32_e64 $vgpr0, $vgpr1, 1, 20, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_bitop3_mov_dpp_vgpr_src2 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| ; SCHED-LABEL: name: vopd_no_combine_bitop3_mov_dpp_vgpr_src2 |
| ; SCHED: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: renamable $vgpr1 = V_MOV_B32_dpp killed $vgpr1, $vgpr3, 258, 15, 15, 0, implicit $exec |
| ; SCHED-NEXT: renamable $vgpr1 = V_BITOP3_B32_e64 killed $vgpr3, killed $vgpr4, killed $vgpr1, 128, implicit $exec |
| ; SCHED-NEXT: renamable $vgpr3 = V_MOV_B32_e32 -1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_bitop3_mov_dpp_vgpr_src2 |
| ; PAIR: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: renamable $vgpr1 = V_MOV_B32_dpp killed $vgpr1, $vgpr3, 258, 15, 15, 0, implicit $exec |
| ; PAIR-NEXT: renamable $vgpr1 = V_BITOP3_B32_e64 killed $vgpr3, killed $vgpr4, killed $vgpr1, 128, implicit $exec |
| ; PAIR-NEXT: renamable $vgpr3 = V_MOV_B32_e32 -1, implicit $exec |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| |
| renamable $vgpr1 = V_MOV_B32_dpp killed $vgpr1, $vgpr3, 258, 15, 15, 0, implicit $exec |
| renamable $vgpr1 = V_BITOP3_B32_e64 killed $vgpr3, $vgpr4, killed $vgpr1, 128, implicit $exec |
| renamable $vgpr3 = V_MOV_B32_e32 -1, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mov_or |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mov_or |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_OR_B32_e32 $vgpr1, killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mov_or |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr5 = V_DUAL_MOV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 $vgpr0, $vgpr1, killed $vgpr2, 84, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_OR_B32_e32 $vgpr1, $vgpr2, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mov_and |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mov_and |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_AND_B32_e32 $vgpr1, killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mov_and |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr5 = V_DUAL_MOV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 $vgpr0, $vgpr1, killed $vgpr2, 64, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_AND_B32_e32 $vgpr1, $vgpr2, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mov_xor |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mov_xor |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_XOR_B32_e32 $vgpr1, killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mov_xor |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr5 = V_DUAL_MOV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 $vgpr0, $vgpr1, killed $vgpr2, 20, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_XOR_B32_e32 $vgpr1, $vgpr2, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mov_xnor |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mov_xnor |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_XNOR_B32_e32 $vgpr1, killed $vgpr2, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mov_xnor |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3, $vgpr5 = V_DUAL_MOV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 $vgpr0, $vgpr1, killed $vgpr2, 65, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_XNOR_B32_e32 $vgpr1, $vgpr2, implicit $exec |
| ... |
| |
| # V_NOT_B32 can also be combined to BITOP2, but we need to come up with a fake src1 |
| # which would satisfy all register constraints and does not break liveness. |
| # This is not trivial at the very least. |
| --- |
| name: vopd_combine_mov_not |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mov_not |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_NOT_B32_e32 killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mov_not |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_NOT_B32_e32 killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_NOT_B32_e32 $vgpr1, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fadd_not |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fadd_not |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_NOT_B32_e32 killed $vgpr2, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fadd_not |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_NOT_B32_e32 killed $vgpr2, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec |
| $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr5 = V_NOT_B32_e32 $vgpr2, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fadd_f64_not |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fadd_f64_not |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr11 = V_NOT_B32_e32 killed $vgpr6, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fadd_f64_not |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr11 = V_NOT_B32_e32 killed $vgpr6, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr2_vgpr3, implicit $mode, implicit $exec |
| $vgpr10 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr11 = V_NOT_B32_e32 $vgpr6, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_src1_imm |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_src1_imm |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, 1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_src1_imm |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, 1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, 1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_src2_imm |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_src2_imm |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, 1, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_src2_imm |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, 1, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, 1, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_src1_sgpr |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_src1_sgpr |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, killed $sgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_src1_sgpr |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, killed $sgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr1 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $sgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_src2_sgpr |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_src2_sgpr |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $sgpr1, 0, 0, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_src2_sgpr |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $sgpr1, 0, 0, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $sgpr1 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $sgpr1, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_fadd |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vcc_lo |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_fadd |
| ; SCHED: liveins: $vcc_lo |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $exec, implicit killed $vcc_lo |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_fadd |
| ; PAIR: liveins: $vcc_lo |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_gfx1250 $vgpr0, $vgpr1, killed $vgpr3, killed $vgpr4, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $exec, implicit killed $vcc_lo, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $exec, implicit $vcc |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_fma |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vcc_lo |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_fma |
| ; SCHED: liveins: $vcc_lo |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $exec, implicit killed $vcc_lo |
| ; SCHED-NEXT: $vgpr7 = V_FMA_F32_e64 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_fma |
| ; PAIR: liveins: $vcc_lo |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_FMA_F32_e64_e96_gfx1250 0, $vgpr0, 0, $vgpr1, $vcc_lo, 0, killed $vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, implicit $exec, implicit $mode, implicit $exec, implicit killed $vcc_lo, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr5 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $exec, implicit $vcc |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr4, 0, $vgpr5, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_vcc_fadd |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_vcc_fadd |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vcc = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_vcc_fadd |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vcc = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, killed $vcc_lo, 0, killed $vgpr3, 0, killed $vgpr4, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vcc = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, $vcc_lo, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_sgpr_fadd |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_sgpr_fadd |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, killed $sgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_sgpr_fadd |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, killed $sgpr0, 0, killed $vgpr3, 0, killed $vgpr4, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, $sgpr0, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_neg_vcc_fadd |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_neg_vcc_fadd |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vcc = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 1, $vgpr1, killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_neg_vcc_fadd |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vcc = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 1, $vgpr1, killed $vcc_lo, 0, killed $vgpr3, 0, killed $vgpr4, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vcc = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 1, $vgpr1, $vcc_lo, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_cndmask_e64_vcc_fadd_constant_bus_limit |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_constant_bus_limit |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vcc = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, killed $sgpr0, 0, $vgpr1, killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $sgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_constant_bus_limit |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vcc = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, killed $sgpr0, 0, $vgpr1, killed $vcc_lo, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_ADD_F32_e32 killed $sgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $sgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vcc = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $sgpr0, 0, $vgpr1, $vcc_lo, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $sgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_cndmask_e64_vcc_fadd_sgpr_src1 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_sgpr_src1 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vcc = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, killed $sgpr0, killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $sgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_sgpr_src1 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vcc = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, killed $sgpr0, killed $vcc_lo, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_ADD_F32_e32 killed $sgpr3, killed $vgpr4, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $sgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vcc = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $sgpr0, $vcc_lo, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $sgpr3, $vgpr4, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_cndmask_e32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vcc_lo |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_cndmask_e32 |
| ; SCHED: liveins: $vcc_lo |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, killed $sgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr3, killed $vgpr4, implicit killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_cndmask_e32 |
| ; PAIR: liveins: $vcc_lo |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_CNDMASK_B32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, killed $sgpr0, 0, killed $vgpr3, 0, killed $vgpr4, $vcc_lo, implicit $exec, implicit $exec, implicit killed $vcc_lo, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, $sgpr0, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_CNDMASK_B32_e32 $vgpr3, $vgpr4, implicit $vcc, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e32_cndmask_e64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vcc_lo |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e32_cndmask_e64 |
| ; SCHED: liveins: $vcc_lo |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e64 0, killed $vgpr3, 0, killed $vgpr4, killed $sgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e32_cndmask_e64 |
| ; PAIR: liveins: $vcc_lo |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_CNDMASK_B32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, $vcc_lo, 0, killed $vgpr3, 0, killed $vgpr4, killed $sgpr0, implicit $exec, implicit killed $vcc_lo, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $vcc, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_CNDMASK_B32_e64 0, $vgpr3, 0, $vgpr4, $sgpr0, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e32_cndmask_e32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vcc_lo |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e32_cndmask_e32 |
| ; SCHED: liveins: $vcc_lo |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr3, killed $vgpr4, implicit killed $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e32_cndmask_e32 |
| ; PAIR: liveins: $vcc_lo |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_CNDMASK_B32_e32_gfx1250 $vgpr0, $vgpr1, killed $vgpr3, killed $vgpr4, implicit $vcc_lo, implicit $exec, implicit $vcc_lo, implicit $exec, implicit killed $vcc_lo, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e32 $vgpr0, $vgpr1, implicit $vcc, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_CNDMASK_B32_e32 $vgpr3, $vgpr4, implicit $vcc, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_cndmask_e64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_cndmask_e64 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, killed $sgpr0, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e64 0, killed $vgpr3, 0, killed $vgpr4, killed $sgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_cndmask_e64 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $sgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_CNDMASK_B32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, killed $sgpr0, 0, killed $vgpr3, 0, killed $vgpr4, killed $sgpr1, implicit $exec, implicit $exec, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $sgpr0 = IMPLICIT_DEF |
| $sgpr1 = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, $vgpr1, $sgpr0, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_CNDMASK_B32_e64 0, $vgpr3, 0, $vgpr4, $sgpr1, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fadd_e64_fadd_e64 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fadd_e64_fadd_e64 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 0, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e64 0, killed $vgpr3, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fadd_e64_fadd_e64 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_ADD_F32_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr3, 0, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 0, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e64 0, $vgpr3, 0, $vgpr2, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_fadd_e64_neg_fadd_e32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_fadd_e64_neg_fadd_e32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 1, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr2, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_fadd_e64_neg_fadd_e32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_ADD_F32_e32_X_ADD_F32_e32_e96_gfx1250 0, $vgpr0, 1, $vgpr1, 0, killed $vgpr3, 0, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 1, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr2, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_fadd_e64_abs_neg_fadd_e32 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_no_combine_fadd_e64_abs_neg_fadd_e32 |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 3, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr2, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_fadd_e64_abs_neg_fadd_e32 |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 3, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; PAIR-NEXT: $vgpr7 = V_ADD_F32_e32 killed $vgpr3, killed $vgpr2, implicit $mode, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr2 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 3, $vgpr1, 0, 0, implicit $mode, implicit $exec |
| $vgpr8 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_ADD_F32_e32 $vgpr3, $vgpr2, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mul_f64_e64_sub_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mul_f64_e64_sub_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MUL_F64_pseudo_e64 1, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_SUB_F32_e64 0, killed $vgpr6, 1, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mul_f64_e64_sub_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MUL_F64_pseudo_e32_X_SUB_F32_e32_e96_gfx1250 1, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr6, 1, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MUL_F64_pseudo_e64 1, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_SUB_F32_e64 0, $vgpr6, 1, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_mul_f64_e32_subrev_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_mul_f64_e32_subrev_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MUL_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_SUBREV_F32_e64 1, killed $vgpr6, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_mul_f64_e32_subrev_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MUL_F64_pseudo_e32_X_SUBREV_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 1, killed $vgpr6, 0, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MUL_F64_pseudo_e32 $vgpr0_vgpr1, $vgpr2_vgpr3, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_SUBREV_F32_e64 1, $vgpr6, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_min_num_f64_e64_mul_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_min_num_f64_e64_mul_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MIN_NUM_F64_e64 1, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_MUL_F32_e64 0, killed $vgpr6, 1, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_min_num_f64_e64_mul_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MIN_NUM_F64_e32_X_MUL_F32_e32_e96_gfx1250 1, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr6, 1, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MIN_NUM_F64_e64 1, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_MUL_F32_e64 0, $vgpr6, 1, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_min_num_f64_e32_mul_legacy_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_min_num_f64_e32_mul_legacy_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MIN_NUM_F64_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_MUL_LEGACY_F32_e64 1, killed $vgpr6, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_min_num_f64_e32_mul_legacy_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MIN_NUM_F64_e32_X_MUL_LEGACY_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 1, killed $vgpr6, 0, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MIN_NUM_F64_e32 $vgpr0_vgpr1, $vgpr2_vgpr3, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_MUL_LEGACY_F32_e64 1, $vgpr6, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_max_num_f64_e64_min_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_max_num_f64_e64_min_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MAX_NUM_F64_e64 0, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_MIN_F32_e64 1, killed $vgpr6, 0, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_max_num_f64_e64_min_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MAX_NUM_F64_e32_X_MIN_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 1, killed $vgpr2_vgpr3, 1, killed $vgpr6, 0, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MAX_NUM_F64_e64 0, $vgpr0_vgpr1, 1, $vgpr2_vgpr3, 0, 0, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_MIN_F32_e64 1, $vgpr6, 0, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_max_num_f64_e32_max_f32_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_max_num_f64_e32_max_f32_neg |
| ; SCHED: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr8_vgpr9 = V_MAX_NUM_F64_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_MAX_F32_e64 0, killed $vgpr6, 1, killed $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_max_num_f64_e32_max_f32_neg |
| ; PAIR: $vgpr0_vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr8_vgpr9, $vgpr7 = V_DUAL_MAX_NUM_F64_e32_X_MAX_F32_e32_e96_gfx1250 0, $vgpr0_vgpr1, 0, killed $vgpr2_vgpr3, 0, killed $vgpr6, 1, killed $vgpr4, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0_vgpr1 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr8_vgpr9 = V_MAX_NUM_F64_e32 $vgpr0_vgpr1, $vgpr2_vgpr3, implicit $mode, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr7 = V_MAX_F32_e64 0, $vgpr6, 1, $vgpr4, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_add_f64_fmac_f32_e64_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_add_f64_fmac_f32_e64_neg |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, killed $vgpr10_vgpr11, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr6 = V_FMAC_F32_e64 0, $vgpr0, 1, $vgpr1, 0, killed $vgpr6, 0, 0, implicit $mode, implicit $exec |
| ; SCHED-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 10, implicit $exec |
| ; SCHED-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_add_f64_fmac_f32_e64_neg |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr2_vgpr3, $vgpr6 = V_DUAL_ADD_F64_pseudo_e32_X_FMAC_F32_e32_e96_gfx1250 0, 10, 0, killed $vgpr10_vgpr11, 0, $vgpr0, 1, $vgpr1, killed $vgpr6, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec |
| ; PAIR-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 10, implicit $exec |
| ; PAIR-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr6 = IMPLICIT_DEF |
| $vgpr10_vgpr11 = IMPLICIT_DEF |
| $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, $vgpr10_vgpr11, implicit $mode, implicit $exec |
| $vgpr2_vgpr3 = V_MOV_B64_e32 10, implicit $exec |
| $vgpr5 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec |
| $vgpr6 = V_FMAC_F32_e64 0, $vgpr0, 1, $vgpr1, 0, $vgpr6, 0, 0, implicit $mode, implicit $exec |
| ... |
| |
| --- |
| name: vopd_combine_cndmask_e64_neg_cndmask_e64_neg |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| |
| ; SCHED-LABEL: name: vopd_combine_cndmask_e64_neg_cndmask_e64_neg |
| ; SCHED: $vgpr0 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; SCHED-NEXT: $vcc = IMPLICIT_DEF |
| ; SCHED-NEXT: $vgpr6 = V_CNDMASK_B32_e64 1, killed $vgpr0, 0, killed $vgpr1, $vcc_lo, implicit $exec |
| ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e64 1, killed $vgpr3, 0, killed $vgpr4, killed $vcc_lo, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_combine_cndmask_e64_neg_cndmask_e64_neg |
| ; PAIR: $vgpr0 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF |
| ; PAIR-NEXT: $vcc = IMPLICIT_DEF |
| ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_CNDMASK_B32_e32_X_CNDMASK_B32_e32_e96_gfx1250 1, killed $vgpr0, 0, killed $vgpr1, $vcc_lo, 1, killed $vgpr3, 0, killed $vgpr4, killed $vcc_lo, implicit $exec, implicit $exec, implicit $exec |
| $vgpr0 = IMPLICIT_DEF |
| $vgpr1 = IMPLICIT_DEF |
| $vgpr3 = IMPLICIT_DEF |
| $vgpr4 = IMPLICIT_DEF |
| $vcc = IMPLICIT_DEF |
| $vgpr6 = V_CNDMASK_B32_e64 1, $vgpr0, 0, $vgpr1, $vcc_lo, implicit $exec |
| $vgpr7 = V_CNDMASK_B32_e64 1, $vgpr3, 0, $vgpr4, $vcc_lo, implicit $exec |
| ... |
| |
| --- |
| name: vopd_no_combine_dpp |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $vgpr0, $vgpr1, $vgpr2 |
| ; SCHED-LABEL: name: vopd_no_combine_dpp |
| ; SCHED: liveins: $vgpr0, $vgpr1, $vgpr2 |
| ; SCHED-NEXT: {{ $}} |
| ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec |
| ; SCHED-NEXT: $vgpr0 = V_ADD_F32_e64_dpp killed $vgpr0, 0, killed $vgpr2, 0, killed $vgpr1, 0, 1, 1, 15, 15, 1, implicit $mode, implicit $exec |
| ; |
| ; PAIR-LABEL: name: vopd_no_combine_dpp |
| ; PAIR: liveins: $vgpr0, $vgpr1, $vgpr2 |
| ; PAIR-NEXT: {{ $}} |
| ; PAIR-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec |
| ; PAIR-NEXT: $vgpr0 = V_ADD_F32_e64_dpp killed $vgpr0, 0, killed $vgpr2, 0, killed $vgpr1, 0, 1, 1, 15, 15, 1, implicit $mode, implicit $exec |
| $vgpr3 = V_MOV_B32_e32 0, implicit $exec |
| $vgpr0 = V_ADD_F32_e64_dpp $vgpr0, 0, $vgpr2, 0, $vgpr1, 0, 1, 1, 15, 15, 1, implicit $mode, implicit $exec |
| ... |