680{
683 float gamma12;
684 float sigma12;
685 float gamma23;
686 float sigma23;
693 int nG, nG_app;
694 int n_iter;
696 int k_minus_1;
697 int n_fuse;
698 int is_ident12, is_ident23;
699
700 k_minus_1 = k_G - 1;
701 nG = n_A - 1;
702 n_fuse = 2;
703
704
705 if ( nG < k_minus_1 || k_G == 1 )
706 {
708 m_A,
709 n_A,
710 buff_G, rs_G, cs_G,
711 buff_A, rs_A, cs_A );
712 return FLA_SUCCESS;
713 }
714
715
716
717
718 for ( j = 0; j < k_minus_1; ++j )
719 {
720 nG_app = j + 1;
721 n_iter = nG_app / n_fuse;
723
724 for (
i = 0, k = 0, g = nG_app - 1;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
725 {
726 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
727 g23 = buff_G + (g )*rs_G + (k )*cs_G;
728 a1 = buff_A + (g - 1)*cs_A;
729 a2 = buff_A + (g )*cs_A;
730 a3 = buff_A + (g + 1)*cs_A;
731
736
737 is_ident12 = ( gamma12 == one && sigma12 == zero );
738 is_ident23 = ( gamma23 == one && sigma23 == zero );
739
740 if ( !is_ident12 && is_ident23 )
741 {
742
743
744 MAC_Apply_G_mx2_asc( m_A,
745 &gamma12,
746 &sigma12,
747 a1, 1,
748 a2, 1 );
749 }
750 else if ( is_ident12 && !is_ident23 )
751 {
752
753
754 MAC_Apply_G_mx2_asc( m_A,
755 &gamma23,
756 &sigma23,
757 a2, 1,
758 a3, 1 );
759 }
760 else if ( !is_ident12 && !is_ident23 )
761 {
762
763
764 MAC_Apply_G_mx3b_asc( m_A,
765 &gamma12,
766 &sigma12,
767 &gamma23,
768 &sigma23,
769 a1, 1,
770 a2, 1,
771 a3, 1 );
772 }
773 }
774
776 {
777 g23 = buff_G + (g )*rs_G + (k )*cs_G;
778 a2 = buff_A + (g )*cs_A;
779 a3 = buff_A + (g + 1)*cs_A;
780
783
784 is_ident23 = ( gamma23 == one && sigma23 == zero );
785
786 if ( !is_ident23 )
787 MAC_Apply_G_mx2_asc( m_A,
788 &gamma23,
789 &sigma23,
790 a2, 1,
791 a3, 1 );
792 }
793 }
794
795
796
797 for ( j = k_minus_1; j < nG; ++j )
798 {
799 nG_app = k_G;
800 n_iter = nG_app / n_fuse;
802
803 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
804 {
805 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
806 g23 = buff_G + (g )*rs_G + (k )*cs_G;
807 a1 = buff_A + (g - 1)*cs_A;
808 a2 = buff_A + (g )*cs_A;
809 a3 = buff_A + (g + 1)*cs_A;
810
815
816 is_ident12 = ( gamma12 == one && sigma12 == zero );
817 is_ident23 = ( gamma23 == one && sigma23 == zero );
818
819 if ( !is_ident12 && is_ident23 )
820 {
821
822
823 MAC_Apply_G_mx2_asc( m_A,
824 &gamma12,
825 &sigma12,
826 a1, 1,
827 a2, 1 );
828 }
829 else if ( is_ident12 && !is_ident23 )
830 {
831
832
833 MAC_Apply_G_mx2_asc( m_A,
834 &gamma23,
835 &sigma23,
836 a2, 1,
837 a3, 1 );
838 }
839 else if ( !is_ident12 && !is_ident23 )
840 {
841
842
843 MAC_Apply_G_mx3b_asc( m_A,
844 &gamma12,
845 &sigma12,
846 &gamma23,
847 &sigma23,
848 a1, 1,
849 a2, 1,
850 a3, 1 );
851 }
852 }
853
855 {
856 g23 = buff_G + (g )*rs_G + (k )*cs_G;
857 a2 = buff_A + (g )*cs_A;
858 a3 = buff_A + (g + 1)*cs_A;
859
862
863 is_ident23 = ( gamma23 == one && sigma23 == zero );
864
865 if ( !is_ident23 )
866 MAC_Apply_G_mx2_asc( m_A,
867 &gamma23,
868 &sigma23,
869 a2, 1,
870 a3, 1 );
871 }
872 }
873
874
875
876 for ( j = 1; j < k_G; ++j )
877 {
878 nG_app = k_G - j;
879 n_iter = nG_app / n_fuse;
881
882 for (
i = 0, k = j, g = nG - 1;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
883 {
884 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
885 g23 = buff_G + (g )*rs_G + (k )*cs_G;
886 a1 = buff_A + (g - 1)*cs_A;
887 a2 = buff_A + (g )*cs_A;
888 a3 = buff_A + (g + 1)*cs_A;
889
894
895 is_ident12 = ( gamma12 == one && sigma12 == zero );
896 is_ident23 = ( gamma23 == one && sigma23 == zero );
897
898 if ( !is_ident12 && is_ident23 )
899 {
900
901
902 MAC_Apply_G_mx2_asc( m_A,
903 &gamma12,
904 &sigma12,
905 a1, 1,
906 a2, 1 );
907 }
908 else if ( is_ident12 && !is_ident23 )
909 {
910
911
912 MAC_Apply_G_mx2_asc( m_A,
913 &gamma23,
914 &sigma23,
915 a2, 1,
916 a3, 1 );
917 }
918 else if ( !is_ident12 && !is_ident23 )
919 {
920
921
922 MAC_Apply_G_mx3b_asc( m_A,
923 &gamma12,
924 &sigma12,
925 &gamma23,
926 &sigma23,
927 a1, 1,
928 a2, 1,
929 a3, 1 );
930 }
931 }
932
934 {
935 g23 = buff_G + (g )*rs_G + (k )*cs_G;
936 a2 = buff_A + (g )*cs_A;
937 a3 = buff_A + (g + 1)*cs_A;
938
941
942 is_ident23 = ( gamma23 == one && sigma23 == zero );
943
944 if ( !is_ident23 )
945 MAC_Apply_G_mx2_asc( m_A,
946 &gamma23,
947 &sigma23,
948 a2, 1,
949 a3, 1 );
950 }
951 }
952
953 return FLA_SUCCESS;
954}
FLA_Error FLA_Apply_G_rf_asc_var1(int k_G, int m_A, int n_A, scomplex *buff_G, int rs_G, int cs_G, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Apply_G_rf_asm_var1.c:215
int n_left
Definition bl1_axmyv2.c:149
int i
Definition bl1_axmyv2.c:145
float bl1_s0(void)
Definition bl1_constants.c:111
float bl1_s1(void)
Definition bl1_constants.c:47
Definition blis_type_defs.h:133
float imag
Definition blis_type_defs.h:134
float real
Definition blis_type_defs.h:134