libflame revision_anchor
Functions
bl1_copymt.c File Reference

(r)

Functions

void bl1_icopymt (trans1_t trans, int m, int n, int *a, int a_rs, int a_cs, int *b, int b_rs, int b_cs)
 
void bl1_scopymt (trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
 
void bl1_dcopymt (trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
 
void bl1_ccopymt (trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
 
void bl1_zcopymt (trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
 
void bl1_sscopymt (trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
 
void bl1_sdcopymt (trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
 
void bl1_dscopymt (trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
 
void bl1_sccopymt (trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
 
void bl1_cscopymt (trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
 
void bl1_szcopymt (trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
 
void bl1_zscopymt (trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
 
void bl1_ddcopymt (trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
 
void bl1_dccopymt (trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
 
void bl1_cdcopymt (trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
 
void bl1_dzcopymt (trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
 
void bl1_zdcopymt (trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
 
void bl1_cccopymt (trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
 
void bl1_czcopymt (trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
 
void bl1_zccopymt (trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
 
void bl1_zzcopymt (trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
 

Function Documentation

◆ bl1_cccopymt()

void bl1_cccopymt ( trans1_t  trans,
int  m,
int  n,
scomplex a,
int  a_rs,
int  a_cs,
scomplex b,
int  b_rs,
int  b_cs 
)
1167{
1170 int lda, inca;
1171 int ldb, incb;
1172 int n_iter;
1173 int n_elem;
1174 int j;
1175 conj1_t conj;
1176
1177 // Return early if possible.
1178 if ( bl1_zero_dim2( m, n ) ) return;
1179
1180 // Handle cases where A and B are vectors to ensure that the underlying copy
1181 // gets invoked only once.
1182 if ( bl1_is_vector( m, n ) )
1183 {
1184 // Initialize with values appropriate for vectors.
1185 n_iter = 1;
1186 n_elem = bl1_vector_dim( m, n );
1187 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1188 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1189 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1191 }
1192 else // matrix case
1193 {
1194 // Initialize with optimal values for column-major storage of B.
1195 n_iter = n;
1196 n_elem = m;
1197 lda = a_cs;
1198 inca = a_rs;
1199 ldb = b_cs;
1200 incb = b_rs;
1201
1202 // Handle the transposition of A.
1203 if ( bl1_does_trans( trans ) )
1204 {
1206 }
1207
1208 // An optimization: if B is row-major, then let's access the matrix by rows
1209 // instead of by columns for increased spatial locality.
1210 if ( bl1_is_row_storage( b_rs, b_cs ) )
1211 {
1215 }
1216 }
1217
1218 // Extract conj component from trans parameter.
1220
1221 for ( j = 0; j < n_iter; ++j )
1222 {
1223 a_begin = a + j*lda;
1224 b_begin = b + j*ldb;
1225
1227 n_elem,
1228 a_begin, inca,
1229 b_begin, incb );
1230 }
1231}
int i
Definition bl1_axmyv2.c:145
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
int bl1_is_row_storage(int rs, int cs)
Definition bl1_is.c:95
int bl1_is_vector(int m, int n)
Definition bl1_is.c:106
conj1_t bl1_proj_trans1_to_conj(trans1_t trans)
Definition bl1_proj.c:13
int bl1_vector_dim(int m, int n)
Definition bl1_vector.c:13
int bl1_vector_inc(trans1_t trans, int m, int n, int rs, int cs)
Definition bl1_vector.c:19
int bl1_zero_dim2(int m, int n)
Definition bl1_is.c:118
int bl1_does_trans(trans1_t trans)
Definition bl1_does.c:13
@ BLIS1_NO_TRANSPOSE
Definition blis_type_defs.h:54
conj1_t
Definition blis_type_defs.h:80
Definition blis_type_defs.h:133

References bl1_ccopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

◆ bl1_ccopymt()

void bl1_ccopymt ( trans1_t  trans,
int  m,
int  n,
scomplex a,
int  a_rs,
int  a_cs,
scomplex b,
int  b_rs,
int  b_cs 
)
216{
219 int lda, inca;
220 int ldb, incb;
221 int n_iter;
222 int n_elem;
223 int j;
224
225 // Return early if possible.
226 if ( bl1_zero_dim2( m, n ) ) return;
227
228 // Handle cases where A and B are vectors to ensure that the underlying copy
229 // gets invoked only once.
230 if ( bl1_is_vector( m, n ) )
231 {
232 // Initialize with values appropriate for vectors.
233 n_iter = 1;
234 n_elem = bl1_vector_dim( m, n );
235 lda = 1; // multiplied by zero when n_iter == 1; not needed.
236 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
237 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
239 }
240 else // matrix case
241 {
242 // Initialize with optimal values for column-major storage.
243 n_iter = n;
244 n_elem = m;
245 lda = a_cs;
246 inca = a_rs;
247 ldb = b_cs;
248 incb = b_rs;
249
250 // Handle the transposition of A.
251 if ( bl1_does_trans( trans ) )
252 {
254 }
255
256 // An optimization: if B is row-major and if A is effectively row-major
257 // after a possible transposition, then let's access the matrix by rows
258 // instead of by columns for increased spatial locality.
259 if ( bl1_is_row_storage( b_rs, b_cs ) )
260 {
261 if ( ( bl1_is_col_storage( a_rs, a_cs ) && bl1_does_trans( trans ) ) ||
263 {
267 }
268 }
269 }
270
271 for ( j = 0; j < n_iter; j++ )
272 {
273 a_begin = a + j*lda;
274 b_begin = b + j*ldb;
275
277 a_begin, inca,
278 b_begin, incb );
279
280 if ( bl1_does_conj( trans ) )
282 b_begin, incb );
283 }
284}
void bl1_cconjv(int m, scomplex *x, int incx)
Definition bl1_conjv.c:23
void bl1_ccopy(int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copy.c:39
int bl1_does_notrans(trans1_t trans)
Definition bl1_does.c:19
int bl1_does_conj(trans1_t trans)
Definition bl1_does.c:25
int bl1_is_col_storage(int rs, int cs)
Definition bl1_is.c:90

References bl1_cconjv(), bl1_ccopy(), bl1_does_conj(), bl1_does_notrans(), bl1_does_trans(), bl1_is_col_storage(), bl1_is_row_storage(), bl1_is_vector(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by bl1_ccreate_contigm(), bl1_ccreate_contigmt(), bl1_cfree_saved_contigm(), bl1_cfree_saved_contigmsr(), bl1_cgemm(), bl1_chemm(), bl1_cher2k(), bl1_csymm(), bl1_csyr2k(), bl1_ctrmmsx(), bl1_ctrsmsx(), FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_cdcopymt()

void bl1_cdcopymt ( trans1_t  trans,
int  m,
int  n,
scomplex a,
int  a_rs,
int  a_cs,
double b,
int  b_rs,
int  b_cs 
)
965{
967 double* b_begin;
968 int lda, inca;
969 int ldb, incb;
970 int n_iter;
971 int n_elem;
972 int j;
974
975 // Return early if possible.
976 if ( bl1_zero_dim2( m, n ) ) return;
977
978 // Handle cases where A and B are vectors to ensure that the underlying copy
979 // gets invoked only once.
980 if ( bl1_is_vector( m, n ) )
981 {
982 // Initialize with values appropriate for vectors.
983 n_iter = 1;
984 n_elem = bl1_vector_dim( m, n );
985 lda = 1; // multiplied by zero when n_iter == 1; not needed.
986 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
987 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
989 }
990 else // matrix case
991 {
992 // Initialize with optimal values for column-major storage of B.
993 n_iter = n;
994 n_elem = m;
995 lda = a_cs;
996 inca = a_rs;
997 ldb = b_cs;
998 incb = b_rs;
999
1000 // Handle the transposition of A.
1001 if ( bl1_does_trans( trans ) )
1002 {
1004 }
1005
1006 // An optimization: if B is row-major, then let's access the matrix by rows
1007 // instead of by columns for increased spatial locality.
1008 if ( bl1_is_row_storage( b_rs, b_cs ) )
1009 {
1013 }
1014 }
1015
1016 // Extract conj component from trans parameter.
1018
1019 for ( j = 0; j < n_iter; ++j )
1020 {
1021 a_begin = a + j*lda;
1022 b_begin = b + j*ldb;
1023
1025 n_elem,
1026 a_begin, inca,
1027 b_begin, incb );
1028 }
1029}
void bl1_cdcopyv(conj1_t conj, int m, scomplex *x, int incx, double *y, int incy)
Definition bl1_copyv.c:236

References bl1_cdcopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_cscopymt()

void bl1_cscopymt ( trans1_t  trans,
int  m,
int  n,
scomplex a,
int  a_rs,
int  a_cs,
float b,
int  b_rs,
int  b_cs 
)
629{
631 float* b_begin;
632 int lda, inca;
633 int ldb, incb;
634 int n_iter;
635 int n_elem;
636 int j;
638
639 // Return early if possible.
640 if ( bl1_zero_dim2( m, n ) ) return;
641
642 // Handle cases where A and B are vectors to ensure that the underlying copy
643 // gets invoked only once.
644 if ( bl1_is_vector( m, n ) )
645 {
646 // Initialize with values appropriate for vectors.
647 n_iter = 1;
648 n_elem = bl1_vector_dim( m, n );
649 lda = 1; // multiplied by zero when n_iter == 1; not needed.
650 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
651 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
653 }
654 else // matrix case
655 {
656 // Initialize with optimal values for column-major storage of B.
657 n_iter = n;
658 n_elem = m;
659 lda = a_cs;
660 inca = a_rs;
661 ldb = b_cs;
662 incb = b_rs;
663
664 // Handle the transposition of A.
665 if ( bl1_does_trans( trans ) )
666 {
668 }
669
670 // An optimization: if B is row-major, then let's access the matrix by rows
671 // instead of by columns for increased spatial locality.
672 if ( bl1_is_row_storage( b_rs, b_cs ) )
673 {
677 }
678 }
679
680 // Extract conj component from trans parameter.
682
683 for ( j = 0; j < n_iter; ++j )
684 {
685 a_begin = a + j*lda;
686 b_begin = b + j*ldb;
687
689 n_elem,
690 a_begin, inca,
691 b_begin, incb );
692 }
693}
void bl1_cscopyv(conj1_t conj, int m, scomplex *x, int incx, float *y, int incy)
Definition bl1_copyv.c:146

References bl1_cscopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_czcopymt()

void bl1_czcopymt ( trans1_t  trans,
int  m,
int  n,
scomplex a,
int  a_rs,
int  a_cs,
dcomplex b,
int  b_rs,
int  b_cs 
)
1235{
1238 int lda, inca;
1239 int ldb, incb;
1240 int n_iter;
1241 int n_elem;
1242 int j;
1243 conj1_t conj;
1244
1245 // Return early if possible.
1246 if ( bl1_zero_dim2( m, n ) ) return;
1247
1248 // Handle cases where A and B are vectors to ensure that the underlying copy
1249 // gets invoked only once.
1250 if ( bl1_is_vector( m, n ) )
1251 {
1252 // Initialize with values appropriate for vectors.
1253 n_iter = 1;
1254 n_elem = bl1_vector_dim( m, n );
1255 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1256 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1257 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1259 }
1260 else // matrix case
1261 {
1262 // Initialize with optimal values for column-major storage of B.
1263 n_iter = n;
1264 n_elem = m;
1265 lda = a_cs;
1266 inca = a_rs;
1267 ldb = b_cs;
1268 incb = b_rs;
1269
1270 // Handle the transposition of A.
1271 if ( bl1_does_trans( trans ) )
1272 {
1274 }
1275
1276 // An optimization: if B is row-major, then let's access the matrix by rows
1277 // instead of by columns for increased spatial locality.
1278 if ( bl1_is_row_storage( b_rs, b_cs ) )
1279 {
1283 }
1284 }
1285
1286 // Extract conj component from trans parameter.
1288
1289 for ( j = 0; j < n_iter; ++j )
1290 {
1291 a_begin = a + j*lda;
1292 b_begin = b + j*ldb;
1293
1295 n_elem,
1296 a_begin, inca,
1297 b_begin, incb );
1298 }
1299}
void bl1_czcopyv(conj1_t conj, int m, scomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:304
Definition blis_type_defs.h:138

References bl1_czcopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_dccopymt()

void bl1_dccopymt ( trans1_t  trans,
int  m,
int  n,
double a,
int  a_rs,
int  a_cs,
scomplex b,
int  b_rs,
int  b_cs 
)
899{
900 double* a_begin;
902 int lda, inca;
903 int ldb, incb;
904 int n_iter;
905 int n_elem;
906 int j;
908
909 // Return early if possible.
910 if ( bl1_zero_dim2( m, n ) ) return;
911
912 // Handle cases where A and B are vectors to ensure that the underlying copy
913 // gets invoked only once.
914 if ( bl1_is_vector( m, n ) )
915 {
916 // Initialize with values appropriate for vectors.
917 n_iter = 1;
918 n_elem = bl1_vector_dim( m, n );
919 lda = 1; // multiplied by zero when n_iter == 1; not needed.
920 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
921 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
923 }
924 else // matrix case
925 {
926 // Initialize with optimal values for column-major storage of B.
927 n_iter = n;
928 n_elem = m;
929 lda = a_cs;
930 inca = a_rs;
931 ldb = b_cs;
932 incb = b_rs;
933
934 // Handle the transposition of A.
935 if ( bl1_does_trans( trans ) )
936 {
938 }
939
940 // An optimization: if B is row-major, then let's access the matrix by rows
941 // instead of by columns for increased spatial locality.
942 if ( bl1_is_row_storage( b_rs, b_cs ) )
943 {
947 }
948 }
949
950 // Extract conj component from trans parameter.
952
953 for ( j = 0; j < n_iter; ++j )
954 {
955 a_begin = a + j*lda;
956 b_begin = b + j*ldb;
957
959 n_elem,
960 a_begin, inca,
961 b_begin, incb );
962 }
963}
void bl1_dccopyv(conj1_t conj, int m, double *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:214

References bl1_dccopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_dcopymt()

void bl1_dcopymt ( trans1_t  trans,
int  m,
int  n,
double a,
int  a_rs,
int  a_cs,
double b,
int  b_rs,
int  b_cs 
)
149{
150 double* a_begin;
151 double* b_begin;
152 int lda, inca;
153 int ldb, incb;
154 int n_iter;
155 int n_elem;
156 int j;
157
158 // Return early if possible.
159 if ( bl1_zero_dim2( m, n ) ) return;
160
161 // Handle cases where A and B are vectors to ensure that the underlying copy
162 // gets invoked only once.
163 if ( bl1_is_vector( m, n ) )
164 {
165 // Initialize with values appropriate for vectors.
166 n_iter = 1;
167 n_elem = bl1_vector_dim( m, n );
168 lda = 1; // multiplied by zero when n_iter == 1; not needed.
169 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
170 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
172 }
173 else // matrix case
174 {
175 // Initialize with optimal values for column-major storage.
176 n_iter = n;
177 n_elem = m;
178 lda = a_cs;
179 inca = a_rs;
180 ldb = b_cs;
181 incb = b_rs;
182
183 // Handle the transposition of A.
184 if ( bl1_does_trans( trans ) )
185 {
187 }
188
189 // An optimization: if B is row-major and if A is effectively row-major
190 // after a possible transposition, then let's access the matrix by rows
191 // instead of by columns for increased spatial locality.
192 if ( bl1_is_row_storage( b_rs, b_cs ) )
193 {
194 if ( ( bl1_is_col_storage( a_rs, a_cs ) && bl1_does_trans( trans ) ) ||
196 {
200 }
201 }
202 }
203
204 for ( j = 0; j < n_iter; j++ )
205 {
206 a_begin = a + j*lda;
207 b_begin = b + j*ldb;
208
210 a_begin, inca,
211 b_begin, incb );
212 }
213}
void bl1_dcopy(int m, double *x, int incx, double *y, int incy)
Definition bl1_copy.c:26

References bl1_dcopy(), bl1_does_notrans(), bl1_does_trans(), bl1_is_col_storage(), bl1_is_row_storage(), bl1_is_vector(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by bl1_dcreate_contigm(), bl1_dcreate_contigmt(), bl1_dfree_saved_contigm(), bl1_dfree_saved_contigmsr(), bl1_dsymm(), bl1_dsyr2k(), bl1_dtrmmsx(), bl1_dtrsmsx(), FLA_Bsvd_v_opd_var2(), FLA_Copy_external(), FLA_Copyt_external(), and FLA_Tevd_v_opd_var2().

◆ bl1_ddcopymt()

void bl1_ddcopymt ( trans1_t  trans,
int  m,
int  n,
double a,
int  a_rs,
int  a_cs,
double b,
int  b_rs,
int  b_cs 
)
831{
832 double* a_begin;
833 double* b_begin;
834 int lda, inca;
835 int ldb, incb;
836 int n_iter;
837 int n_elem;
838 int j;
840
841 // Return early if possible.
842 if ( bl1_zero_dim2( m, n ) ) return;
843
844 // Handle cases where A and B are vectors to ensure that the underlying copy
845 // gets invoked only once.
846 if ( bl1_is_vector( m, n ) )
847 {
848 // Initialize with values appropriate for vectors.
849 n_iter = 1;
850 n_elem = bl1_vector_dim( m, n );
851 lda = 1; // multiplied by zero when n_iter == 1; not needed.
852 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
853 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
855 }
856 else // matrix case
857 {
858 // Initialize with optimal values for column-major storage of B.
859 n_iter = n;
860 n_elem = m;
861 lda = a_cs;
862 inca = a_rs;
863 ldb = b_cs;
864 incb = b_rs;
865
866 // Handle the transposition of A.
867 if ( bl1_does_trans( trans ) )
868 {
870 }
871
872 // An optimization: if B is row-major, then let's access the matrix by rows
873 // instead of by columns for increased spatial locality.
874 if ( bl1_is_row_storage( b_rs, b_cs ) )
875 {
879 }
880 }
881
882 // Extract conj component from trans parameter.
884
885 for ( j = 0; j < n_iter; ++j )
886 {
887 a_begin = a + j*lda;
888 b_begin = b + j*ldb;
889
891 n_elem,
892 a_begin, inca,
893 b_begin, incb );
894 }
895}
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42

References bl1_dcopyv(), bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

◆ bl1_dscopymt()

void bl1_dscopymt ( trans1_t  trans,
int  m,
int  n,
double a,
int  a_rs,
int  a_cs,
float b,
int  b_rs,
int  b_cs 
)
495{
496 double* a_begin;
497 float* b_begin;
498 int lda, inca;
499 int ldb, incb;
500 int n_iter;
501 int n_elem;
502 int j;
504
505 // Return early if possible.
506 if ( bl1_zero_dim2( m, n ) ) return;
507
508 // Handle cases where A and B are vectors to ensure that the underlying copy
509 // gets invoked only once.
510 if ( bl1_is_vector( m, n ) )
511 {
512 // Initialize with values appropriate for vectors.
513 n_iter = 1;
514 n_elem = bl1_vector_dim( m, n );
515 lda = 1; // multiplied by zero when n_iter == 1; not needed.
516 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
517 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
519 }
520 else // matrix case
521 {
522 // Initialize with optimal values for column-major storage of B.
523 n_iter = n;
524 n_elem = m;
525 lda = a_cs;
526 inca = a_rs;
527 ldb = b_cs;
528 incb = b_rs;
529
530 // Handle the transposition of A.
531 if ( bl1_does_trans( trans ) )
532 {
534 }
535
536 // An optimization: if B is row-major, then let's access the matrix by rows
537 // instead of by columns for increased spatial locality.
538 if ( bl1_is_row_storage( b_rs, b_cs ) )
539 {
543 }
544 }
545
546 // Extract conj component from trans parameter.
548
549 for ( j = 0; j < n_iter; ++j )
550 {
551 a_begin = a + j*lda;
552 b_begin = b + j*ldb;
553
555 n_elem,
556 a_begin, inca,
557 b_begin, incb );
558 }
559}
void bl1_dscopyv(conj1_t conj, int m, double *x, int incx, float *y, int incy)
Definition bl1_copyv.c:101

References bl1_does_trans(), bl1_dscopyv(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_dzcopymt()

void bl1_dzcopymt ( trans1_t  trans,
int  m,
int  n,
double a,
int  a_rs,
int  a_cs,
dcomplex b,
int  b_rs,
int  b_cs 
)
1033{
1034 double* a_begin;
1036 int lda, inca;
1037 int ldb, incb;
1038 int n_iter;
1039 int n_elem;
1040 int j;
1041 conj1_t conj;
1042
1043 // Return early if possible.
1044 if ( bl1_zero_dim2( m, n ) ) return;
1045
1046 // Handle cases where A and B are vectors to ensure that the underlying copy
1047 // gets invoked only once.
1048 if ( bl1_is_vector( m, n ) )
1049 {
1050 // Initialize with values appropriate for vectors.
1051 n_iter = 1;
1052 n_elem = bl1_vector_dim( m, n );
1053 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1054 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1055 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1057 }
1058 else // matrix case
1059 {
1060 // Initialize with optimal values for column-major storage of B.
1061 n_iter = n;
1062 n_elem = m;
1063 lda = a_cs;
1064 inca = a_rs;
1065 ldb = b_cs;
1066 incb = b_rs;
1067
1068 // Handle the transposition of A.
1069 if ( bl1_does_trans( trans ) )
1070 {
1072 }
1073
1074 // An optimization: if B is row-major, then let's access the matrix by rows
1075 // instead of by columns for increased spatial locality.
1076 if ( bl1_is_row_storage( b_rs, b_cs ) )
1077 {
1081 }
1082 }
1083
1084 // Extract conj component from trans parameter.
1086
1087 for ( j = 0; j < n_iter; ++j )
1088 {
1089 a_begin = a + j*lda;
1090 b_begin = b + j*ldb;
1091
1093 n_elem,
1094 a_begin, inca,
1095 b_begin, incb );
1096 }
1097}
void bl1_dzcopyv(conj1_t conj, int m, double *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:259

References bl1_does_trans(), bl1_dzcopyv(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_icopymt()

void bl1_icopymt ( trans1_t  trans,
int  m,
int  n,
int a,
int  a_rs,
int  a_cs,
int b,
int  b_rs,
int  b_cs 
)
14{
15 int* a_begin;
16 int* b_begin;
17 int lda, inca;
18 int ldb, incb;
19 int n_iter;
20 int n_elem;
21 int j;
22
23 // Return early if possible.
24 if ( bl1_zero_dim2( m, n ) ) return;
25
26 // Handle cases where A and B are vectors to ensure that the underlying copy
27 // gets invoked only once.
28 if ( bl1_is_vector( m, n ) )
29 {
30 // Initialize with values appropriate for vectors.
31 n_iter = 1;
32 n_elem = bl1_vector_dim( m, n );
33 lda = 1; // multiplied by zero when n_iter == 1; not needed.
34 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
35 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
37 }
38 else // matrix case
39 {
40 // Initialize with optimal values for column-major storage.
41 n_iter = n;
42 n_elem = m;
43 lda = a_cs;
44 inca = a_rs;
45 ldb = b_cs;
46 incb = b_rs;
47
48 // Handle the transposition of A.
49 if ( bl1_does_trans( trans ) )
50 {
52 }
53
54 // An optimization: if B is row-major and if A is effectively row-major
55 // after a possible transposition, then let's access the matrix by rows
56 // instead of by columns for increased spatial locality.
58 {
59 if ( ( bl1_is_col_storage( a_rs, a_cs ) && bl1_does_trans( trans ) ) ||
61 {
65 }
66 }
67 }
68
69 for ( j = 0; j < n_iter; j++ )
70 {
71 a_begin = a + j*lda;
72 b_begin = b + j*ldb;
73
75 n_elem,
76 a_begin, inca,
77 b_begin, incb );
78 }
79}
void bl1_icopyv(conj1_t conj, int m, int *x, int incx, int *y, int incy)
Definition bl1_copyv.c:13

References bl1_does_notrans(), bl1_does_trans(), bl1_icopyv(), bl1_is_col_storage(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_sccopymt()

void bl1_sccopymt ( trans1_t  trans,
int  m,
int  n,
float a,
int  a_rs,
int  a_cs,
scomplex b,
int  b_rs,
int  b_cs 
)
563{
564 float* a_begin;
566 int lda, inca;
567 int ldb, incb;
568 int n_iter;
569 int n_elem;
570 int j;
572
573 // Return early if possible.
574 if ( bl1_zero_dim2( m, n ) ) return;
575
576 // Handle cases where A and B are vectors to ensure that the underlying copy
577 // gets invoked only once.
578 if ( bl1_is_vector( m, n ) )
579 {
580 // Initialize with values appropriate for vectors.
581 n_iter = 1;
582 n_elem = bl1_vector_dim( m, n );
583 lda = 1; // multiplied by zero when n_iter == 1; not needed.
584 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
585 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
587 }
588 else // matrix case
589 {
590 // Initialize with optimal values for column-major storage of B.
591 n_iter = n;
592 n_elem = m;
593 lda = a_cs;
594 inca = a_rs;
595 ldb = b_cs;
596 incb = b_rs;
597
598 // Handle the transposition of A.
599 if ( bl1_does_trans( trans ) )
600 {
602 }
603
604 // An optimization: if B is row-major, then let's access the matrix by rows
605 // instead of by columns for increased spatial locality.
606 if ( bl1_is_row_storage( b_rs, b_cs ) )
607 {
611 }
612 }
613
614 // Extract conj component from trans parameter.
616
617 for ( j = 0; j < n_iter; ++j )
618 {
619 a_begin = a + j*lda;
620 b_begin = b + j*ldb;
621
623 n_elem,
624 a_begin, inca,
625 b_begin, incb );
626 }
627}
void bl1_sccopyv(conj1_t conj, int m, float *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:124

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_sccopyv(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_scopymt()

void bl1_scopymt ( trans1_t  trans,
int  m,
int  n,
float a,
int  a_rs,
int  a_cs,
float b,
int  b_rs,
int  b_cs 
)
82{
83 float* a_begin;
84 float* b_begin;
85 int lda, inca;
86 int ldb, incb;
87 int n_iter;
88 int n_elem;
89 int j;
90
91 // Return early if possible.
92 if ( bl1_zero_dim2( m, n ) ) return;
93
94 // Handle cases where A and B are vectors to ensure that the underlying copy
95 // gets invoked only once.
96 if ( bl1_is_vector( m, n ) )
97 {
98 // Initialize with values appropriate for vectors.
99 n_iter = 1;
100 n_elem = bl1_vector_dim( m, n );
101 lda = 1; // multiplied by zero when n_iter == 1; not needed.
102 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
103 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
105 }
106 else // matrix case
107 {
108 // Initialize with optimal values for column-major storage.
109 n_iter = n;
110 n_elem = m;
111 lda = a_cs;
112 inca = a_rs;
113 ldb = b_cs;
114 incb = b_rs;
115
116 // Handle the transposition of A.
117 if ( bl1_does_trans( trans ) )
118 {
120 }
121
122 // An optimization: if B is row-major and if A is effectively row-major
123 // after a possible transposition, then let's access the matrix by rows
124 // instead of by columns for increased spatial locality.
125 if ( bl1_is_row_storage( b_rs, b_cs ) )
126 {
127 if ( ( bl1_is_col_storage( a_rs, a_cs ) && bl1_does_trans( trans ) ) ||
129 {
133 }
134 }
135 }
136
137 for ( j = 0; j < n_iter; j++ )
138 {
139 a_begin = a + j*lda;
140 b_begin = b + j*ldb;
141
143 a_begin, inca,
144 b_begin, incb );
145 }
146}
void bl1_scopy(int m, float *x, int incx, float *y, int incy)
Definition bl1_copy.c:13

References bl1_does_notrans(), bl1_does_trans(), bl1_is_col_storage(), bl1_is_row_storage(), bl1_is_vector(), bl1_scopy(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by bl1_screate_contigm(), bl1_screate_contigmt(), bl1_sfree_saved_contigm(), bl1_sfree_saved_contigmsr(), bl1_ssymm(), bl1_ssyr2k(), bl1_strmmsx(), bl1_strsmsx(), FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_sdcopymt()

void bl1_sdcopymt ( trans1_t  trans,
int  m,
int  n,
float a,
int  a_rs,
int  a_cs,
double b,
int  b_rs,
int  b_cs 
)
429{
430 float* a_begin;
431 double* b_begin;
432 int lda, inca;
433 int ldb, incb;
434 int n_iter;
435 int n_elem;
436 int j;
438
439 // Return early if possible.
440 if ( bl1_zero_dim2( m, n ) ) return;
441
442 // Handle cases where A and B are vectors to ensure that the underlying copy
443 // gets invoked only once.
444 if ( bl1_is_vector( m, n ) )
445 {
446 // Initialize with values appropriate for vectors.
447 n_iter = 1;
448 n_elem = bl1_vector_dim( m, n );
449 lda = 1; // multiplied by zero when n_iter == 1; not needed.
450 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
451 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
453 }
454 else // matrix case
455 {
456 // Initialize with optimal values for column-major storage of B.
457 n_iter = n;
458 n_elem = m;
459 lda = a_cs;
460 inca = a_rs;
461 ldb = b_cs;
462 incb = b_rs;
463
464 // Handle the transposition of A.
465 if ( bl1_does_trans( trans ) )
466 {
468 }
469
470 // An optimization: if B is row-major, then let's access the matrix by rows
471 // instead of by columns for increased spatial locality.
472 if ( bl1_is_row_storage( b_rs, b_cs ) )
473 {
477 }
478 }
479
480 // Extract conj component from trans parameter.
482
483 for ( j = 0; j < n_iter; ++j )
484 {
485 a_begin = a + j*lda;
486 b_begin = b + j*ldb;
487
489 n_elem,
490 a_begin, inca,
491 b_begin, incb );
492 }
493}
void bl1_sdcopyv(conj1_t conj, int m, float *x, int incx, double *y, int incy)
Definition bl1_copyv.c:80

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_sdcopyv(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_sscopymt()

void bl1_sscopymt ( trans1_t  trans,
int  m,
int  n,
float a,
int  a_rs,
int  a_cs,
float b,
int  b_rs,
int  b_cs 
)
361{
362 float* a_begin;
363 float* b_begin;
364 int lda, inca;
365 int ldb, incb;
366 int n_iter;
367 int n_elem;
368 int j;
370
371 // Return early if possible.
372 if ( bl1_zero_dim2( m, n ) ) return;
373
374 // Handle cases where A and B are vectors to ensure that the underlying copy
375 // gets invoked only once.
376 if ( bl1_is_vector( m, n ) )
377 {
378 // Initialize with values appropriate for vectors.
379 n_iter = 1;
380 n_elem = bl1_vector_dim( m, n );
381 lda = 1; // multiplied by zero when n_iter == 1; not needed.
382 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
383 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
385 }
386 else // matrix case
387 {
388 // Initialize with optimal values for column-major storage of B.
389 n_iter = n;
390 n_elem = m;
391 lda = a_cs;
392 inca = a_rs;
393 ldb = b_cs;
394 incb = b_rs;
395
396 // Handle the transposition of A.
397 if ( bl1_does_trans( trans ) )
398 {
400 }
401
402 // An optimization: if B is row-major, then let's access the matrix by rows
403 // instead of by columns for increased spatial locality.
404 if ( bl1_is_row_storage( b_rs, b_cs ) )
405 {
409 }
410 }
411
412 // Extract conj component from trans parameter.
414
415 for ( j = 0; j < n_iter; ++j )
416 {
417 a_begin = a + j*lda;
418 b_begin = b + j*ldb;
419
421 n_elem,
422 a_begin, inca,
423 b_begin, incb );
424 }
425}
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition bl1_copyv.c:35

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_scopyv(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

◆ bl1_szcopymt()

void bl1_szcopymt ( trans1_t  trans,
int  m,
int  n,
float a,
int  a_rs,
int  a_cs,
dcomplex b,
int  b_rs,
int  b_cs 
)
697{
698 float* a_begin;
700 int lda, inca;
701 int ldb, incb;
702 int n_iter;
703 int n_elem;
704 int j;
706
707 // Return early if possible.
708 if ( bl1_zero_dim2( m, n ) ) return;
709
710 // Handle cases where A and B are vectors to ensure that the underlying copy
711 // gets invoked only once.
712 if ( bl1_is_vector( m, n ) )
713 {
714 // Initialize with values appropriate for vectors.
715 n_iter = 1;
716 n_elem = bl1_vector_dim( m, n );
717 lda = 1; // multiplied by zero when n_iter == 1; not needed.
718 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
719 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
721 }
722 else // matrix case
723 {
724 // Initialize with optimal values for column-major storage of B.
725 n_iter = n;
726 n_elem = m;
727 lda = a_cs;
728 inca = a_rs;
729 ldb = b_cs;
730 incb = b_rs;
731
732 // Handle the transposition of A.
733 if ( bl1_does_trans( trans ) )
734 {
736 }
737
738 // An optimization: if B is row-major, then let's access the matrix by rows
739 // instead of by columns for increased spatial locality.
740 if ( bl1_is_row_storage( b_rs, b_cs ) )
741 {
745 }
746 }
747
748 // Extract conj component from trans parameter.
750
751 for ( j = 0; j < n_iter; ++j )
752 {
753 a_begin = a + j*lda;
754 b_begin = b + j*ldb;
755
757 n_elem,
758 a_begin, inca,
759 b_begin, incb );
760 }
761}
void bl1_szcopyv(conj1_t conj, int m, float *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:169

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_szcopyv(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_zccopymt()

void bl1_zccopymt ( trans1_t  trans,
int  m,
int  n,
dcomplex a,
int  a_rs,
int  a_cs,
scomplex b,
int  b_rs,
int  b_cs 
)
1301{
1304 int lda, inca;
1305 int ldb, incb;
1306 int n_iter;
1307 int n_elem;
1308 int j;
1309 conj1_t conj;
1310
1311 // Return early if possible.
1312 if ( bl1_zero_dim2( m, n ) ) return;
1313
1314 // Handle cases where A and B are vectors to ensure that the underlying copy
1315 // gets invoked only once.
1316 if ( bl1_is_vector( m, n ) )
1317 {
1318 // Initialize with values appropriate for vectors.
1319 n_iter = 1;
1320 n_elem = bl1_vector_dim( m, n );
1321 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1322 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1323 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1325 }
1326 else // matrix case
1327 {
1328 // Initialize with optimal values for column-major storage of B.
1329 n_iter = n;
1330 n_elem = m;
1331 lda = a_cs;
1332 inca = a_rs;
1333 ldb = b_cs;
1334 incb = b_rs;
1335
1336 // Handle the transposition of A.
1337 if ( bl1_does_trans( trans ) )
1338 {
1340 }
1341
1342 // An optimization: if B is row-major, then let's access the matrix by rows
1343 // instead of by columns for increased spatial locality.
1344 if ( bl1_is_row_storage( b_rs, b_cs ) )
1345 {
1349 }
1350 }
1351
1352 // Extract conj component from trans parameter.
1354
1355 for ( j = 0; j < n_iter; ++j )
1356 {
1357 a_begin = a + j*lda;
1358 b_begin = b + j*ldb;
1359
1361 n_elem,
1362 a_begin, inca,
1363 b_begin, incb );
1364 }
1365}
void bl1_zccopyv(conj1_t conj, int m, dcomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:330

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zccopyv(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_zcopymt()

void bl1_zcopymt ( trans1_t  trans,
int  m,
int  n,
dcomplex a,
int  a_rs,
int  a_cs,
dcomplex b,
int  b_rs,
int  b_cs 
)
287{
290 int lda, inca;
291 int ldb, incb;
292 int n_iter;
293 int n_elem;
294 int j;
295
296 // Return early if possible.
297 if ( bl1_zero_dim2( m, n ) ) return;
298
299 // Handle cases where A and B are vectors to ensure that the underlying copy
300 // gets invoked only once.
301 if ( bl1_is_vector( m, n ) )
302 {
303 // Initialize with values appropriate for vectors.
304 n_iter = 1;
305 n_elem = bl1_vector_dim( m, n );
306 lda = 1; // multiplied by zero when n_iter == 1; not needed.
307 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
308 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
310 }
311 else // matrix case
312 {
313 // Initialize with optimal values for column-major storage.
314 n_iter = n;
315 n_elem = m;
316 lda = a_cs;
317 inca = a_rs;
318 ldb = b_cs;
319 incb = b_rs;
320
321 // Handle the transposition of A.
322 if ( bl1_does_trans( trans ) )
323 {
325 }
326
327 // An optimization: if B is row-major and if A is effectively row-major
328 // after a possible transposition, then let's access the matrix by rows
329 // instead of by columns for increased spatial locality.
330 if ( bl1_is_row_storage( b_rs, b_cs ) )
331 {
332 if ( ( bl1_is_col_storage( a_rs, a_cs ) && bl1_does_trans( trans ) ) ||
334 {
338 }
339 }
340 }
341
342 for ( j = 0; j < n_iter; j++ )
343 {
344 a_begin = a + j*lda;
345 b_begin = b + j*ldb;
346
348 a_begin, inca,
349 b_begin, incb );
350
351 if ( bl1_does_conj( trans ) )
353 b_begin, incb );
354 }
355}
void bl1_zconjv(int m, dcomplex *x, int incx)
Definition bl1_conjv.c:34
void bl1_zcopy(int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copy.c:52

References bl1_does_conj(), bl1_does_notrans(), bl1_does_trans(), bl1_is_col_storage(), bl1_is_row_storage(), bl1_is_vector(), bl1_vector_dim(), bl1_vector_inc(), bl1_zconjv(), bl1_zcopy(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by bl1_zcreate_contigm(), bl1_zcreate_contigmt(), bl1_zfree_saved_contigm(), bl1_zgemm(), bl1_zhemm(), bl1_zher2k(), bl1_zsymm(), bl1_zsyr2k(), bl1_ztrmmsx(), bl1_ztrsmsx(), FLA_Bsvd_v_opz_var2(), FLA_Copy_external(), FLA_Copyt_external(), and FLA_Tevd_v_opz_var2().

◆ bl1_zdcopymt()

void bl1_zdcopymt ( trans1_t  trans,
int  m,
int  n,
dcomplex a,
int  a_rs,
int  a_cs,
double b,
int  b_rs,
int  b_cs 
)
1099{
1101 double* b_begin;
1102 int lda, inca;
1103 int ldb, incb;
1104 int n_iter;
1105 int n_elem;
1106 int j;
1107 conj1_t conj;
1108
1109 // Return early if possible.
1110 if ( bl1_zero_dim2( m, n ) ) return;
1111
1112 // Handle cases where A and B are vectors to ensure that the underlying copy
1113 // gets invoked only once.
1114 if ( bl1_is_vector( m, n ) )
1115 {
1116 // Initialize with values appropriate for vectors.
1117 n_iter = 1;
1118 n_elem = bl1_vector_dim( m, n );
1119 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1120 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1121 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1123 }
1124 else // matrix case
1125 {
1126 // Initialize with optimal values for column-major storage of B.
1127 n_iter = n;
1128 n_elem = m;
1129 lda = a_cs;
1130 inca = a_rs;
1131 ldb = b_cs;
1132 incb = b_rs;
1133
1134 // Handle the transposition of A.
1135 if ( bl1_does_trans( trans ) )
1136 {
1138 }
1139
1140 // An optimization: if B is row-major, then let's access the matrix by rows
1141 // instead of by columns for increased spatial locality.
1142 if ( bl1_is_row_storage( b_rs, b_cs ) )
1143 {
1147 }
1148 }
1149
1150 // Extract conj component from trans parameter.
1152
1153 for ( j = 0; j < n_iter; ++j )
1154 {
1155 a_begin = a + j*lda;
1156 b_begin = b + j*ldb;
1157
1159 n_elem,
1160 a_begin, inca,
1161 b_begin, incb );
1162 }
1163}
void bl1_zdcopyv(conj1_t conj, int m, dcomplex *x, int incx, double *y, int incy)
Definition bl1_copyv.c:281

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zdcopyv(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_zscopymt()

void bl1_zscopymt ( trans1_t  trans,
int  m,
int  n,
dcomplex a,
int  a_rs,
int  a_cs,
float b,
int  b_rs,
int  b_cs 
)
763{
765 float* b_begin;
766 int lda, inca;
767 int ldb, incb;
768 int n_iter;
769 int n_elem;
770 int j;
772
773 // Return early if possible.
774 if ( bl1_zero_dim2( m, n ) ) return;
775
776 // Handle cases where A and B are vectors to ensure that the underlying copy
777 // gets invoked only once.
778 if ( bl1_is_vector( m, n ) )
779 {
780 // Initialize with values appropriate for vectors.
781 n_iter = 1;
782 n_elem = bl1_vector_dim( m, n );
783 lda = 1; // multiplied by zero when n_iter == 1; not needed.
784 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
785 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
787 }
788 else // matrix case
789 {
790 // Initialize with optimal values for column-major storage of B.
791 n_iter = n;
792 n_elem = m;
793 lda = a_cs;
794 inca = a_rs;
795 ldb = b_cs;
796 incb = b_rs;
797
798 // Handle the transposition of A.
799 if ( bl1_does_trans( trans ) )
800 {
802 }
803
804 // An optimization: if B is row-major, then let's access the matrix by rows
805 // instead of by columns for increased spatial locality.
806 if ( bl1_is_row_storage( b_rs, b_cs ) )
807 {
811 }
812 }
813
814 // Extract conj component from trans parameter.
816
817 for ( j = 0; j < n_iter; ++j )
818 {
819 a_begin = a + j*lda;
820 b_begin = b + j*ldb;
821
823 n_elem,
824 a_begin, inca,
825 b_begin, incb );
826 }
827}
void bl1_zscopyv(conj1_t conj, int m, dcomplex *x, int incx, float *y, int incy)
Definition bl1_copyv.c:191

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zero_dim2(), bl1_zscopyv(), and BLIS1_NO_TRANSPOSE.

Referenced by FLA_Copy_external(), and FLA_Copyt_external().

◆ bl1_zzcopymt()

void bl1_zzcopymt ( trans1_t  trans,
int  m,
int  n,
dcomplex a,
int  a_rs,
int  a_cs,
dcomplex b,
int  b_rs,
int  b_cs 
)
1369{
1372 int lda, inca;
1373 int ldb, incb;
1374 int n_iter;
1375 int n_elem;
1376 int j;
1377 conj1_t conj;
1378
1379 // Return early if possible.
1380 if ( bl1_zero_dim2( m, n ) ) return;
1381
1382 // Handle cases where A and B are vectors to ensure that the underlying copy
1383 // gets invoked only once.
1384 if ( bl1_is_vector( m, n ) )
1385 {
1386 // Initialize with values appropriate for vectors.
1387 n_iter = 1;
1388 n_elem = bl1_vector_dim( m, n );
1389 lda = 1; // multiplied by zero when n_iter == 1; not needed.
1390 inca = bl1_vector_inc( trans, m, n, a_rs, a_cs );
1391 ldb = 1; // multiplied by zero when n_iter == 1; not needed.
1393 }
1394 else // matrix case
1395 {
1396 // Initialize with optimal values for column-major storage of B.
1397 n_iter = n;
1398 n_elem = m;
1399 lda = a_cs;
1400 inca = a_rs;
1401 ldb = b_cs;
1402 incb = b_rs;
1403
1404 // Handle the transposition of A.
1405 if ( bl1_does_trans( trans ) )
1406 {
1408 }
1409
1410 // An optimization: if B is row-major, then let's access the matrix by rows
1411 // instead of by columns for increased spatial locality.
1412 if ( bl1_is_row_storage( b_rs, b_cs ) )
1413 {
1417 }
1418 }
1419
1420 // Extract conj component from trans parameter.
1422
1423 for ( j = 0; j < n_iter; ++j )
1424 {
1425 a_begin = a + j*lda;
1426 b_begin = b + j*ldb;
1427
1429 n_elem,
1430 a_begin, inca,
1431 b_begin, incb );
1432 }
1433}
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63

References bl1_does_trans(), bl1_is_row_storage(), bl1_is_vector(), bl1_proj_trans1_to_conj(), bl1_vector_dim(), bl1_vector_inc(), bl1_zcopyv(), bl1_zero_dim2(), and BLIS1_NO_TRANSPOSE.