Lines Matching refs:CGP

3 …sa3d -mcpu=hawaii -denormal-fp-math-f32=preserve-sign < %s | FileCheck -check-prefixes=CHECK,CGP %s
644 ; CGP-LABEL: v_sdiv_v2i64:
645 ; CGP: ; %bb.0:
646 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
647 ; CGP-NEXT: v_mov_b32_e32 v11, v1
648 ; CGP-NEXT: v_mov_b32_e32 v10, v0
649 ; CGP-NEXT: v_or_b32_e32 v1, v11, v5
650 ; CGP-NEXT: v_mov_b32_e32 v0, 0
651 ; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]
652 ; CGP-NEXT: v_mov_b32_e32 v8, v2
653 ; CGP-NEXT: v_mov_b32_e32 v9, v3
654 ; CGP-NEXT: ; implicit-def: $vgpr0_vgpr1
655 ; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc
656 ; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]
657 ; CGP-NEXT: s_cbranch_execz .LBB2_2
658 ; CGP-NEXT: ; %bb.1:
659 ; CGP-NEXT: v_ashrrev_i32_e32 v0, 31, v5
660 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v4, v0
661 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v5, v0, vcc
662 ; CGP-NEXT: v_xor_b32_e32 v4, v1, v0
663 ; CGP-NEXT: v_xor_b32_e32 v5, v2, v0
664 ; CGP-NEXT: v_cvt_f32_u32_e32 v1, v4
665 ; CGP-NEXT: v_cvt_f32_u32_e32 v2, v5
666 ; CGP-NEXT: v_sub_i32_e32 v13, vcc, 0, v4
667 ; CGP-NEXT: v_subb_u32_e32 v14, vcc, 0, v5, vcc
668 ; CGP-NEXT: v_mac_f32_e32 v1, 0x4f800000, v2
669 ; CGP-NEXT: v_rcp_iflag_f32_e32 v1, v1
670 ; CGP-NEXT: v_mul_f32_e32 v1, 0x5f7ffffc, v1
671 ; CGP-NEXT: v_mul_f32_e32 v2, 0x2f800000, v1
672 ; CGP-NEXT: v_trunc_f32_e32 v3, v2
673 ; CGP-NEXT: v_mac_f32_e32 v1, 0xcf800000, v3
674 ; CGP-NEXT: v_cvt_u32_f32_e32 v12, v1
675 ; CGP-NEXT: v_cvt_u32_f32_e32 v15, v3
676 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v13, v12, 0
677 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v15, v[2:3]
678 ; CGP-NEXT: v_mul_hi_u32 v16, v12, v1
679 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v14, v12, v[2:3]
680 ; CGP-NEXT: v_mul_lo_u32 v3, v15, v1
681 ; CGP-NEXT: v_mul_hi_u32 v1, v15, v1
682 ; CGP-NEXT: v_mul_lo_u32 v17, v12, v2
683 ; CGP-NEXT: v_mul_lo_u32 v18, v15, v2
684 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v17
685 ; CGP-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc
686 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v16
687 ; CGP-NEXT: v_mul_hi_u32 v16, v12, v2
688 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
689 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v17, v3
690 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v18, v1
691 ; CGP-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc
692 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v16
693 ; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc
694 ; CGP-NEXT: v_add_i32_e32 v16, vcc, v17, v16
695 ; CGP-NEXT: v_mul_hi_u32 v2, v15, v2
696 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v3
697 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
698 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v16, v3
699 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
700 ; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v1
701 ; CGP-NEXT: v_addc_u32_e32 v15, vcc, v15, v2, vcc
702 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v13, v12, 0
703 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v15, v[2:3]
704 ; CGP-NEXT: v_ashrrev_i32_e32 v13, 31, v11
705 ; CGP-NEXT: v_mul_hi_u32 v16, v12, v1
706 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v14, v12, v[2:3]
707 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v10, v13
708 ; CGP-NEXT: v_addc_u32_e32 v10, vcc, v11, v13, vcc
709 ; CGP-NEXT: v_xor_b32_e32 v11, v3, v13
710 ; CGP-NEXT: v_mul_lo_u32 v3, v15, v1
711 ; CGP-NEXT: v_mul_lo_u32 v14, v12, v2
712 ; CGP-NEXT: v_mul_hi_u32 v1, v15, v1
713 ; CGP-NEXT: v_xor_b32_e32 v10, v10, v13
714 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v14
715 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
716 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v16
717 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
718 ; CGP-NEXT: v_mul_lo_u32 v16, v15, v2
719 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v14, v3
720 ; CGP-NEXT: v_mul_hi_u32 v14, v12, v2
721 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v16, v1
722 ; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc
723 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v14
724 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
725 ; CGP-NEXT: v_add_i32_e32 v14, vcc, v16, v14
726 ; CGP-NEXT: v_mul_hi_u32 v2, v15, v2
727 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v3
728 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
729 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v14, v3
730 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
731 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v12, v1
732 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v15, v2, vcc
733 ; CGP-NEXT: v_mul_lo_u32 v3, v10, v1
734 ; CGP-NEXT: v_mul_lo_u32 v12, v11, v2
735 ; CGP-NEXT: v_mul_hi_u32 v14, v11, v1
736 ; CGP-NEXT: v_mul_hi_u32 v1, v10, v1
737 ; CGP-NEXT: v_mul_hi_u32 v15, v10, v2
738 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v12
739 ; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc
740 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v14
741 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
742 ; CGP-NEXT: v_mul_lo_u32 v14, v10, v2
743 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v12, v3
744 ; CGP-NEXT: v_mul_hi_u32 v12, v11, v2
745 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v14, v1
746 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
747 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v12
748 ; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc
749 ; CGP-NEXT: v_add_i32_e32 v12, vcc, v14, v12
750 ; CGP-NEXT: v_add_i32_e32 v14, vcc, v1, v3
751 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v4, v14, 0
752 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
753 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v12, v3
754 ; CGP-NEXT: v_add_i32_e32 v12, vcc, v15, v3
755 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v4, v12, v[2:3]
756 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v11, v1
757 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v5, v14, v[2:3]
758 ; CGP-NEXT: v_subb_u32_e64 v3, s[4:5], v10, v2, vcc
759 ; CGP-NEXT: v_sub_i32_e64 v2, s[4:5], v10, v2
760 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v5
761 ; CGP-NEXT: v_subb_u32_e32 v2, vcc, v2, v5, vcc
762 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]
763 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v1, v4
764 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v1, v4
765 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]
766 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v3, v5
767 ; CGP-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc
768 ; CGP-NEXT: v_cndmask_b32_e64 v3, v10, v11, s[4:5]
769 ; CGP-NEXT: v_add_i32_e32 v10, vcc, 1, v14
770 ; CGP-NEXT: v_addc_u32_e32 v11, vcc, 0, v12, vcc
771 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v5
772 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, -1, vcc
773 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v4
774 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc
775 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v2, v5
776 ; CGP-NEXT: v_cndmask_b32_e32 v1, v15, v1, vcc
777 ; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v10
778 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, 0, v11, vcc
779 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v1
780 ; CGP-NEXT: v_cndmask_b32_e32 v1, v10, v2, vcc
781 ; CGP-NEXT: v_cndmask_b32_e32 v2, v11, v4, vcc
782 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3
783 ; CGP-NEXT: v_cndmask_b32_e32 v1, v14, v1, vcc
784 ; CGP-NEXT: v_xor_b32_e32 v3, v13, v0
785 ; CGP-NEXT: v_cndmask_b32_e32 v2, v12, v2, vcc
786 ; CGP-NEXT: v_xor_b32_e32 v0, v1, v3
787 ; CGP-NEXT: v_xor_b32_e32 v1, v2, v3
788 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v3
789 ; CGP-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc
790 ; CGP-NEXT: ; implicit-def: $vgpr4
791 ; CGP-NEXT: ; implicit-def: $vgpr10
792 ; CGP-NEXT: .LBB2_2: ; %Flow1
793 ; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]
794 ; CGP-NEXT: s_cbranch_execz .LBB2_4
795 ; CGP-NEXT: ; %bb.3:
796 ; CGP-NEXT: v_cvt_f32_u32_e32 v0, v4
797 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v4
798 ; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v0
799 ; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0
800 ; CGP-NEXT: v_cvt_u32_f32_e32 v0, v0
801 ; CGP-NEXT: v_mul_lo_u32 v1, v1, v0
802 ; CGP-NEXT: v_mul_hi_u32 v1, v0, v1
803 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
804 ; CGP-NEXT: v_mul_hi_u32 v0, v10, v0
805 ; CGP-NEXT: v_mul_lo_u32 v1, v0, v4
806 ; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v0
807 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v10, v1
808 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v4
809 ; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc
810 ; CGP-NEXT: v_sub_i32_e64 v2, s[4:5], v1, v4
811 ; CGP-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc
812 ; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v0
813 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v4
814 ; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc
815 ; CGP-NEXT: v_mov_b32_e32 v1, 0
816 ; CGP-NEXT: .LBB2_4:
817 ; CGP-NEXT: s_or_b64 exec, exec, s[6:7]
818 ; CGP-NEXT: v_or_b32_e32 v3, v9, v7
819 ; CGP-NEXT: v_mov_b32_e32 v2, 0
820 ; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]
821 ; CGP-NEXT: ; implicit-def: $vgpr2_vgpr3
822 ; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc
823 ; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]
824 ; CGP-NEXT: s_cbranch_execnz .LBB2_7
825 ; CGP-NEXT: ; %bb.5: ; %Flow
826 ; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]
827 ; CGP-NEXT: s_cbranch_execnz .LBB2_8
828 ; CGP-NEXT: .LBB2_6:
829 ; CGP-NEXT: s_or_b64 exec, exec, s[6:7]
830 ; CGP-NEXT: s_setpc_b64 s[30:31]
831 ; CGP-NEXT: .LBB2_7:
832 ; CGP-NEXT: v_ashrrev_i32_e32 v2, 31, v7
833 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v6, v2
834 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, v7, v2, vcc
835 ; CGP-NEXT: v_xor_b32_e32 v6, v3, v2
836 ; CGP-NEXT: v_xor_b32_e32 v7, v4, v2
837 ; CGP-NEXT: v_cvt_f32_u32_e32 v3, v6
838 ; CGP-NEXT: v_cvt_f32_u32_e32 v4, v7
839 ; CGP-NEXT: v_sub_i32_e32 v11, vcc, 0, v6
840 ; CGP-NEXT: v_subb_u32_e32 v12, vcc, 0, v7, vcc
841 ; CGP-NEXT: v_mac_f32_e32 v3, 0x4f800000, v4
842 ; CGP-NEXT: v_rcp_iflag_f32_e32 v3, v3
843 ; CGP-NEXT: v_mul_f32_e32 v3, 0x5f7ffffc, v3
844 ; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v3
845 ; CGP-NEXT: v_trunc_f32_e32 v5, v4
846 ; CGP-NEXT: v_mac_f32_e32 v3, 0xcf800000, v5
847 ; CGP-NEXT: v_cvt_u32_f32_e32 v10, v3
848 ; CGP-NEXT: v_cvt_u32_f32_e32 v13, v5
849 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v11, v10, 0
850 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v11, v13, v[4:5]
851 ; CGP-NEXT: v_mul_hi_u32 v14, v10, v3
852 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v12, v10, v[4:5]
853 ; CGP-NEXT: v_mul_lo_u32 v5, v13, v3
854 ; CGP-NEXT: v_mul_hi_u32 v3, v13, v3
855 ; CGP-NEXT: v_mul_lo_u32 v15, v10, v4
856 ; CGP-NEXT: v_mul_lo_u32 v16, v13, v4
857 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v15
858 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
859 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v14
860 ; CGP-NEXT: v_mul_hi_u32 v14, v10, v4
861 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
862 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v15, v5
863 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v16, v3
864 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
865 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v14
866 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
867 ; CGP-NEXT: v_add_i32_e32 v14, vcc, v15, v14
868 ; CGP-NEXT: v_mul_hi_u32 v4, v13, v4
869 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v5
870 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
871 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v14, v5
872 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5
873 ; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v3
874 ; CGP-NEXT: v_addc_u32_e32 v13, vcc, v13, v4, vcc
875 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v11, v10, 0
876 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v11, v13, v[4:5]
877 ; CGP-NEXT: v_ashrrev_i32_e32 v11, 31, v9
878 ; CGP-NEXT: v_mul_hi_u32 v14, v10, v3
879 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v12, v10, v[4:5]
880 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v8, v11
881 ; CGP-NEXT: v_addc_u32_e32 v8, vcc, v9, v11, vcc
882 ; CGP-NEXT: v_xor_b32_e32 v9, v5, v11
883 ; CGP-NEXT: v_mul_lo_u32 v5, v13, v3
884 ; CGP-NEXT: v_mul_lo_u32 v12, v10, v4
885 ; CGP-NEXT: v_mul_hi_u32 v3, v13, v3
886 ; CGP-NEXT: v_xor_b32_e32 v8, v8, v11
887 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v12
888 ; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc
889 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v14
890 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
891 ; CGP-NEXT: v_mul_lo_u32 v14, v13, v4
892 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v12, v5
893 ; CGP-NEXT: v_mul_hi_u32 v12, v10, v4
894 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v14, v3
895 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
896 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v12
897 ; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc
898 ; CGP-NEXT: v_add_i32_e32 v12, vcc, v14, v12
899 ; CGP-NEXT: v_mul_hi_u32 v4, v13, v4
900 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v5
901 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
902 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v12, v5
903 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5
904 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v10, v3
905 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, v13, v4, vcc
906 ; CGP-NEXT: v_mul_lo_u32 v5, v8, v3
907 ; CGP-NEXT: v_mul_lo_u32 v10, v9, v4
908 ; CGP-NEXT: v_mul_hi_u32 v12, v9, v3
909 ; CGP-NEXT: v_mul_hi_u32 v3, v8, v3
910 ; CGP-NEXT: v_mul_hi_u32 v13, v8, v4
911 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v10
912 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
913 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v12
914 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
915 ; CGP-NEXT: v_mul_lo_u32 v12, v8, v4
916 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v5
917 ; CGP-NEXT: v_mul_hi_u32 v10, v9, v4
918 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v12, v3
919 ; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc
920 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v10
921 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
922 ; CGP-NEXT: v_add_i32_e32 v10, vcc, v12, v10
923 ; CGP-NEXT: v_add_i32_e32 v12, vcc, v3, v5
924 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v6, v12, 0
925 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
926 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v5
927 ; CGP-NEXT: v_add_i32_e32 v10, vcc, v13, v5
928 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v6, v10, v[4:5]
929 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v9, v3
930 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v7, v12, v[4:5]
931 ; CGP-NEXT: v_subb_u32_e64 v5, s[4:5], v8, v4, vcc
932 ; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v8, v4
933 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v7
934 ; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v7, vcc
935 ; CGP-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]
936 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v6
937 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v3, v6
938 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]
939 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v5, v7
940 ; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc
941 ; CGP-NEXT: v_cndmask_b32_e64 v5, v8, v9, s[4:5]
942 ; CGP-NEXT: v_add_i32_e32 v8, vcc, 1, v12
943 ; CGP-NEXT: v_addc_u32_e32 v9, vcc, 0, v10, vcc
944 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v7
945 ; CGP-NEXT: v_cndmask_b32_e64 v13, 0, -1, vcc
946 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v6
947 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, -1, vcc
948 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v7
949 ; CGP-NEXT: v_cndmask_b32_e32 v3, v13, v3, vcc
950 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v8
951 ; CGP-NEXT: v_addc_u32_e32 v6, vcc, 0, v9, vcc
952 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3
953 ; CGP-NEXT: v_cndmask_b32_e32 v3, v8, v4, vcc
954 ; CGP-NEXT: v_cndmask_b32_e32 v4, v9, v6, vcc
955 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v5
956 ; CGP-NEXT: v_cndmask_b32_e32 v3, v12, v3, vcc
957 ; CGP-NEXT: v_xor_b32_e32 v5, v11, v2
958 ; CGP-NEXT: v_cndmask_b32_e32 v4, v10, v4, vcc
959 ; CGP-NEXT: v_xor_b32_e32 v2, v3, v5
960 ; CGP-NEXT: v_xor_b32_e32 v3, v4, v5
961 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v5
962 ; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v5, vcc
963 ; CGP-NEXT: ; implicit-def: $vgpr6
964 ; CGP-NEXT: ; implicit-def: $vgpr8
965 ; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]
966 ; CGP-NEXT: s_cbranch_execz .LBB2_6
967 ; CGP-NEXT: .LBB2_8:
968 ; CGP-NEXT: v_cvt_f32_u32_e32 v2, v6
969 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v6
970 ; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v2
971 ; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2
972 ; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2
973 ; CGP-NEXT: v_mul_lo_u32 v3, v3, v2
974 ; CGP-NEXT: v_mul_hi_u32 v3, v2, v3
975 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
976 ; CGP-NEXT: v_mul_hi_u32 v2, v8, v2
977 ; CGP-NEXT: v_mul_lo_u32 v3, v2, v6
978 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v2
979 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v8, v3
980 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v6
981 ; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
982 ; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v6
983 ; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc
984 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v2
985 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v6
986 ; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
987 ; CGP-NEXT: v_mov_b32_e32 v3, 0
988 ; CGP-NEXT: s_or_b64 exec, exec, s[6:7]
989 ; CGP-NEXT: s_setpc_b64 s[30:31]
1398 ; CGP-LABEL: v_sdiv_v2i64_pow2k_denom:
1399 ; CGP: ; %bb.0:
1400 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1401 ; CGP-NEXT: v_cvt_f32_u32_e32 v4, 0x1000
1402 ; CGP-NEXT: v_cvt_f32_ubyte0_e32 v5, 0
1403 ; CGP-NEXT: s_movk_i32 s6, 0xf000
1404 ; CGP-NEXT: s_movk_i32 s7, 0x1000
1405 ; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v5
1406 ; CGP-NEXT: v_rcp_iflag_f32_e32 v4, v4
1407 ; CGP-NEXT: s_bfe_i32 s8, -1, 0x10000
1408 ; CGP-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v4
1409 ; CGP-NEXT: v_mul_f32_e32 v5, 0x2f800000, v4
1410 ; CGP-NEXT: v_trunc_f32_e32 v6, v5
1411 ; CGP-NEXT: v_mac_f32_e32 v4, 0xcf800000, v6
1412 ; CGP-NEXT: v_cvt_u32_f32_e32 v7, v4
1413 ; CGP-NEXT: v_mov_b32_e32 v4, 0xfffff000
1414 ; CGP-NEXT: v_cvt_u32_f32_e32 v8, v6
1415 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v4, v7, 0
1416 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], s6, v8, v[5:6]
1417 ; CGP-NEXT: v_mul_hi_u32 v9, v7, v4
1418 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], -1, v7, v[5:6]
1419 ; CGP-NEXT: v_mul_lo_u32 v6, v8, v4
1420 ; CGP-NEXT: v_mul_hi_u32 v4, v8, v4
1421 ; CGP-NEXT: v_mul_lo_u32 v10, v7, v5
1422 ; CGP-NEXT: v_mul_lo_u32 v11, v8, v5
1423 ; CGP-NEXT: v_mul_hi_u32 v12, v7, v5
1424 ; CGP-NEXT: v_mul_hi_u32 v5, v8, v5
1425 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v10
1426 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
1427 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v9
1428 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1429 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v10, v6
1430 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v11, v4
1431 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
1432 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v12
1433 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
1434 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v10
1435 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v6
1436 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1437 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v9, v6
1438 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v6
1439 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v7, v4
1440 ; CGP-NEXT: v_addc_u32_e32 v8, vcc, v8, v5, vcc
1441 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], s6, v9, 0
1442 ; CGP-NEXT: v_mov_b32_e32 v4, v6
1443 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v8, v[4:5]
1444 ; CGP-NEXT: v_ashrrev_i32_e32 v4, 31, v1
1445 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v4
1446 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v9, v[6:7]
1447 ; CGP-NEXT: v_addc_u32_e32 v1, vcc, v1, v4, vcc
1448 ; CGP-NEXT: v_xor_b32_e32 v10, v0, v4
1449 ; CGP-NEXT: v_mul_lo_u32 v0, v8, v5
1450 ; CGP-NEXT: v_mul_lo_u32 v7, v9, v6
1451 ; CGP-NEXT: v_xor_b32_e32 v11, v1, v4
1452 ; CGP-NEXT: v_mul_hi_u32 v1, v9, v5
1453 ; CGP-NEXT: v_mul_hi_u32 v5, v8, v5
1454 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v7
1455 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1456 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
1457 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1458 ; CGP-NEXT: v_mul_lo_u32 v1, v8, v6
1459 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
1460 ; CGP-NEXT: v_mul_hi_u32 v7, v9, v6
1461 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v5
1462 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
1463 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v7
1464 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1465 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7
1466 ; CGP-NEXT: v_mul_hi_u32 v6, v8, v6
1467 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v1, v0
1468 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1469 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v5, v1
1470 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v6, v1
1471 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v9, v0
1472 ; CGP-NEXT: v_addc_u32_e32 v1, vcc, v8, v1, vcc
1473 ; CGP-NEXT: v_mul_lo_u32 v5, v11, v0
1474 ; CGP-NEXT: v_mul_lo_u32 v6, v10, v1
1475 ; CGP-NEXT: v_mul_hi_u32 v7, v10, v0
1476 ; CGP-NEXT: v_mul_hi_u32 v0, v11, v0
1477 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v6
1478 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1479 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7
1480 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
1481 ; CGP-NEXT: v_mul_lo_u32 v7, v11, v1
1482 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v5
1483 ; CGP-NEXT: v_mul_hi_u32 v6, v10, v1
1484 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
1485 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1486 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v6
1487 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1488 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v7, v6
1489 ; CGP-NEXT: v_add_i32_e32 v8, vcc, v0, v5
1490 ; CGP-NEXT: v_mul_hi_u32 v7, v11, v1
1491 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s7, v8, 0
1492 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
1493 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v5
1494 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v7, v5
1495 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s7, v9, v[1:2]
1496 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v10, v0
1497 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], 0, v8, v[6:7]
1498 ; CGP-NEXT: v_mov_b32_e32 v5, 0x1000
1499 ; CGP-NEXT: v_mov_b32_e32 v10, s8
1500 ; CGP-NEXT: v_subb_u32_e64 v1, s[4:5], v11, v6, vcc
1501 ; CGP-NEXT: v_sub_i32_e64 v6, s[4:5], v11, v6
1502 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v5
1503 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]
1504 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v1
1505 ; CGP-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v6, vcc
1506 ; CGP-NEXT: v_cvt_f32_u32_e32 v6, 0x1000
1507 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v5
1508 ; CGP-NEXT: v_cndmask_b32_e64 v10, v10, v7, s[4:5]
1509 ; CGP-NEXT: v_subbrev_u32_e32 v7, vcc, 0, v1, vcc
1510 ; CGP-NEXT: v_cvt_f32_ubyte0_e32 v1, 0
1511 ; CGP-NEXT: v_mac_f32_e32 v6, 0x4f800000, v1
1512 ; CGP-NEXT: v_rcp_iflag_f32_e32 v1, v6
1513 ; CGP-NEXT: v_add_i32_e32 v11, vcc, 1, v8
1514 ; CGP-NEXT: v_addc_u32_e32 v12, vcc, 0, v9, vcc
1515 ; CGP-NEXT: v_mul_f32_e32 v1, 0x5f7ffffc, v1
1516 ; CGP-NEXT: v_mul_f32_e32 v6, 0x2f800000, v1
1517 ; CGP-NEXT: v_trunc_f32_e32 v6, v6
1518 ; CGP-NEXT: v_mac_f32_e32 v1, 0xcf800000, v6
1519 ; CGP-NEXT: v_cvt_u32_f32_e32 v13, v1
1520 ; CGP-NEXT: s_bfe_i32 s4, -1, 0x10000
1521 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v5
1522 ; CGP-NEXT: v_mov_b32_e32 v15, s4
1523 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s6, v13, 0
1524 ; CGP-NEXT: v_cvt_u32_f32_e32 v16, v6
1525 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, -1, vcc
1526 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v7
1527 ; CGP-NEXT: v_cndmask_b32_e32 v14, v15, v14, vcc
1528 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v16, v[1:2]
1529 ; CGP-NEXT: v_add_i32_e32 v1, vcc, 1, v11
1530 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v13, v[6:7]
1531 ; CGP-NEXT: v_addc_u32_e32 v15, vcc, 0, v12, vcc
1532 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v14
1533 ; CGP-NEXT: v_cndmask_b32_e32 v7, v11, v1, vcc
1534 ; CGP-NEXT: v_mul_lo_u32 v1, v16, v0
1535 ; CGP-NEXT: v_mul_lo_u32 v11, v13, v6
1536 ; CGP-NEXT: v_mul_hi_u32 v14, v13, v0
1537 ; CGP-NEXT: v_cndmask_b32_e32 v12, v12, v15, vcc
1538 ; CGP-NEXT: v_mul_hi_u32 v0, v16, v0
1539 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v11
1540 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
1541 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v14
1542 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1543 ; CGP-NEXT: v_mul_lo_u32 v14, v16, v6
1544 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v1
1545 ; CGP-NEXT: v_mul_hi_u32 v11, v13, v6
1546 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v14, v0
1547 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
1548 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v11
1549 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
1550 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v14, v11
1551 ; CGP-NEXT: v_mul_hi_u32 v6, v16, v6
1552 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
1553 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1554 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v1
1555 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v6, v1
1556 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v13, v0
1557 ; CGP-NEXT: v_addc_u32_e32 v13, vcc, v16, v1, vcc
1558 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s6, v11, 0
1559 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v10
1560 ; CGP-NEXT: v_cndmask_b32_e32 v8, v8, v7, vcc
1561 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v13, v[1:2]
1562 ; CGP-NEXT: v_xor_b32_e32 v1, v8, v4
1563 ; CGP-NEXT: v_ashrrev_i32_e32 v8, 31, v3
1564 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v11, v[6:7]
1565 ; CGP-NEXT: v_cndmask_b32_e32 v9, v9, v12, vcc
1566 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v8
1567 ; CGP-NEXT: v_addc_u32_e32 v3, vcc, v3, v8, vcc
1568 ; CGP-NEXT: v_xor_b32_e32 v10, v2, v8
1569 ; CGP-NEXT: v_mul_lo_u32 v2, v13, v0
1570 ; CGP-NEXT: v_mul_lo_u32 v7, v11, v6
1571 ; CGP-NEXT: v_xor_b32_e32 v12, v3, v8
1572 ; CGP-NEXT: v_mul_hi_u32 v3, v11, v0
1573 ; CGP-NEXT: v_mul_hi_u32 v0, v13, v0
1574 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v7
1575 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1576 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
1577 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1578 ; CGP-NEXT: v_mul_lo_u32 v3, v13, v6
1579 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v7, v2
1580 ; CGP-NEXT: v_mul_hi_u32 v7, v11, v6
1581 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v3, v0
1582 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1583 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v7
1584 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1585 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v7
1586 ; CGP-NEXT: v_mul_hi_u32 v6, v13, v6
1587 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v2
1588 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1589 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v3, v2
1590 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v6, v2
1591 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v11, v0
1592 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v13, v2, vcc
1593 ; CGP-NEXT: v_mul_lo_u32 v3, v12, v0
1594 ; CGP-NEXT: v_mul_lo_u32 v6, v10, v2
1595 ; CGP-NEXT: v_mul_hi_u32 v7, v10, v0
1596 ; CGP-NEXT: v_mul_hi_u32 v0, v12, v0
1597 ; CGP-NEXT: v_xor_b32_e32 v9, v9, v4
1598 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v6
1599 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1600 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v7
1601 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1602 ; CGP-NEXT: v_mul_lo_u32 v7, v12, v2
1603 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v6, v3
1604 ; CGP-NEXT: v_mul_hi_u32 v6, v10, v2
1605 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
1606 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
1607 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v6
1608 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
1609 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v7, v6
1610 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v0, v3
1611 ; CGP-NEXT: v_mul_hi_u32 v7, v12, v2
1612 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], s7, v11, 0
1613 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1614 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v6, v0
1615 ; CGP-NEXT: v_add_i32_e32 v13, vcc, v7, v0
1616 ; CGP-NEXT: v_mov_b32_e32 v0, v3
1617 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s7, v13, v[0:1]
1618 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v1, v4
1619 ; CGP-NEXT: v_subb_u32_e32 v1, vcc, v9, v4, vcc
1620 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], 0, v11, v[6:7]
1621 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v10, v2
1622 ; CGP-NEXT: v_subb_u32_e64 v4, s[4:5], v12, v3, vcc
1623 ; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v12, v3
1624 ; CGP-NEXT: v_subbrev_u32_e32 v3, vcc, 0, v3, vcc
1625 ; CGP-NEXT: s_bfe_i32 s6, -1, 0x10000
1626 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v5
1627 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v5
1628 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]
1629 ; CGP-NEXT: v_mov_b32_e32 v7, s6
1630 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v4
1631 ; CGP-NEXT: v_subbrev_u32_e32 v3, vcc, 0, v3, vcc
1632 ; CGP-NEXT: v_cndmask_b32_e64 v4, v7, v6, s[4:5]
1633 ; CGP-NEXT: v_add_i32_e32 v6, vcc, 1, v11
1634 ; CGP-NEXT: v_addc_u32_e32 v7, vcc, 0, v13, vcc
1635 ; CGP-NEXT: s_bfe_i32 s4, -1, 0x10000
1636 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v5
1637 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc
1638 ; CGP-NEXT: v_mov_b32_e32 v5, s4
1639 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v3
1640 ; CGP-NEXT: v_cndmask_b32_e32 v2, v5, v2, vcc
1641 ; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v6
1642 ; CGP-NEXT: v_addc_u32_e32 v5, vcc, 0, v7, vcc
1643 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2
1644 ; CGP-NEXT: v_cndmask_b32_e32 v2, v6, v3, vcc
1645 ; CGP-NEXT: v_cndmask_b32_e32 v3, v7, v5, vcc
1646 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v4
1647 ; CGP-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc
1648 ; CGP-NEXT: v_cndmask_b32_e32 v3, v13, v3, vcc
1649 ; CGP-NEXT: v_xor_b32_e32 v2, v2, v8
1650 ; CGP-NEXT: v_xor_b32_e32 v3, v3, v8
1651 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v8
1652 ; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v8, vcc
1653 ; CGP-NEXT: s_setpc_b64 s[30:31]
2062 ; CGP-LABEL: v_sdiv_v2i64_oddk_denom:
2063 ; CGP: ; %bb.0:
2064 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2065 ; CGP-NEXT: v_cvt_f32_u32_e32 v4, 0x12d8fb
2066 ; CGP-NEXT: v_cvt_f32_ubyte0_e32 v5, 0
2067 ; CGP-NEXT: s_mov_b32 s6, 0xffed2705
2068 ; CGP-NEXT: s_mov_b32 s7, 0x12d8fb
2069 ; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v5
2070 ; CGP-NEXT: v_rcp_iflag_f32_e32 v4, v4
2071 ; CGP-NEXT: s_bfe_i32 s8, -1, 0x10000
2072 ; CGP-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v4
2073 ; CGP-NEXT: v_mul_f32_e32 v5, 0x2f800000, v4
2074 ; CGP-NEXT: v_trunc_f32_e32 v6, v5
2075 ; CGP-NEXT: v_mac_f32_e32 v4, 0xcf800000, v6
2076 ; CGP-NEXT: v_cvt_u32_f32_e32 v7, v4
2077 ; CGP-NEXT: v_mov_b32_e32 v4, 0xffed2705
2078 ; CGP-NEXT: v_cvt_u32_f32_e32 v8, v6
2079 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v4, v7, 0
2080 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], s6, v8, v[5:6]
2081 ; CGP-NEXT: v_mul_hi_u32 v9, v7, v4
2082 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], -1, v7, v[5:6]
2083 ; CGP-NEXT: v_mul_lo_u32 v6, v8, v4
2084 ; CGP-NEXT: v_mul_hi_u32 v4, v8, v4
2085 ; CGP-NEXT: v_mul_lo_u32 v10, v7, v5
2086 ; CGP-NEXT: v_mul_lo_u32 v11, v8, v5
2087 ; CGP-NEXT: v_mul_hi_u32 v12, v7, v5
2088 ; CGP-NEXT: v_mul_hi_u32 v5, v8, v5
2089 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v10
2090 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
2091 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v9
2092 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2093 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v10, v6
2094 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v11, v4
2095 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
2096 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v12
2097 ; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc
2098 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v10
2099 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v6
2100 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2101 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v9, v6
2102 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v6
2103 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v7, v4
2104 ; CGP-NEXT: v_addc_u32_e32 v8, vcc, v8, v5, vcc
2105 ; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], s6, v9, 0
2106 ; CGP-NEXT: v_mov_b32_e32 v4, v6
2107 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v8, v[4:5]
2108 ; CGP-NEXT: v_ashrrev_i32_e32 v4, 31, v1
2109 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v4
2110 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v9, v[6:7]
2111 ; CGP-NEXT: v_addc_u32_e32 v1, vcc, v1, v4, vcc
2112 ; CGP-NEXT: v_xor_b32_e32 v10, v0, v4
2113 ; CGP-NEXT: v_mul_lo_u32 v0, v8, v5
2114 ; CGP-NEXT: v_mul_lo_u32 v7, v9, v6
2115 ; CGP-NEXT: v_xor_b32_e32 v11, v1, v4
2116 ; CGP-NEXT: v_mul_hi_u32 v1, v9, v5
2117 ; CGP-NEXT: v_mul_hi_u32 v5, v8, v5
2118 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v7
2119 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2120 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
2121 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2122 ; CGP-NEXT: v_mul_lo_u32 v1, v8, v6
2123 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
2124 ; CGP-NEXT: v_mul_hi_u32 v7, v9, v6
2125 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v5
2126 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
2127 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v7
2128 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2129 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7
2130 ; CGP-NEXT: v_mul_hi_u32 v6, v8, v6
2131 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v1, v0
2132 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
2133 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v5, v1
2134 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v6, v1
2135 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v9, v0
2136 ; CGP-NEXT: v_addc_u32_e32 v1, vcc, v8, v1, vcc
2137 ; CGP-NEXT: v_mul_lo_u32 v5, v11, v0
2138 ; CGP-NEXT: v_mul_lo_u32 v6, v10, v1
2139 ; CGP-NEXT: v_mul_hi_u32 v7, v10, v0
2140 ; CGP-NEXT: v_mul_hi_u32 v0, v11, v0
2141 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v6
2142 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2143 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7
2144 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
2145 ; CGP-NEXT: v_mul_lo_u32 v7, v11, v1
2146 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v5
2147 ; CGP-NEXT: v_mul_hi_u32 v6, v10, v1
2148 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
2149 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2150 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v6
2151 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2152 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v7, v6
2153 ; CGP-NEXT: v_add_i32_e32 v8, vcc, v0, v5
2154 ; CGP-NEXT: v_mul_hi_u32 v7, v11, v1
2155 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s7, v8, 0
2156 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
2157 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v5
2158 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v7, v5
2159 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s7, v9, v[1:2]
2160 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v10, v0
2161 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], 0, v8, v[6:7]
2162 ; CGP-NEXT: v_mov_b32_e32 v5, 0x12d8fb
2163 ; CGP-NEXT: v_mov_b32_e32 v10, s8
2164 ; CGP-NEXT: v_subb_u32_e64 v1, s[4:5], v11, v6, vcc
2165 ; CGP-NEXT: v_sub_i32_e64 v6, s[4:5], v11, v6
2166 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v5
2167 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]
2168 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v1
2169 ; CGP-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v6, vcc
2170 ; CGP-NEXT: v_cvt_f32_u32_e32 v6, 0x12d8fb
2171 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v5
2172 ; CGP-NEXT: v_cndmask_b32_e64 v10, v10, v7, s[4:5]
2173 ; CGP-NEXT: v_subbrev_u32_e32 v7, vcc, 0, v1, vcc
2174 ; CGP-NEXT: v_cvt_f32_ubyte0_e32 v1, 0
2175 ; CGP-NEXT: v_mac_f32_e32 v6, 0x4f800000, v1
2176 ; CGP-NEXT: v_rcp_iflag_f32_e32 v1, v6
2177 ; CGP-NEXT: v_add_i32_e32 v11, vcc, 1, v8
2178 ; CGP-NEXT: v_addc_u32_e32 v12, vcc, 0, v9, vcc
2179 ; CGP-NEXT: v_mul_f32_e32 v1, 0x5f7ffffc, v1
2180 ; CGP-NEXT: v_mul_f32_e32 v6, 0x2f800000, v1
2181 ; CGP-NEXT: v_trunc_f32_e32 v6, v6
2182 ; CGP-NEXT: v_mac_f32_e32 v1, 0xcf800000, v6
2183 ; CGP-NEXT: v_cvt_u32_f32_e32 v13, v1
2184 ; CGP-NEXT: s_bfe_i32 s4, -1, 0x10000
2185 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v5
2186 ; CGP-NEXT: v_mov_b32_e32 v15, s4
2187 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s6, v13, 0
2188 ; CGP-NEXT: v_cvt_u32_f32_e32 v16, v6
2189 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, -1, vcc
2190 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v7
2191 ; CGP-NEXT: v_cndmask_b32_e32 v14, v15, v14, vcc
2192 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v16, v[1:2]
2193 ; CGP-NEXT: v_add_i32_e32 v1, vcc, 1, v11
2194 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v13, v[6:7]
2195 ; CGP-NEXT: v_addc_u32_e32 v15, vcc, 0, v12, vcc
2196 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v14
2197 ; CGP-NEXT: v_cndmask_b32_e32 v7, v11, v1, vcc
2198 ; CGP-NEXT: v_mul_lo_u32 v1, v16, v0
2199 ; CGP-NEXT: v_mul_lo_u32 v11, v13, v6
2200 ; CGP-NEXT: v_mul_hi_u32 v14, v13, v0
2201 ; CGP-NEXT: v_cndmask_b32_e32 v12, v12, v15, vcc
2202 ; CGP-NEXT: v_mul_hi_u32 v0, v16, v0
2203 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v11
2204 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
2205 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v14
2206 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
2207 ; CGP-NEXT: v_mul_lo_u32 v14, v16, v6
2208 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v1
2209 ; CGP-NEXT: v_mul_hi_u32 v11, v13, v6
2210 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v14, v0
2211 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc
2212 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v11
2213 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
2214 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v14, v11
2215 ; CGP-NEXT: v_mul_hi_u32 v6, v16, v6
2216 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
2217 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
2218 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v1
2219 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v6, v1
2220 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v13, v0
2221 ; CGP-NEXT: v_addc_u32_e32 v13, vcc, v16, v1, vcc
2222 ; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s6, v11, 0
2223 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v10
2224 ; CGP-NEXT: v_cndmask_b32_e32 v8, v8, v7, vcc
2225 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s6, v13, v[1:2]
2226 ; CGP-NEXT: v_xor_b32_e32 v1, v8, v4
2227 ; CGP-NEXT: v_ashrrev_i32_e32 v8, 31, v3
2228 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v11, v[6:7]
2229 ; CGP-NEXT: v_cndmask_b32_e32 v9, v9, v12, vcc
2230 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v8
2231 ; CGP-NEXT: v_addc_u32_e32 v3, vcc, v3, v8, vcc
2232 ; CGP-NEXT: v_xor_b32_e32 v10, v2, v8
2233 ; CGP-NEXT: v_mul_lo_u32 v2, v13, v0
2234 ; CGP-NEXT: v_mul_lo_u32 v7, v11, v6
2235 ; CGP-NEXT: v_xor_b32_e32 v12, v3, v8
2236 ; CGP-NEXT: v_mul_hi_u32 v3, v11, v0
2237 ; CGP-NEXT: v_mul_hi_u32 v0, v13, v0
2238 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v7
2239 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2240 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
2241 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
2242 ; CGP-NEXT: v_mul_lo_u32 v3, v13, v6
2243 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v7, v2
2244 ; CGP-NEXT: v_mul_hi_u32 v7, v11, v6
2245 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v3, v0
2246 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2247 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v7
2248 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2249 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v7
2250 ; CGP-NEXT: v_mul_hi_u32 v6, v13, v6
2251 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v2
2252 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
2253 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v3, v2
2254 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v6, v2
2255 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v11, v0
2256 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v13, v2, vcc
2257 ; CGP-NEXT: v_mul_lo_u32 v3, v12, v0
2258 ; CGP-NEXT: v_mul_lo_u32 v6, v10, v2
2259 ; CGP-NEXT: v_mul_hi_u32 v7, v10, v0
2260 ; CGP-NEXT: v_mul_hi_u32 v0, v12, v0
2261 ; CGP-NEXT: v_xor_b32_e32 v9, v9, v4
2262 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v6
2263 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2264 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v7
2265 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2266 ; CGP-NEXT: v_mul_lo_u32 v7, v12, v2
2267 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v6, v3
2268 ; CGP-NEXT: v_mul_hi_u32 v6, v10, v2
2269 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v7, v0
2270 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc
2271 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v6
2272 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc
2273 ; CGP-NEXT: v_add_i32_e32 v6, vcc, v7, v6
2274 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v0, v3
2275 ; CGP-NEXT: v_mul_hi_u32 v7, v12, v2
2276 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], s7, v11, 0
2277 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2278 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v6, v0
2279 ; CGP-NEXT: v_add_i32_e32 v13, vcc, v7, v0
2280 ; CGP-NEXT: v_mov_b32_e32 v0, v3
2281 ; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], s7, v13, v[0:1]
2282 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v1, v4
2283 ; CGP-NEXT: v_subb_u32_e32 v1, vcc, v9, v4, vcc
2284 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], 0, v11, v[6:7]
2285 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v10, v2
2286 ; CGP-NEXT: v_subb_u32_e64 v4, s[4:5], v12, v3, vcc
2287 ; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v12, v3
2288 ; CGP-NEXT: v_subbrev_u32_e32 v3, vcc, 0, v3, vcc
2289 ; CGP-NEXT: s_bfe_i32 s6, -1, 0x10000
2290 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v5
2291 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v5
2292 ; CGP-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]
2293 ; CGP-NEXT: v_mov_b32_e32 v7, s6
2294 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v4
2295 ; CGP-NEXT: v_subbrev_u32_e32 v3, vcc, 0, v3, vcc
2296 ; CGP-NEXT: v_cndmask_b32_e64 v4, v7, v6, s[4:5]
2297 ; CGP-NEXT: v_add_i32_e32 v6, vcc, 1, v11
2298 ; CGP-NEXT: v_addc_u32_e32 v7, vcc, 0, v13, vcc
2299 ; CGP-NEXT: s_bfe_i32 s4, -1, 0x10000
2300 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v5
2301 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc
2302 ; CGP-NEXT: v_mov_b32_e32 v5, s4
2303 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v3
2304 ; CGP-NEXT: v_cndmask_b32_e32 v2, v5, v2, vcc
2305 ; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v6
2306 ; CGP-NEXT: v_addc_u32_e32 v5, vcc, 0, v7, vcc
2307 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2
2308 ; CGP-NEXT: v_cndmask_b32_e32 v2, v6, v3, vcc
2309 ; CGP-NEXT: v_cndmask_b32_e32 v3, v7, v5, vcc
2310 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v4
2311 ; CGP-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc
2312 ; CGP-NEXT: v_cndmask_b32_e32 v3, v13, v3, vcc
2313 ; CGP-NEXT: v_xor_b32_e32 v2, v2, v8
2314 ; CGP-NEXT: v_xor_b32_e32 v3, v3, v8
2315 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v8
2316 ; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v8, vcc
2317 ; CGP-NEXT: s_setpc_b64 s[30:31]
2780 ; CGP-LABEL: v_sdiv_v2i64_pow2_shl_denom:
2781 ; CGP: ; %bb.0:
2782 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2783 ; CGP-NEXT: s_mov_b64 s[6:7], 0x1000
2784 ; CGP-NEXT: v_mov_b32_e32 v5, v2
2785 ; CGP-NEXT: v_mov_b32_e32 v7, v3
2786 ; CGP-NEXT: v_lshl_b64 v[2:3], s[6:7], v4
2787 ; CGP-NEXT: v_mov_b32_e32 v9, v1
2788 ; CGP-NEXT: v_mov_b32_e32 v8, v0
2789 ; CGP-NEXT: v_or_b32_e32 v1, v9, v3
2790 ; CGP-NEXT: v_mov_b32_e32 v0, 0
2791 ; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]
2792 ; CGP-NEXT: ; implicit-def: $vgpr0_vgpr1
2793 ; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc
2794 ; CGP-NEXT: s_xor_b64 s[8:9], exec, s[4:5]
2795 ; CGP-NEXT: s_cbranch_execz .LBB8_2
2796 ; CGP-NEXT: ; %bb.1:
2797 ; CGP-NEXT: v_ashrrev_i32_e32 v0, 31, v3
2798 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v2, v0
2799 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v3, v0, vcc
2800 ; CGP-NEXT: v_xor_b32_e32 v4, v1, v0
2801 ; CGP-NEXT: v_xor_b32_e32 v10, v2, v0
2802 ; CGP-NEXT: v_cvt_f32_u32_e32 v1, v4
2803 ; CGP-NEXT: v_cvt_f32_u32_e32 v2, v10
2804 ; CGP-NEXT: v_sub_i32_e32 v12, vcc, 0, v4
2805 ; CGP-NEXT: v_subb_u32_e32 v13, vcc, 0, v10, vcc
2806 ; CGP-NEXT: v_mac_f32_e32 v1, 0x4f800000, v2
2807 ; CGP-NEXT: v_rcp_iflag_f32_e32 v1, v1
2808 ; CGP-NEXT: v_mul_f32_e32 v1, 0x5f7ffffc, v1
2809 ; CGP-NEXT: v_mul_f32_e32 v2, 0x2f800000, v1
2810 ; CGP-NEXT: v_trunc_f32_e32 v3, v2
2811 ; CGP-NEXT: v_mac_f32_e32 v1, 0xcf800000, v3
2812 ; CGP-NEXT: v_cvt_u32_f32_e32 v11, v1
2813 ; CGP-NEXT: v_cvt_u32_f32_e32 v14, v3
2814 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v12, v11, 0
2815 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v12, v14, v[2:3]
2816 ; CGP-NEXT: v_mul_hi_u32 v15, v11, v1
2817 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v11, v[2:3]
2818 ; CGP-NEXT: v_mul_lo_u32 v3, v14, v1
2819 ; CGP-NEXT: v_mul_hi_u32 v1, v14, v1
2820 ; CGP-NEXT: v_mul_lo_u32 v16, v11, v2
2821 ; CGP-NEXT: v_mul_lo_u32 v17, v14, v2
2822 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v16
2823 ; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc
2824 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v15
2825 ; CGP-NEXT: v_mul_hi_u32 v15, v11, v2
2826 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2827 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v16, v3
2828 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v17, v1
2829 ; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc
2830 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v15
2831 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
2832 ; CGP-NEXT: v_add_i32_e32 v15, vcc, v16, v15
2833 ; CGP-NEXT: v_mul_hi_u32 v2, v14, v2
2834 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v3
2835 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2836 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v15, v3
2837 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
2838 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v1
2839 ; CGP-NEXT: v_addc_u32_e32 v14, vcc, v14, v2, vcc
2840 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v12, v11, 0
2841 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v12, v14, v[2:3]
2842 ; CGP-NEXT: v_ashrrev_i32_e32 v12, 31, v9
2843 ; CGP-NEXT: v_mul_hi_u32 v15, v11, v1
2844 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v11, v[2:3]
2845 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v8, v12
2846 ; CGP-NEXT: v_addc_u32_e32 v8, vcc, v9, v12, vcc
2847 ; CGP-NEXT: v_xor_b32_e32 v9, v3, v12
2848 ; CGP-NEXT: v_mul_lo_u32 v3, v14, v1
2849 ; CGP-NEXT: v_mul_lo_u32 v13, v11, v2
2850 ; CGP-NEXT: v_mul_hi_u32 v1, v14, v1
2851 ; CGP-NEXT: v_xor_b32_e32 v8, v8, v12
2852 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v13
2853 ; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc
2854 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v15
2855 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2856 ; CGP-NEXT: v_mul_lo_u32 v15, v14, v2
2857 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v13, v3
2858 ; CGP-NEXT: v_mul_hi_u32 v13, v11, v2
2859 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v15, v1
2860 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
2861 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v13
2862 ; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc
2863 ; CGP-NEXT: v_add_i32_e32 v13, vcc, v15, v13
2864 ; CGP-NEXT: v_mul_hi_u32 v2, v14, v2
2865 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v3
2866 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2867 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v13, v3
2868 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
2869 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v1
2870 ; CGP-NEXT: v_addc_u32_e32 v2, vcc, v14, v2, vcc
2871 ; CGP-NEXT: v_mul_lo_u32 v3, v8, v1
2872 ; CGP-NEXT: v_mul_lo_u32 v11, v9, v2
2873 ; CGP-NEXT: v_mul_hi_u32 v13, v9, v1
2874 ; CGP-NEXT: v_mul_hi_u32 v1, v8, v1
2875 ; CGP-NEXT: v_mul_hi_u32 v14, v8, v2
2876 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v11
2877 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
2878 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v13
2879 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2880 ; CGP-NEXT: v_mul_lo_u32 v13, v8, v2
2881 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v11, v3
2882 ; CGP-NEXT: v_mul_hi_u32 v11, v9, v2
2883 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v13, v1
2884 ; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc
2885 ; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v11
2886 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc
2887 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v13, v11
2888 ; CGP-NEXT: v_add_i32_e32 v13, vcc, v1, v3
2889 ; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v4, v13, 0
2890 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
2891 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v11, v3
2892 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v14, v3
2893 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v4, v11, v[2:3]
2894 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v9, v1
2895 ; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v10, v13, v[2:3]
2896 ; CGP-NEXT: v_subb_u32_e64 v3, s[4:5], v8, v2, vcc
2897 ; CGP-NEXT: v_sub_i32_e64 v2, s[4:5], v8, v2
2898 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v10
2899 ; CGP-NEXT: v_subb_u32_e32 v2, vcc, v2, v10, vcc
2900 ; CGP-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]
2901 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v1, v4
2902 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v1, v4
2903 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]
2904 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v3, v10
2905 ; CGP-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc
2906 ; CGP-NEXT: v_cndmask_b32_e64 v3, v8, v9, s[4:5]
2907 ; CGP-NEXT: v_add_i32_e32 v8, vcc, 1, v13
2908 ; CGP-NEXT: v_addc_u32_e32 v9, vcc, 0, v11, vcc
2909 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v10
2910 ; CGP-NEXT: v_cndmask_b32_e64 v14, 0, -1, vcc
2911 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v4
2912 ; CGP-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc
2913 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v2, v10
2914 ; CGP-NEXT: v_cndmask_b32_e32 v1, v14, v1, vcc
2915 ; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v8
2916 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, 0, v9, vcc
2917 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v1
2918 ; CGP-NEXT: v_cndmask_b32_e32 v1, v8, v2, vcc
2919 ; CGP-NEXT: v_cndmask_b32_e32 v2, v9, v4, vcc
2920 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3
2921 ; CGP-NEXT: v_cndmask_b32_e32 v1, v13, v1, vcc
2922 ; CGP-NEXT: v_xor_b32_e32 v3, v12, v0
2923 ; CGP-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc
2924 ; CGP-NEXT: v_xor_b32_e32 v0, v1, v3
2925 ; CGP-NEXT: v_xor_b32_e32 v1, v2, v3
2926 ; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v3
2927 ; CGP-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc
2928 ; CGP-NEXT: ; implicit-def: $vgpr2_vgpr3
2929 ; CGP-NEXT: ; implicit-def: $vgpr8
2930 ; CGP-NEXT: .LBB8_2: ; %Flow1
2931 ; CGP-NEXT: s_or_saveexec_b64 s[8:9], s[8:9]
2932 ; CGP-NEXT: v_lshl_b64 v[9:10], s[6:7], v6
2933 ; CGP-NEXT: s_xor_b64 exec, exec, s[8:9]
2934 ; CGP-NEXT: s_cbranch_execz .LBB8_4
2935 ; CGP-NEXT: ; %bb.3:
2936 ; CGP-NEXT: v_cvt_f32_u32_e32 v0, v2
2937 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v2
2938 ; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v0
2939 ; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0
2940 ; CGP-NEXT: v_cvt_u32_f32_e32 v0, v0
2941 ; CGP-NEXT: v_mul_lo_u32 v1, v1, v0
2942 ; CGP-NEXT: v_mul_hi_u32 v1, v0, v1
2943 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1
2944 ; CGP-NEXT: v_mul_hi_u32 v0, v8, v0
2945 ; CGP-NEXT: v_mul_lo_u32 v1, v0, v2
2946 ; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0
2947 ; CGP-NEXT: v_sub_i32_e32 v1, vcc, v8, v1
2948 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v2
2949 ; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc
2950 ; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v1, v2
2951 ; CGP-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc
2952 ; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0
2953 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v1, v2
2954 ; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc
2955 ; CGP-NEXT: v_mov_b32_e32 v1, 0
2956 ; CGP-NEXT: .LBB8_4:
2957 ; CGP-NEXT: s_or_b64 exec, exec, s[8:9]
2958 ; CGP-NEXT: v_or_b32_e32 v3, v7, v10
2959 ; CGP-NEXT: v_mov_b32_e32 v2, 0
2960 ; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]
2961 ; CGP-NEXT: ; implicit-def: $vgpr2_vgpr3
2962 ; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc
2963 ; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]
2964 ; CGP-NEXT: s_cbranch_execnz .LBB8_7
2965 ; CGP-NEXT: ; %bb.5: ; %Flow
2966 ; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]
2967 ; CGP-NEXT: s_cbranch_execnz .LBB8_8
2968 ; CGP-NEXT: .LBB8_6:
2969 ; CGP-NEXT: s_or_b64 exec, exec, s[6:7]
2970 ; CGP-NEXT: s_setpc_b64 s[30:31]
2971 ; CGP-NEXT: .LBB8_7:
2972 ; CGP-NEXT: v_ashrrev_i32_e32 v2, 31, v10
2973 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v9, v2
2974 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, v10, v2, vcc
2975 ; CGP-NEXT: v_xor_b32_e32 v6, v3, v2
2976 ; CGP-NEXT: v_xor_b32_e32 v10, v4, v2
2977 ; CGP-NEXT: v_cvt_f32_u32_e32 v3, v6
2978 ; CGP-NEXT: v_cvt_f32_u32_e32 v4, v10
2979 ; CGP-NEXT: v_sub_i32_e32 v12, vcc, 0, v6
2980 ; CGP-NEXT: v_subb_u32_e32 v13, vcc, 0, v10, vcc
2981 ; CGP-NEXT: v_mac_f32_e32 v3, 0x4f800000, v4
2982 ; CGP-NEXT: v_rcp_iflag_f32_e32 v3, v3
2983 ; CGP-NEXT: v_mul_f32_e32 v3, 0x5f7ffffc, v3
2984 ; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v3
2985 ; CGP-NEXT: v_trunc_f32_e32 v8, v4
2986 ; CGP-NEXT: v_mac_f32_e32 v3, 0xcf800000, v8
2987 ; CGP-NEXT: v_cvt_u32_f32_e32 v11, v3
2988 ; CGP-NEXT: v_cvt_u32_f32_e32 v14, v8
2989 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 0
2990 ; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v12, v14, v[4:5]
2991 ; CGP-NEXT: v_mul_lo_u32 v4, v14, v3
2992 ; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v13, v11, v[8:9]
2993 ; CGP-NEXT: v_mul_hi_u32 v9, v11, v3
2994 ; CGP-NEXT: v_mul_hi_u32 v3, v14, v3
2995 ; CGP-NEXT: v_mul_lo_u32 v15, v11, v8
2996 ; CGP-NEXT: v_mul_lo_u32 v16, v14, v8
2997 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v15
2998 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
2999 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v9
3000 ; CGP-NEXT: v_mul_hi_u32 v9, v11, v8
3001 ; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc
3002 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v15, v4
3003 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v16, v3
3004 ; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc
3005 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v9
3006 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
3007 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v15, v9
3008 ; CGP-NEXT: v_mul_hi_u32 v8, v14, v8
3009 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v4
3010 ; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc
3011 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v9, v4
3012 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v8, v4
3013 ; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v3
3014 ; CGP-NEXT: v_addc_u32_e32 v14, vcc, v14, v4, vcc
3015 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 0
3016 ; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v12, v14, v[4:5]
3017 ; CGP-NEXT: v_ashrrev_i32_e32 v12, 31, v7
3018 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v5, v12
3019 ; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v13, v11, v[8:9]
3020 ; CGP-NEXT: v_addc_u32_e32 v5, vcc, v7, v12, vcc
3021 ; CGP-NEXT: v_xor_b32_e32 v7, v4, v12
3022 ; CGP-NEXT: v_mul_lo_u32 v4, v14, v3
3023 ; CGP-NEXT: v_mul_lo_u32 v9, v11, v8
3024 ; CGP-NEXT: v_xor_b32_e32 v13, v5, v12
3025 ; CGP-NEXT: v_mul_hi_u32 v5, v11, v3
3026 ; CGP-NEXT: v_mul_hi_u32 v3, v14, v3
3027 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v9
3028 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
3029 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5
3030 ; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc
3031 ; CGP-NEXT: v_mul_lo_u32 v5, v14, v8
3032 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v9, v4
3033 ; CGP-NEXT: v_mul_hi_u32 v9, v11, v8
3034 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v5, v3
3035 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
3036 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v9
3037 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
3038 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v9
3039 ; CGP-NEXT: v_mul_hi_u32 v8, v14, v8
3040 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v4
3041 ; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc
3042 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v5, v4
3043 ; CGP-NEXT: v_add_i32_e32 v4, vcc, v8, v4
3044 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v11, v3
3045 ; CGP-NEXT: v_addc_u32_e32 v4, vcc, v14, v4, vcc
3046 ; CGP-NEXT: v_mul_lo_u32 v5, v13, v3
3047 ; CGP-NEXT: v_mul_lo_u32 v8, v7, v4
3048 ; CGP-NEXT: v_mul_hi_u32 v9, v7, v3
3049 ; CGP-NEXT: v_mul_hi_u32 v3, v13, v3
3050 ; CGP-NEXT: v_mul_hi_u32 v11, v13, v4
3051 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v8
3052 ; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc
3053 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v9
3054 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
3055 ; CGP-NEXT: v_mul_lo_u32 v9, v13, v4
3056 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v8, v5
3057 ; CGP-NEXT: v_mul_hi_u32 v8, v7, v4
3058 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v9, v3
3059 ; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc
3060 ; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v8
3061 ; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc
3062 ; CGP-NEXT: v_add_i32_e32 v8, vcc, v9, v8
3063 ; CGP-NEXT: v_add_i32_e32 v9, vcc, v3, v5
3064 ; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v6, v9, 0
3065 ; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc
3066 ; CGP-NEXT: v_add_i32_e32 v5, vcc, v8, v5
3067 ; CGP-NEXT: v_add_i32_e32 v8, vcc, v11, v5
3068 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v6, v8, v[4:5]
3069 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v7, v3
3070 ; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v10, v9, v[4:5]
3071 ; CGP-NEXT: v_subb_u32_e64 v5, s[4:5], v13, v4, vcc
3072 ; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v13, v4
3073 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v10
3074 ; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v10, vcc
3075 ; CGP-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]
3076 ; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v6
3077 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v3, v6
3078 ; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]
3079 ; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v5, v10
3080 ; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc
3081 ; CGP-NEXT: v_cndmask_b32_e64 v5, v7, v11, s[4:5]
3082 ; CGP-NEXT: v_add_i32_e32 v7, vcc, 1, v9
3083 ; CGP-NEXT: v_addc_u32_e32 v11, vcc, 0, v8, vcc
3084 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v10
3085 ; CGP-NEXT: v_cndmask_b32_e64 v13, 0, -1, vcc
3086 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v6
3087 ; CGP-NEXT: v_cndmask_b32_e64 v3, 0, -1, vcc
3088 ; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v10
3089 ; CGP-NEXT: v_cndmask_b32_e32 v3, v13, v3, vcc
3090 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v7
3091 ; CGP-NEXT: v_addc_u32_e32 v6, vcc, 0, v11, vcc
3092 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3
3093 ; CGP-NEXT: v_cndmask_b32_e32 v3, v7, v4, vcc
3094 ; CGP-NEXT: v_cndmask_b32_e32 v4, v11, v6, vcc
3095 ; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v5
3096 ; CGP-NEXT: v_cndmask_b32_e32 v3, v9, v3, vcc
3097 ; CGP-NEXT: v_xor_b32_e32 v5, v12, v2
3098 ; CGP-NEXT: v_cndmask_b32_e32 v4, v8, v4, vcc
3099 ; CGP-NEXT: v_xor_b32_e32 v2, v3, v5
3100 ; CGP-NEXT: v_xor_b32_e32 v3, v4, v5
3101 ; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v5
3102 ; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v5, vcc
3103 ; CGP-NEXT: ; implicit-def: $vgpr9_vgpr10
3104 ; CGP-NEXT: ; implicit-def: $vgpr5
3105 ; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]
3106 ; CGP-NEXT: s_cbranch_execz .LBB8_6
3107 ; CGP-NEXT: .LBB8_8:
3108 ; CGP-NEXT: v_cvt_f32_u32_e32 v2, v9
3109 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v9
3110 ; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v2
3111 ; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2
3112 ; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2
3113 ; CGP-NEXT: v_mul_lo_u32 v3, v3, v2
3114 ; CGP-NEXT: v_mul_hi_u32 v3, v2, v3
3115 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3
3116 ; CGP-NEXT: v_mul_hi_u32 v2, v5, v2
3117 ; CGP-NEXT: v_mul_lo_u32 v3, v2, v9
3118 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v2
3119 ; CGP-NEXT: v_sub_i32_e32 v3, vcc, v5, v3
3120 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v9
3121 ; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
3122 ; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v9
3123 ; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc
3124 ; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v2
3125 ; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v9
3126 ; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc
3127 ; CGP-NEXT: v_mov_b32_e32 v3, 0
3128 ; CGP-NEXT: s_or_b64 exec, exec, s[6:7]
3129 ; CGP-NEXT: s_setpc_b64 s[30:31]
3163 ; CGP-LABEL: v_sdiv_i64_24bit:
3164 ; CGP: ; %bb.0:
3165 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3166 ; CGP-NEXT: v_and_b32_e32 v1, 0xffffff, v2
3167 ; CGP-NEXT: v_cvt_f32_i32_e32 v1, v1
3168 ; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v0
3169 ; CGP-NEXT: v_cvt_f32_i32_e32 v0, v0
3170 ; CGP-NEXT: v_rcp_f32_e32 v2, v1
3171 ; CGP-NEXT: v_mul_f32_e32 v2, v0, v2
3172 ; CGP-NEXT: v_trunc_f32_e32 v2, v2
3173 ; CGP-NEXT: v_mad_f32 v0, -v2, v1, v0
3174 ; CGP-NEXT: v_cvt_i32_f32_e32 v2, v2
3175 ; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v0|, |v1|
3176 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
3177 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v2, v0
3178 ; CGP-NEXT: v_bfe_i32 v0, v0, 0, 25
3179 ; CGP-NEXT: v_ashrrev_i32_e32 v1, 31, v0
3180 ; CGP-NEXT: s_setpc_b64 s[30:31]
3444 ; CGP-LABEL: v_sdiv_v2i64_24bit:
3445 ; CGP: ; %bb.0:
3446 ; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3447 ; CGP-NEXT: v_and_b32_e32 v1, 0xffffff, v4
3448 ; CGP-NEXT: v_cvt_f32_i32_e32 v1, v1
3449 ; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v0
3450 ; CGP-NEXT: v_cvt_f32_i32_e32 v0, v0
3451 ; CGP-NEXT: v_and_b32_e32 v4, 0xffffff, v6
3452 ; CGP-NEXT: v_rcp_f32_e32 v3, v1
3453 ; CGP-NEXT: v_cvt_f32_i32_e32 v4, v4
3454 ; CGP-NEXT: v_and_b32_e32 v2, 0xffffff, v2
3455 ; CGP-NEXT: v_cvt_f32_i32_e32 v2, v2
3456 ; CGP-NEXT: v_mul_f32_e32 v3, v0, v3
3457 ; CGP-NEXT: v_trunc_f32_e32 v3, v3
3458 ; CGP-NEXT: v_mad_f32 v0, -v3, v1, v0
3459 ; CGP-NEXT: v_cvt_i32_f32_e32 v3, v3
3460 ; CGP-NEXT: v_rcp_f32_e32 v5, v4
3461 ; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v0|, |v1|
3462 ; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
3463 ; CGP-NEXT: v_add_i32_e32 v0, vcc, v3, v0
3464 ; CGP-NEXT: v_mul_f32_e32 v3, v2, v5
3465 ; CGP-NEXT: v_trunc_f32_e32 v3, v3
3466 ; CGP-NEXT: v_mad_f32 v2, -v3, v4, v2
3467 ; CGP-NEXT: v_cvt_i32_f32_e32 v3, v3
3468 ; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v2|, |v4|
3469 ; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
3470 ; CGP-NEXT: v_bfe_i32 v0, v0, 0, 25
3471 ; CGP-NEXT: v_add_i32_e32 v2, vcc, v3, v2
3472 ; CGP-NEXT: v_bfe_i32 v2, v2, 0, 25
3473 ; CGP-NEXT: v_ashrrev_i32_e32 v1, 31, v0
3474 ; CGP-NEXT: v_ashrrev_i32_e32 v3, 31, v2
3475 ; CGP-NEXT: s_setpc_b64 s[30:31]