@@ -469,14 +469,43 @@ body: |
469469 ...
470470
471471---
472- # GCN-LABEL: test_scalef32_sr_pk_fp4_bf16_hazard
473- # GCN: V_CVT_SCALEF32_SR_PK_FP4_BF16_e64
474- # GCN: S_NOP 0
475- # GCN: V_ADD_U32_e32
476- name : test_scalef32_sr_pk_fp4_bf16_hazard
472+ name : test_scalef32_sr_pk_fp4_bf16_opsel0_hazard
473+ body : |
474+ bb.0:
475+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
476+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_bf16_opsel0_hazard
477+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
478+ ; GCN-NEXT: {{ $}}
479+ ; GCN-NEXT: S_WAITCNT 0
480+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
481+ ; GCN-NEXT: S_WAITCNT 3952
482+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
483+ ; GCN-NEXT: S_NOP 0
484+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
485+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
486+ S_WAITCNT 0
487+ renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
488+ S_WAITCNT 3952
489+ early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
490+ renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
491+ S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
492+ ...
493+
494+ ---
495+ name : test_scalef32_sr_pk_fp4_bf16_opsel3_hazard
477496body : |
478497 bb.0:
479498 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
499+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_bf16_opsel3_hazard
500+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
501+ ; GCN-NEXT: {{ $}}
502+ ; GCN-NEXT: S_WAITCNT 0
503+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
504+ ; GCN-NEXT: S_WAITCNT 3952
505+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
506+ ; GCN-NEXT: S_NOP 0
507+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
508+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
480509 S_WAITCNT 0
481510 renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
482511 S_WAITCNT 3952
@@ -486,14 +515,87 @@ body: |
486515 ...
487516
488517---
489- # GCN-LABEL: test_scalef32_sr_pk_fp4_f32_hazard
490- # GCN: V_CVT_SCALEF32_SR_PK_FP4_F32_e64
491- # GCN: S_NOP 0
492- # GCN: V_ADD_U32_e32
493- name : test_scalef32_sr_pk_fp4_f32_hazard
518+ name : test_scalef32_sr_pk_fp4_bf16_opsel0_neg_fp4_as_src_hazard
519+ body : |
520+ bb.0:
521+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
522+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_bf16_opsel0_neg_fp4_as_src_hazard
523+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
524+ ; GCN-NEXT: {{ $}}
525+ ; GCN-NEXT: S_WAITCNT 0
526+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
527+ ; GCN-NEXT: S_WAITCNT 3952
528+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
529+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr0, $vgpr0, implicit $exec
530+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
531+ S_WAITCNT 0
532+ renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
533+ S_WAITCNT 3952
534+ early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 0, killed $vgpr2, 0, killed $vgpr3, 0, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
535+ renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr0, $vgpr0, implicit $exec
536+ S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
537+ ...
538+
539+ ---
540+ name : test_scalef32_sr_pk_fp4_bf16_opsel3_neg_fp4_as_src_hazard
541+ body : |
542+ bb.0:
543+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
544+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_bf16_opsel3_neg_fp4_as_src_hazard
545+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
546+ ; GCN-NEXT: {{ $}}
547+ ; GCN-NEXT: S_WAITCNT 0
548+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
549+ ; GCN-NEXT: S_WAITCNT 3952
550+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
551+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr0, $vgpr0, implicit $exec
552+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
553+ S_WAITCNT 0
554+ renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
555+ S_WAITCNT 3952
556+ early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_BF16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr0, 0, implicit $mode, implicit $exec
557+ renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr0, $vgpr0, implicit $exec
558+ S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
559+ ...
560+
561+ ---
562+ name : test_scalef32_sr_pk_fp4_f32_opsel0_hazard
563+ body : |
564+ bb.0:
565+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
566+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_f32_opsel0_hazard
567+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
568+ ; GCN-NEXT: {{ $}}
569+ ; GCN-NEXT: S_WAITCNT 0
570+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
571+ ; GCN-NEXT: S_WAITCNT 3952
572+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_F32_e64 0, killed $vgpr2_vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, killed $vgpr0, 0, implicit $mode, implicit $exec
573+ ; GCN-NEXT: S_NOP 0
574+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
575+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
576+ S_WAITCNT 0
577+ renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
578+ S_WAITCNT 3952
579+ early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_F32_e64 0, killed $vgpr2_vgpr3, 0, killed $vgpr4, 0, killed $vgpr5, killed $vgpr0, 0, implicit $mode, implicit $exec
580+ renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
581+ S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
582+ ...
583+
584+ ---
585+ name : test_scalef32_sr_pk_fp4_f32_opsel3_hazard
494586body : |
495587 bb.0:
496588 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
589+ ; GCN-LABEL: name: test_scalef32_sr_pk_fp4_f32_opsel3_hazard
590+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
591+ ; GCN-NEXT: {{ $}}
592+ ; GCN-NEXT: S_WAITCNT 0
593+ ; GCN-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
594+ ; GCN-NEXT: S_WAITCNT 3952
595+ ; GCN-NEXT: early-clobber renamable $vgpr1 = V_CVT_SCALEF32_SR_PK_FP4_F32_e64 8, killed $vgpr2_vgpr3, 0, killed $vgpr4, 4, killed $vgpr5, killed $vgpr0, 0, implicit $mode, implicit $exec
596+ ; GCN-NEXT: S_NOP 0
597+ ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 killed $vgpr1, $vgpr1, implicit $exec
598+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
497599 S_WAITCNT 0
498600 renamable $vgpr0 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec
499601 S_WAITCNT 3952
@@ -619,16 +721,42 @@ body: |
619721 ...
620722
621723---
622- # GCN-LABEL: test_cvt_scale_cvt_scale_hazard
623- # GCN: V_CVT_SCALEF32_PK_FP4_F16_e64
624- # GCN: S_NOP 0
625- # GCN: V_CVT_SCALEF32_SR_PK_FP4_F16_e64
626- # GCN: S_NOP 0
627- # GCN: S_SETPC_B64_return
628- name : test_cvt_scale_cvt_scale_hazard
724+ name : test_cvt_scale_cvt_scalef32_sr_pk_fp4_f16_opsel0_hazard
725+ body : |
726+ bb.0:
727+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
728+ ; GCN-LABEL: name: test_cvt_scale_cvt_scalef32_sr_pk_fp4_f16_opsel0_hazard
729+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
730+ ; GCN-NEXT: {{ $}}
731+ ; GCN-NEXT: S_WAITCNT 0
732+ ; GCN-NEXT: renamable $vgpr2 = V_CVT_SCALEF32_PK_FP4_F16_e64 8, $vgpr0, 0, $vgpr1, 4, killed $vgpr2, 0, implicit $mode, implicit $exec
733+ ; GCN-NEXT: S_NOP 0
734+ ; GCN-NEXT: early-clobber renamable $vgpr4 = V_CVT_SCALEF32_SR_PK_FP4_F16_e64 0, killed $vgpr0, 0, killed $vgpr3, 0, killed $vgpr1, killed $vgpr2, 0, implicit $mode, implicit $exec
735+ ; GCN-NEXT: S_NOP 0
736+ ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 killed $vgpr4, implicit $exec, implicit $exec
737+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
738+ S_WAITCNT 0
739+ renamable $vgpr2 = V_CVT_SCALEF32_PK_FP4_F16_e64 8, $vgpr0, 0, $vgpr1, 4, killed $vgpr2, 0, implicit $mode, implicit $exec
740+ early-clobber renamable $vgpr4 = V_CVT_SCALEF32_SR_PK_FP4_F16_e64 0, killed $vgpr0, 0, killed $vgpr3, 0, killed $vgpr1, killed $vgpr2, 0, implicit $mode, implicit $exec
741+ $vgpr0 = V_MOV_B32_e32 killed $vgpr4, implicit $exec, implicit $exec
742+ S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
743+ ...
744+
745+ ---
746+ name : test_cvt_scale_cvt_scalef32_sr_pk_fp4_f16_opsel3_hazard
629747body : |
630748 bb.0:
631749 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
750+ ; GCN-LABEL: name: test_cvt_scale_cvt_scalef32_sr_pk_fp4_f16_opsel3_hazard
751+ ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
752+ ; GCN-NEXT: {{ $}}
753+ ; GCN-NEXT: S_WAITCNT 0
754+ ; GCN-NEXT: renamable $vgpr2 = V_CVT_SCALEF32_PK_FP4_F16_e64 8, $vgpr0, 0, $vgpr1, 4, killed $vgpr2, 0, implicit $mode, implicit $exec
755+ ; GCN-NEXT: S_NOP 0
756+ ; GCN-NEXT: early-clobber renamable $vgpr4 = V_CVT_SCALEF32_SR_PK_FP4_F16_e64 8, killed $vgpr0, 0, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, 0, implicit $mode, implicit $exec
757+ ; GCN-NEXT: S_NOP 0
758+ ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 killed $vgpr4, implicit $exec, implicit $exec
759+ ; GCN-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, implicit killed $vgpr0
632760 S_WAITCNT 0
633761 renamable $vgpr2 = V_CVT_SCALEF32_PK_FP4_F16_e64 8, $vgpr0, 0, $vgpr1, 4, killed $vgpr2, 0, implicit $mode, implicit $exec
634762 early-clobber renamable $vgpr4 = V_CVT_SCALEF32_SR_PK_FP4_F16_e64 8, killed $vgpr0, 0, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, 0, implicit $mode, implicit $exec
0 commit comments