# 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 # RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -run-pass=postmisched,gcn-create-vopd,amdgpu-lower-vgpr-encoding %s -o - | FileCheck -check-prefix=LOWER %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 ; ; LOWER-LABEL: name: vopd_combine_low_vgprs ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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_combine_hi_vgprs tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_combine_hi_vgprs ; SCHED: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr301 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr301, $vgpr301, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr306 = V_MUL_F32_e32 $vgpr300, $vgpr300, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec ; ; PAIR-LABEL: name: vopd_combine_hi_vgprs ; PAIR: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr301 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr303, $vgpr306 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr301, $vgpr301, $vgpr300, $vgpr300, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec ; ; LOWER-LABEL: name: vopd_combine_hi_vgprs ; LOWER: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr301 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 69, implicit-def $mode ; LOWER-NEXT: $vgpr303, $vgpr306 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr301, $vgpr301, $vgpr300, $vgpr300, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 17669, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 1280, implicit-def $mode $vgpr300 = IMPLICIT_DEF $vgpr301 = IMPLICIT_DEF $vgpr303 = V_SUB_F32_e32 $vgpr301, $vgpr301, implicit $mode, implicit $exec $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec $vgpr306 = V_MUL_F32_e32 killed $vgpr300, $vgpr300, implicit $mode, implicit $exec ... --- name: vopd_combine_hi_vgprs_above_512 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_combine_hi_vgprs_above_512 ; SCHED: $vgpr812 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr813 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr559 = V_SUB_F32_e32 $vgpr813, $vgpr813, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr562 = V_MUL_F32_e32 $vgpr812, $vgpr812, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec ; ; PAIR-LABEL: name: vopd_combine_hi_vgprs_above_512 ; PAIR: $vgpr812 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr813 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr559, $vgpr562 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr813, $vgpr813, $vgpr812, $vgpr812, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec ; ; LOWER-LABEL: name: vopd_combine_hi_vgprs_above_512 ; LOWER: $vgpr812 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr813 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 143, implicit-def $mode ; LOWER-NEXT: $vgpr559, $vgpr562 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr813, $vgpr813, $vgpr812, $vgpr812, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 36623, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 3840, implicit-def $mode $vgpr812 = IMPLICIT_DEF $vgpr813 = IMPLICIT_DEF $vgpr559 = V_SUB_F32_e32 $vgpr813, $vgpr813, implicit $mode, implicit $exec $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec $vgpr562 = V_MUL_F32_e32 killed $vgpr812, $vgpr812, implicit $mode, implicit $exec ... --- name: mixed_vgprs_low_and_hi_dst tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_dst ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr1, $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, $vgpr0, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_dst ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr1, $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, $vgpr0, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: mixed_vgprs_low_and_hi_dst ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 64, implicit-def $mode ; LOWER-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 16384, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; LOWER-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr303 = 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: mixed_vgprs_low_and_hi_scr0 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr0 ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr0 ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: mixed_vgprs_low_and_hi_scr0 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 1, implicit-def $mode ; LOWER-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 256, implicit-def $mode $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr300 = 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 $vgpr300, $vgpr0, implicit $mode, implicit $exec ... --- name: mixed_vgprs_low_and_hi_scr1 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr1 ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr1 ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: mixed_vgprs_low_and_hi_scr1 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 4, implicit-def $mode ; LOWER-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 1024, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 1, implicit-def $mode ; LOWER-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 256, implicit-def $mode $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr300 = IMPLICIT_DEF $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec ... --- name: mixed_vgprs_hi_and_hi_dst_different_msb tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: mixed_vgprs_hi_and_hi_dst_different_msb ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr559 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: mixed_vgprs_hi_and_hi_dst_different_msb ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr559 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: mixed_vgprs_hi_and_hi_dst_different_msb ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 128, implicit-def $mode ; LOWER-NEXT: $vgpr559 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 32832, implicit-def $mode ; LOWER-NEXT: $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 16384, implicit-def $mode $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr559 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ... --- name: mixed_vgprs_low_and_hi_scr0_different_msb tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr0_different_msb ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr513 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr812 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr513, killed $vgpr1, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr812, killed $vgpr0, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr0_different_msb ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr513 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr812 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr513, killed $vgpr1, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr812, killed $vgpr0, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: mixed_vgprs_low_and_hi_scr0_different_msb ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr513 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr812 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 2, implicit-def $mode ; LOWER-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr513, killed $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 515, implicit-def $mode ; LOWER-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr812, killed $vgpr0, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 768, implicit-def $mode $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr513 = IMPLICIT_DEF $vgpr812 = IMPLICIT_DEF $vgpr3 = V_SUB_F32_e32 $vgpr513, $vgpr1, implicit $mode, implicit $exec $vgpr6 = V_MUL_F32_e32 killed $vgpr812, $vgpr0, implicit $mode, implicit $exec ... --- name: vopd_combine_sgpr_src0 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_combine_sgpr_src0 ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $sgpr0, $vgpr1, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, $vgpr0, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec ; ; PAIR-LABEL: name: vopd_combine_sgpr_src0 ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 killed $sgpr0, $vgpr1, $vgpr300, $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 ; ; LOWER-LABEL: name: vopd_combine_sgpr_src0 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 1, implicit-def $mode ; LOWER-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 killed $sgpr0, $vgpr1, $vgpr300, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 256, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr300 = IMPLICIT_DEF $sgpr0 = IMPLICIT_DEF $vgpr3 = V_SUB_F32_e32 $sgpr0, $vgpr1, implicit $mode, implicit $exec $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec ... --- name: vopd_combine_imm_src0 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_combine_imm_src0 ; SCHED: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 0, $vgpr1, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, $vgpr0, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec ; ; PAIR-LABEL: name: vopd_combine_imm_src0 ; PAIR: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 0, $vgpr1, $vgpr300, $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 ; ; LOWER-LABEL: name: vopd_combine_imm_src0 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 1, implicit-def $mode ; LOWER-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 0, $vgpr1, $vgpr300, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 256, implicit-def $mode ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr300 = IMPLICIT_DEF $vgpr3 = V_SUB_F32_e32 0, $vgpr1, implicit $mode, implicit $exec $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $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 ; ; LOWER-LABEL: name: vopd_mov_max_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MAX_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_mov_min_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MIN_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_max_i32_max_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = V_MAX_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_min_i32_min_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = V_MIN_I32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_mov_sub_nc_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_SUB_U32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_mov_lshrrev_b32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_LSHRREV_B32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_mov_ashrrev_i32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ASHRREV_I32_e32_gfx1250 $vgpr0, $vgpr1, $vgpr1, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_same_vgprs_banks ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_same_vgprs ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_same_dst_parity ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_x_fmaak ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_y_fmaak ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_x_fmaak_same_dst_parity ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = V_FMAAK_F32 killed $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_y_fmaak_same_dst_parity ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr0, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_literal_x ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_literal_y ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_literal_x ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_SUB_F32_e32 12345, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_literal_y ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_u32_add_f32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f32_add_u32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_u32_add_f32_same_dst_parity ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f32_add_u32_same_dst_parity ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_lshl_lshl ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_ashr_ashr ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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_lshr_lshr tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_combine_lshr_lshr ; SCHED: $vgpr300 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr301 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr302 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr303 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr304 = V_LSHRREV_B32_e32 $vgpr300, $vgpr301, implicit $exec ; SCHED-NEXT: $vgpr305 = V_LSHRREV_B32_e32 $vgpr302, $vgpr303, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: vopd_combine_lshr_lshr ; PAIR: $vgpr300 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr301 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr302 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr303 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr304, $vgpr305 = V_DUAL_LSHRREV_B32_e32_X_LSHRREV_B32_e32_e96_gfx1250 $vgpr300, $vgpr301, $vgpr302, $vgpr303, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: vopd_combine_lshr_lshr ; LOWER: $vgpr300 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr301 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr302 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr303 = IMPLICIT_DEF ; LOWER-NEXT: S_SET_VGPR_MSB 69, implicit-def $mode ; LOWER-NEXT: $vgpr304, $vgpr305 = V_DUAL_LSHRREV_B32_e32_X_LSHRREV_B32_e32_e96_gfx1250 $vgpr300, $vgpr301, $vgpr302, $vgpr303, implicit $exec, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 17664, implicit-def $mode $vgpr300 = IMPLICIT_DEF $vgpr301 = IMPLICIT_DEF $vgpr302 = IMPLICIT_DEF $vgpr303 = IMPLICIT_DEF $vgpr304 = V_LSHRREV_B32_e32 $vgpr300, $vgpr301, implicit $exec $vgpr305 = V_LSHRREV_B32_e32 $vgpr302, $vgpr303, 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 ; ; LOWER-LABEL: name: vopd_combine_sub_u32_sub_u32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_sub_u32_sub_u32_lit ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = V_SUB_U32_e32 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fmac_fmac ; LOWER: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fmac_fmac_same_dst_parity ; LOWER: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fmac_fmac_same_dst ; LOWER: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_add_f32_fadd_f32_same_dst ; LOWER: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f64_add_f32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f32_add_f64 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_add_f64_add_f64 ; LOWER: $vgpr8_vgpr9 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_dst ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8_vgpr9 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr8_vgpr9, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr7 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub1 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_add_f64_add_f32_overlapping_src_sub0 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = V_ADD_F64_pseudo_e32 killed $vgpr0_vgpr1, killed $vgpr10_vgpr11, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_fma ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_fma_bank_conflict_src2 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr5 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_add_f32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f32_fma ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_add_f64 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_src0_mod_fma ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 3, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_fma_src1_mod ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_fma_src2_mod ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_clamp_fma ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 1, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_fma_omod ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_fma_neg ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_fma_src0_neg ; LOWER: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_fma_src1_neg ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_fma_src2_neg ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_f64_fma_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr7 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_lshl_add_u64_fma ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec ; LOWER-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_lshl_add_u64 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8 = V_FMA_F32_e64 0, $vgpr3, 0, $vgpr2, 0, killed $vgpr5, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr9 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_lshl_add_u64_fma_overlapping_src2 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr1, $vgpr2_vgpr3, implicit $exec ; LOWER-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src0_conflict ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, killed $vgpr5, $vgpr2_vgpr3, implicit $exec ; LOWER-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_lshl_add_u64_fma_src1_conflict ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6_vgpr7 = V_LSHL_ADD_U64_e64 $vgpr0_vgpr1, $vgpr5, $vgpr2_vgpr3, implicit $exec ; LOWER-NEXT: $vgpr9 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_f64_fma_f32 ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr7 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fma_f64_fma_f32_overlapping_src1 ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4_vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr7 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = V_FMA_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr12 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_f32_add_f64_e32 ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_f32_add_f64_e64 ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_f32_add_f64_e64_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_bitop ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fma_bitop_2_scalar_src ; LOWER: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_bitop_mov_b32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_mov_b32_bitop_non_imm_src2 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr2, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_mov_b32_bitop_non_zero_src2 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = V_MOV_B32_e32 killed $vgpr2, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e64 $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_bitop3_mov_dpp_vgpr_src2 ; LOWER: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: renamable $vgpr1 = V_MOV_B32_dpp killed $vgpr1, $vgpr3, 258, 15, 15, 0, implicit $exec ; LOWER-NEXT: renamable $vgpr1 = V_BITOP3_B32_e64 killed $vgpr3, killed $vgpr4, killed $vgpr1, 128, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mov_or ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mov_and ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mov_xor ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mov_xnor ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mov_not ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fadd_not ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr4 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fadd_f64_not ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr8_vgpr9 = V_ADD_F64_pseudo_e32 $vgpr0_vgpr1, killed $vgpr2_vgpr3, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr10 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_src1_imm ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, 1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_src2_imm ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_src1_sgpr ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, killed $sgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_src2_sgpr ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMA_F32_e64 0, $vgpr0, 0, $vgpr1, 0, killed $vgpr2, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_fadd ; LOWER: liveins: $vcc_lo ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_fma ; LOWER: liveins: $vcc_lo ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_vcc_fadd ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vcc = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_sgpr_fadd ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_neg_vcc_fadd ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vcc = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_constant_bus_limit ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vcc = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, killed $sgpr0, 0, $vgpr1, killed $vcc_lo, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_cndmask_e64_vcc_fadd_sgpr_src1 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vcc = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_CNDMASK_B32_e64 0, $vgpr0, 0, killed $sgpr0, killed $vcc_lo, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_cndmask_e32 ; LOWER: liveins: $vcc_lo ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e32_cndmask_e64 ; LOWER: liveins: $vcc_lo ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e32_cndmask_e32 ; LOWER: liveins: $vcc_lo ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_cndmask_e64 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr1 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fadd_e64_fadd_e64 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_fadd_e64_neg_fadd_e32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_fadd_e64_abs_neg_fadd_e32 ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_ADD_F32_e64 0, $vgpr0, 3, $vgpr1, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr8 = V_BFM_B32_e64 killed $vgpr0, killed $vgpr1, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mul_f64_e64_sub_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_mul_f64_e32_subrev_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_min_num_f64_e64_mul_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_min_num_f64_e32_mul_legacy_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_max_num_f64_e64_min_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_max_num_f64_e32_max_f32_neg ; LOWER: $vgpr0_vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr2_vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-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 ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_add_f64_fmac_f32_e64_neg ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr10_vgpr11 = IMPLICIT_DEF ; LOWER-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 ; LOWER-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 10, implicit $exec ; LOWER-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 ; ; LOWER-LABEL: name: vopd_combine_cndmask_e64_neg_cndmask_e64_neg ; LOWER: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr4 = IMPLICIT_DEF ; LOWER-NEXT: $vcc = IMPLICIT_DEF ; LOWER-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 ; ; LOWER-LABEL: name: vopd_no_combine_dpp ; LOWER: liveins: $vgpr0, $vgpr1, $vgpr2 ; LOWER-NEXT: {{ $}} ; LOWER-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec ; LOWER-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 ... --- name: vopd_no_combine_fmamk_src1 tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: vopd_no_combine_fmamk_src1 ; SCHED: $vgpr142 = V_FMAMK_F32 $vgpr377, 1069066811, $vgpr142, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr145 = V_FMAC_F32_e32 1069066811, $vgpr366, $vgpr145, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: vopd_no_combine_fmamk_src1 ; PAIR: $vgpr142, $vgpr145 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx1250 $vgpr377, 1069066811, $vgpr142, 1069066811, $vgpr366, $vgpr145, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: vopd_no_combine_fmamk_src1 ; LOWER: S_SET_VGPR_MSB 5, implicit-def $mode ; LOWER-NEXT: $vgpr142, $vgpr145 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx1250 $vgpr377, 1069066811, $vgpr142, 1069066811, $vgpr366, $vgpr145, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec ; LOWER-NEXT: S_SET_VGPR_MSB 1280, implicit-def $mode $vgpr142 = V_FMAMK_F32 $vgpr377, 1069066811, $vgpr142, implicit $mode, implicit $exec $vgpr145 = V_FMAC_F32_e32 1069066811, $vgpr366, $vgpr145, implicit $mode, implicit $exec ... --- name: no_combine_opx_writes_opy_src tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: no_combine_opx_writes_opy_src ; SCHED: $vgpr6 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF ; SCHED-NEXT: $sgpr15 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr6 = V_LSHLREV_B32_e32 8, killed $vgpr5, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr7 = V_XOR_B32_e32 killed $sgpr15, killed $vgpr6, implicit $exec ; ; PAIR-LABEL: name: no_combine_opx_writes_opy_src ; PAIR: $vgpr6 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF ; PAIR-NEXT: $sgpr15 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr6 = V_LSHLREV_B32_e32 8, killed $vgpr5, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr7 = V_XOR_B32_e32 killed $sgpr15, killed $vgpr6, implicit $exec ; ; LOWER-LABEL: name: no_combine_opx_writes_opy_src ; LOWER: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr15 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_LSHLREV_B32_e32 8, killed $vgpr5, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr7 = V_XOR_B32_e32 killed $sgpr15, killed $vgpr6, implicit $exec $vgpr5 = IMPLICIT_DEF $vgpr6 = IMPLICIT_DEF $sgpr15 = IMPLICIT_DEF $vgpr6 = V_LSHLREV_B32_e32 8, $vgpr5, implicit $mode, implicit $exec $vgpr7 = V_XOR_B32_e32 $sgpr15, $vgpr6, implicit $exec ... --- name: combine_opx_writes_opy_src_reorder_antidep tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: combine_opx_writes_opy_src_reorder_antidep ; SCHED: $vgpr6 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF ; SCHED-NEXT: $sgpr15 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr7 = V_XOR_B32_e32 killed $sgpr15, killed $vgpr6, implicit $exec ; SCHED-NEXT: $vgpr6 = V_LSHLREV_B32_e32 8, killed $vgpr5, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: combine_opx_writes_opy_src_reorder_antidep ; PAIR: $vgpr6 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr5 = IMPLICIT_DEF ; PAIR-NEXT: $sgpr15 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr6, $vgpr7 = V_DUAL_LSHLREV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 8, killed $vgpr5, killed $sgpr15, killed $vgpr6, 20, implicit $exec, implicit $mode, implicit $exec, implicit $exec ; ; LOWER-LABEL: name: combine_opx_writes_opy_src_reorder_antidep ; LOWER: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr5 = IMPLICIT_DEF ; LOWER-NEXT: $sgpr15 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6, $vgpr7 = V_DUAL_LSHLREV_B32_e32_X_BITOP2_B32_e64_e96_gfx1250 8, killed $vgpr5, killed $sgpr15, killed $vgpr6, 20, implicit $exec, implicit $mode, implicit $exec, implicit $exec $vgpr5 = IMPLICIT_DEF $vgpr6 = IMPLICIT_DEF $sgpr15 = IMPLICIT_DEF $vgpr7 = V_XOR_B32_e32 $sgpr15, $vgpr6, implicit $exec $vgpr6 = V_LSHLREV_B32_e32 8, $vgpr5, implicit $mode, implicit $exec ... --- name: no_combine_add_f64_fmac_f32_e64_neg_overlap_dst tracksRegLiveness: true body: | bb.0: ; SCHED-LABEL: name: no_combine_add_f64_fmac_f32_e64_neg_overlap_dst ; SCHED: $vgpr2 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr6 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF ; SCHED-NEXT: $vgpr6 = V_FMAC_F32_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr6, 0, 0, implicit $mode, implicit $exec ; SCHED-NEXT: $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, killed $vgpr0_vgpr1, implicit $mode, implicit $exec ; ; PAIR-LABEL: name: no_combine_add_f64_fmac_f32_e64_neg_overlap_dst ; PAIR: $vgpr2 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr6 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF ; PAIR-NEXT: $vgpr6 = V_FMAC_F32_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr6, 0, 0, implicit $mode, implicit $exec ; PAIR-NEXT: $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, killed $vgpr0_vgpr1, implicit $mode, implicit $exec ; ; LOWER-LABEL: name: no_combine_add_f64_fmac_f32_e64_neg_overlap_dst ; LOWER: $vgpr2 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr3 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr0 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr1 = IMPLICIT_DEF ; LOWER-NEXT: $vgpr6 = V_FMAC_F32_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr6, 0, 0, implicit $mode, implicit $exec ; LOWER-NEXT: $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, killed $vgpr0_vgpr1, implicit $mode, implicit $exec $vgpr0 = IMPLICIT_DEF $vgpr1 = IMPLICIT_DEF $vgpr2 = IMPLICIT_DEF $vgpr3 = IMPLICIT_DEF $vgpr6 = IMPLICIT_DEF $vgpr6 = V_FMAC_F32_e64 0, $vgpr2, 0, $vgpr3, 0, $vgpr6, 0, 0, implicit $mode, implicit $exec $vgpr2_vgpr3 = V_ADD_F64_pseudo_e32 10, $vgpr0_vgpr1, implicit $mode, implicit $exec ...