@@ -492,21 +492,18 @@ define <2 x half> @v_pow_v2f16(<2 x half> %x, <2 x half> %y) {
492492; GFX11-TRUE16-LABEL: v_pow_v2f16:
493493; GFX11-TRUE16: ; %bb.0:
494494; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
495- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0
496495; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.l, v0.l
497- ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
498- ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v2.l
499- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v1
500- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.l
496+ ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v0.h
497+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v1.l
498+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.h
501499; GFX11-TRUE16-NEXT: s_waitcnt_depctr 0xfff
502500; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v3, v0.l
503- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v2.l
504501; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v0, v0.h
505502; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
506- ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v1 , v3, v1 :: v_dual_mul_dx9_zero_f32 v2 , v0, v2
507- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v1
503+ ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v2 , v3, v2 :: v_dual_mul_dx9_zero_f32 v1 , v0, v1
504+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v2
508505; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
509- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v2
506+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v1
510507; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.l, v0.l
511508; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
512509; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.h, v0.h
@@ -639,21 +636,19 @@ define <2 x half> @v_pow_v2f16_fneg_lhs(<2 x half> %x, <2 x half> %y) {
639636; GFX11-TRUE16: ; %bb.0:
640637; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
641638; GFX11-TRUE16-NEXT: v_xor_b32_e32 v0, 0x80008000, v0
642- ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
643- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0
639+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v1.l
640+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.h
641+ ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
644642; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.l, v0.l
645- ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v2.l
646- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v1
647- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.l
643+ ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v0.h
648644; GFX11-TRUE16-NEXT: s_waitcnt_depctr 0xfff
649645; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v3, v0.l
650- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v2.l
651646; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v0, v0.h
652647; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
653- ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v1 , v3, v1 :: v_dual_mul_dx9_zero_f32 v2 , v0, v2
654- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v1
648+ ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v2 , v3, v2 :: v_dual_mul_dx9_zero_f32 v1 , v0, v1
649+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v2
655650; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
656- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v2
651+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v1
657652; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.l, v0.l
658653; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
659654; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.h, v0.h
@@ -788,22 +783,20 @@ define <2 x half> @v_pow_v2f16_fneg_rhs(<2 x half> %x, <2 x half> %y) {
788783; GFX11-TRUE16-LABEL: v_pow_v2f16_fneg_rhs:
789784; GFX11-TRUE16: ; %bb.0:
790785; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
791- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0
792786; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.l, v0.l
787+ ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v0.h
793788; GFX11-TRUE16-NEXT: v_xor_b32_e32 v1, 0x80008000, v1
794- ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
795- ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v2.l
796- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v1
797- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.l
789+ ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
790+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v1.l
791+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.h
798792; GFX11-TRUE16-NEXT: s_waitcnt_depctr 0xfff
799793; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v3, v0.l
800- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v2.l
801794; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v0, v0.h
802795; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
803- ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v1 , v3, v1 :: v_dual_mul_dx9_zero_f32 v2 , v0, v2
804- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v1
796+ ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v2 , v3, v2 :: v_dual_mul_dx9_zero_f32 v1 , v0, v1
797+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v2
805798; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
806- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v2
799+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v1
807800; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.l, v0.l
808801; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
809802; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.h, v0.h
@@ -947,22 +940,20 @@ define <2 x half> @v_pow_v2f16_fneg_lhs_rhs(<2 x half> %x, <2 x half> %y) {
947940; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
948941; GFX11-TRUE16-NEXT: v_xor_b32_e32 v0, 0x80008000, v0
949942; GFX11-TRUE16-NEXT: v_xor_b32_e32 v1, 0x80008000, v1
950- ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)
951- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v0
943+ ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
952944; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.l, v0.l
953- ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v2.l
954- ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2)
955- ; GFX11-TRUE16-NEXT: v_lshrrev_b32_e32 v2, 16, v1
956- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.l
945+ ; GFX11-TRUE16-NEXT: v_log_f16_e32 v0.h, v0.h
946+ ; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1( VALU_DEP_2)
947+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v1.l
948+ ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v1, v1.h
957949; GFX11-TRUE16-NEXT: s_waitcnt_depctr 0xfff
958950; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v3, v0.l
959- ; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v2, v2.l
960951; GFX11-TRUE16-NEXT: v_cvt_f32_f16_e32 v0, v0.h
961952; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
962- ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v1 , v3, v1 :: v_dual_mul_dx9_zero_f32 v2 , v0, v2
963- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v1
953+ ; GFX11-TRUE16-NEXT: v_dual_mul_dx9_zero_f32 v2 , v3, v2 :: v_dual_mul_dx9_zero_f32 v1 , v0, v1
954+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.l, v2
964955; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
965- ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v2
956+ ; GFX11-TRUE16-NEXT: v_cvt_f16_f32_e32 v0.h, v1
966957; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.l, v0.l
967958; GFX11-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)
968959; GFX11-TRUE16-NEXT: v_exp_f16_e32 v0.h, v0.h
0 commit comments