652{
655 float gamma12;
656 float sigma12;
657 float gamma23;
658 float sigma23;
665 int nG, nG_app;
666 int n_iter;
668 int k_minus_1;
669 int n_fuse;
670 int is_ident12, is_ident23;
671
672 k_minus_1 = k_G - 1;
673 nG = n_A - 1;
674 n_fuse = 2;
675
676
677 if ( nG < 2*k_minus_1 || k_G == 1 )
678 {
680 m_A,
681 n_A,
682 buff_G, rs_G, cs_G,
683 buff_A, rs_A, cs_A );
684 return FLA_SUCCESS;
685 }
686
687
688
689
690 for ( j = -1; j < k_minus_1; j += n_fuse )
691 {
692 nG_app = j + 1;
693 n_iter = nG_app;
695
696 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, ++k, --g )
697 {
698 g12 = buff_G + (g )*rs_G + (k )*cs_G;
699 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
700 a1 = buff_A + (g )*cs_A;
701 a2 = buff_A + (g + 1)*cs_A;
702 a3 = buff_A + (g + 2)*cs_A;
703
708
709 is_ident12 = ( gamma12 == one && sigma12 == zero );
710 is_ident23 = ( gamma23 == one && sigma23 == zero );
711
712 if ( !is_ident12 && is_ident23 )
713 {
714
715
716 MAC_Apply_G_mx2_asc( m_A,
717 &gamma12,
718 &sigma12,
719 a1, 1,
720 a2, 1 );
721 }
722 else if ( is_ident12 && !is_ident23 )
723 {
724
725
726 MAC_Apply_G_mx2_asc( m_A,
727 &gamma23,
728 &sigma23,
729 a2, 1,
730 a3, 1 );
731 }
732 else if ( !is_ident12 && !is_ident23 )
733 {
734
735
736 MAC_Apply_G_mx3_asc( m_A,
737 &gamma12,
738 &sigma12,
739 &gamma23,
740 &sigma23,
741 a1, 1,
742 a2, 1,
743 a3, 1 );
744 }
745 }
746
748 {
749 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
750 a2 = buff_A + (g + 1)*cs_A;
751 a3 = buff_A + (g + 2)*cs_A;
752
755
756 is_ident23 = ( gamma23 == one && sigma23 == zero );
757
758 if ( !is_ident23 )
759 MAC_Apply_G_mx2_asc( m_A,
760 &gamma23,
761 &sigma23,
762 a2, 1,
763 a3, 1 );
764 }
765 }
766
767
768
769 for ( ; j < nG - 1; j += n_fuse )
770 {
771 nG_app = k_G;
772 n_iter = nG_app;
774
775 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, ++k, --g )
776 {
777 g12 = buff_G + (g )*rs_G + (k )*cs_G;
778 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
779 a1 = buff_A + (g )*cs_A;
780 a2 = buff_A + (g + 1)*cs_A;
781 a3 = buff_A + (g + 2)*cs_A;
782
787
788 is_ident12 = ( gamma12 == one && sigma12 == zero );
789 is_ident23 = ( gamma23 == one && sigma23 == zero );
790
791 if ( !is_ident12 && is_ident23 )
792 {
793
794
795 MAC_Apply_G_mx2_asc( m_A,
796 &gamma12,
797 &sigma12,
798 a1, 1,
799 a2, 1 );
800 }
801 else if ( is_ident12 && !is_ident23 )
802 {
803
804
805 MAC_Apply_G_mx2_asc( m_A,
806 &gamma23,
807 &sigma23,
808 a2, 1,
809 a3, 1 );
810 }
811 else if ( !is_ident12 && !is_ident23 )
812 {
813
814
815 MAC_Apply_G_mx3_asc( m_A,
816 &gamma12,
817 &sigma12,
818 &gamma23,
819 &sigma23,
820 a1, 1,
821 a2, 1,
822 a3, 1 );
823 }
824 }
825 }
826
827
828
829 for ( j = nG % n_fuse; j < k_G; j += n_fuse )
830 {
831 g = nG - 1;
832 k = j;
833
836 {
837 g12 = buff_G + (g )*rs_G + (k )*cs_G;
838 a1 = buff_A + (g )*cs_A;
839 a2 = buff_A + (g + 1)*cs_A;
840
843
844 is_ident12 = ( gamma12 == one && sigma12 == zero );
845
846 if ( !is_ident12 )
847 MAC_Apply_G_mx2_asc( m_A,
848 &gamma12,
849 &sigma12,
850 a1, 1,
851 a2, 1 );
852 ++k;
853 --g;
854 }
855
856 nG_app = k_minus_1 - j;
857 n_iter = nG_app;
858
859 for (
i = 0;
i < n_iter; ++
i, ++k, --g )
860 {
861 g12 = buff_G + (g )*rs_G + (k )*cs_G;
862 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
863 a1 = buff_A + (g )*cs_A;
864 a2 = buff_A + (g + 1)*cs_A;
865 a3 = buff_A + (g + 2)*cs_A;
866
871
872 is_ident12 = ( gamma12 == one && sigma12 == zero );
873 is_ident23 = ( gamma23 == one && sigma23 == zero );
874
875 if ( !is_ident12 && is_ident23 )
876 {
877
878
879 MAC_Apply_G_mx2_asc( m_A,
880 &gamma12,
881 &sigma12,
882 a1, 1,
883 a2, 1 );
884 }
885 else if ( is_ident12 && !is_ident23 )
886 {
887
888
889 MAC_Apply_G_mx2_asc( m_A,
890 &gamma23,
891 &sigma23,
892 a2, 1,
893 a3, 1 );
894 }
895 else if ( !is_ident12 && !is_ident23 )
896 {
897
898
899 MAC_Apply_G_mx3_asc( m_A,
900 &gamma12,
901 &sigma12,
902 &gamma23,
903 &sigma23,
904 a1, 1,
905 a2, 1,
906 a3, 1 );
907 }
908 }
909 }
910
911 return FLA_SUCCESS;
912}
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