mirror of
https://github.com/amd/blis.git
synced 2026-04-20 07:38:53 +00:00
Fixed various bugs when C99 complex is enabled.
Details: - Fixed various bugs in packm_*_cxk(), the 4m/3m micro-kernels, and elsewhere in the framework that were not yet set up to work properly when BLIS_ENABLE_C99_COMPLEX is defined in bli_config.h - Extensive changes to f2c-derived files in frame/compat/f2c to allow C99 complex storage. Most of these changes center around accessing real and imaginary components via bli_?real()/bli_?imag() accessor macros, and setting of values via bli_?sets() assignment macros. (Thanks to Vladimir Sukarev for pointing out that _ENABLE_C99_COMPLEX was broken.)
This commit is contained in:
@@ -41,6 +41,8 @@
|
||||
// - The first char encodes the type of x.
|
||||
// - The second char encodes the type of a.
|
||||
|
||||
#ifndef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_ssabval2s( x, a ) bli_sabval2ris( bli_sreal(x), bli_simag(x), bli_sreal(a), bli_simag(a) )
|
||||
#define bli_dsabval2s( x, a ) bli_sabval2ris( bli_dreal(x), bli_dimag(x), bli_sreal(a), bli_simag(a) )
|
||||
#define bli_csabval2s( x, a ) bli_sabval2ris( bli_creal(x), bli_cimag(x), bli_sreal(a), bli_simag(a) )
|
||||
@@ -51,8 +53,6 @@
|
||||
#define bli_cdabval2s( x, a ) bli_dabval2ris( bli_creal(x), bli_cimag(x), bli_dreal(a), bli_dimag(a) )
|
||||
#define bli_zdabval2s( x, a ) bli_dabval2ris( bli_zreal(x), bli_zimag(x), bli_dreal(a), bli_dimag(a) )
|
||||
|
||||
#ifndef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_scabval2s( x, a ) bli_cabval2ris( bli_sreal(x), bli_simag(x), bli_creal(a), bli_cimag(a) )
|
||||
#define bli_dcabval2s( x, a ) bli_cabval2ris( bli_dreal(x), bli_dimag(x), bli_creal(a), bli_cimag(a) )
|
||||
#define bli_ccabval2s( x, a ) bli_cabval2ris( bli_creal(x), bli_cimag(x), bli_creal(a), bli_cimag(a) )
|
||||
|
||||
@@ -41,51 +41,51 @@
|
||||
// - The first char encodes the type of x.
|
||||
// - The second char encodes the type of y.
|
||||
|
||||
#define bli_sscopycjs( conj, x, y ) bli_scopycjris( conj, bli_sreal(x), bli_simag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_dscopycjs( conj, x, y ) bli_scopycjris( conj, bli_dreal(x), bli_dimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_cscopycjs( conj, x, y ) bli_scopycjris( conj, bli_creal(x), bli_cimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_zscopycjs( conj, x, y ) bli_scopycjris( conj, bli_zreal(x), bli_zimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_sscopycjs( conjx, x, y ) bli_scopycjris( conjx, bli_sreal(x), bli_simag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_dscopycjs( conjx, x, y ) bli_scopycjris( conjx, bli_dreal(x), bli_dimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_cscopycjs( conjx, x, y ) bli_scopycjris( conjx, bli_creal(x), bli_cimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_zscopycjs( conjx, x, y ) bli_scopycjris( conjx, bli_zreal(x), bli_zimag(x), bli_sreal(y), bli_simag(y) )
|
||||
|
||||
#define bli_sdcopycjs( conj, x, y ) bli_dcopycjris( conj, bli_sreal(x), bli_simag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_ddcopycjs( conj, x, y ) bli_dcopycjris( conj, bli_dreal(x), bli_dimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_cdcopycjs( conj, x, y ) bli_dcopycjris( conj, bli_creal(x), bli_cimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_zdcopycjs( conj, x, y ) bli_dcopycjris( conj, bli_zreal(x), bli_zimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_sdcopycjs( conjx, x, y ) bli_dcopycjris( conjx, bli_sreal(x), bli_simag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_ddcopycjs( conjx, x, y ) bli_dcopycjris( conjx, bli_dreal(x), bli_dimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_cdcopycjs( conjx, x, y ) bli_dcopycjris( conjx, bli_creal(x), bli_cimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_zdcopycjs( conjx, x, y ) bli_dcopycjris( conjx, bli_zreal(x), bli_zimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
|
||||
#ifndef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_sccopycjs( conj, x, y ) bli_ccopycjris( conj, bli_sreal(x), bli_simag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_dccopycjs( conj, x, y ) bli_ccopycjris( conj, bli_dreal(x), bli_dimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_cccopycjs( conj, x, y ) bli_ccopycjris( conj, bli_creal(x), bli_cimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_zccopycjs( conj, x, y ) bli_ccopycjris( conj, bli_zreal(x), bli_zimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_sccopycjs( conjx, x, y ) bli_ccopycjris( conjx, bli_sreal(x), bli_simag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_dccopycjs( conjx, x, y ) bli_ccopycjris( conjx, bli_dreal(x), bli_dimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_cccopycjs( conjx, x, y ) bli_ccopycjris( conjx, bli_creal(x), bli_cimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_zccopycjs( conjx, x, y ) bli_ccopycjris( conjx, bli_zreal(x), bli_zimag(x), bli_creal(y), bli_cimag(y) )
|
||||
|
||||
#define bli_szcopycjs( conj, x, y ) bli_zcopycjris( conj, bli_sreal(x), bli_simag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_dzcopycjs( conj, x, y ) bli_zcopycjris( conj, bli_dreal(x), bli_dimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_czcopycjs( conj, x, y ) bli_zcopycjris( conj, bli_creal(x), bli_cimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_zzcopycjs( conj, x, y ) bli_zcopycjris( conj, bli_zreal(x), bli_zimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_szcopycjs( conjx, x, y ) bli_zcopycjris( conjx, bli_sreal(x), bli_simag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_dzcopycjs( conjx, x, y ) bli_zcopycjris( conjx, bli_dreal(x), bli_dimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_czcopycjs( conjx, x, y ) bli_zcopycjris( conjx, bli_creal(x), bli_cimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_zzcopycjs( conjx, x, y ) bli_zcopycjris( conjx, bli_zreal(x), bli_zimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
|
||||
#else // ifdef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_sccopycjs( conj, x, y ) { (y) = (x); }
|
||||
#define bli_dccopycjs( conj, x, y ) { (y) = (x); }
|
||||
#define bli_cccopycjs( conj, x, y ) { (y) = ( bli_is_conj( conj ) ? conjf(x) : (x) ); }
|
||||
#define bli_zccopycjs( conj, x, y ) { (y) = ( bli_is_conj( conj ) ? conj (x) : (x) ); }
|
||||
#define bli_sccopycjs( conjx, x, y ) { (y) = (x); }
|
||||
#define bli_dccopycjs( conjx, x, y ) { (y) = (x); }
|
||||
#define bli_cccopycjs( conjx, x, y ) { (y) = ( bli_is_conj( conjx ) ? conjf(x) : (x) ); }
|
||||
#define bli_zccopycjs( conjx, x, y ) { (y) = ( bli_is_conj( conjx ) ? conj (x) : (x) ); }
|
||||
|
||||
#define bli_szcopycjs( conj, x, y ) { (y) = (x); }
|
||||
#define bli_dzcopycjs( conj, x, y ) { (y) = (x); }
|
||||
#define bli_czcopycjs( conj, x, y ) { (y) = ( bli_is_conj( conj ) ? conjf(x) : (x) ); }
|
||||
#define bli_zzcopycjs( conj, x, y ) { (y) = ( bli_is_conj( conj ) ? conj (x) : (x) ); }
|
||||
#define bli_szcopycjs( conjx, x, y ) { (y) = (x); }
|
||||
#define bli_dzcopycjs( conjx, x, y ) { (y) = (x); }
|
||||
#define bli_czcopycjs( conjx, x, y ) { (y) = ( bli_is_conj( conjx ) ? conjf(x) : (x) ); }
|
||||
#define bli_zzcopycjs( conjx, x, y ) { (y) = ( bli_is_conj( conjx ) ? conj (x) : (x) ); }
|
||||
|
||||
#endif // BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
|
||||
#define bli_iicopycjs( conj, x, y ) { (y) = ( gint_t ) (x); }
|
||||
#define bli_iicopycjs( conjx, x, y ) { (y) = ( gint_t ) (x); }
|
||||
|
||||
|
||||
#define bli_scopycjs( conj, x, y ) bli_sscopycjs( conj, x, y )
|
||||
#define bli_dcopycjs( conj, x, y ) bli_ddcopycjs( conj, x, y )
|
||||
#define bli_ccopycjs( conj, x, y ) bli_cccopycjs( conj, x, y )
|
||||
#define bli_zcopycjs( conj, x, y ) bli_zzcopycjs( conj, x, y )
|
||||
#define bli_icopycjs( conj, x, y ) bli_iicopycjs( conj, x, y )
|
||||
#define bli_scopycjs( conjx, x, y ) bli_sscopycjs( conjx, x, y )
|
||||
#define bli_dcopycjs( conjx, x, y ) bli_ddcopycjs( conjx, x, y )
|
||||
#define bli_ccopycjs( conjx, x, y ) bli_cccopycjs( conjx, x, y )
|
||||
#define bli_zcopycjs( conjx, x, y ) bli_zzcopycjs( conjx, x, y )
|
||||
#define bli_icopycjs( conjx, x, y ) bli_iicopycjs( conjx, x, y )
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,47 +41,47 @@
|
||||
// - The first char encodes the type of x.
|
||||
// - The second char encodes the type of y.
|
||||
|
||||
#define bli_ssscalcjs( conj, x, y ) bli_sscalcjris( conj, bli_sreal(x), bli_simag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_dsscalcjs( conj, x, y ) bli_sscalcjris( conj, bli_dreal(x), bli_dimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_csscalcjs( conj, x, y ) bli_sscalcjris( conj, bli_creal(x), bli_cimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_zsscalcjs( conj, x, y ) bli_sscalcjris( conj, bli_zreal(x), bli_zimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_ssscalcjs( conjx, x, y ) bli_sscalcjris( conjx, bli_sreal(x), bli_simag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_dsscalcjs( conjx, x, y ) bli_sscalcjris( conjx, bli_dreal(x), bli_dimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_csscalcjs( conjx, x, y ) bli_sscalcjris( conjx, bli_creal(x), bli_cimag(x), bli_sreal(y), bli_simag(y) )
|
||||
#define bli_zsscalcjs( conjx, x, y ) bli_sscalcjris( conjx, bli_zreal(x), bli_zimag(x), bli_sreal(y), bli_simag(y) )
|
||||
|
||||
#define bli_sdscalcjs( conj, x, y ) bli_dscalcjris( conj, bli_sreal(x), bli_simag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_ddscalcjs( conj, x, y ) bli_dscalcjris( conj, bli_dreal(x), bli_dimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_cdscalcjs( conj, x, y ) bli_dscalcjris( conj, bli_creal(x), bli_cimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_zdscalcjs( conj, x, y ) bli_dscalcjris( conj, bli_zreal(x), bli_zimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_sdscalcjs( conjx, x, y ) bli_dscalcjris( conjx, bli_sreal(x), bli_simag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_ddscalcjs( conjx, x, y ) bli_dscalcjris( conjx, bli_dreal(x), bli_dimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_cdscalcjs( conjx, x, y ) bli_dscalcjris( conjx, bli_creal(x), bli_cimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
#define bli_zdscalcjs( conjx, x, y ) bli_dscalcjris( conjx, bli_zreal(x), bli_zimag(x), bli_dreal(y), bli_dimag(y) )
|
||||
|
||||
#ifndef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_scscalcjs( conj, x, y ) bli_scscalcjris( conj, bli_sreal(x), bli_simag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_dcscalcjs( conj, x, y ) bli_scscalcjris( conj, bli_dreal(x), bli_dimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_ccscalcjs( conj, x, y ) bli_cscalcjris( conj, bli_creal(x), bli_cimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_zcscalcjs( conj, x, y ) bli_cscalcjris( conj, bli_zreal(x), bli_zimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_scscalcjs( conjx, x, y ) bli_scscalcjris( conjx, bli_sreal(x), bli_simag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_dcscalcjs( conjx, x, y ) bli_scscalcjris( conjx, bli_dreal(x), bli_dimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_ccscalcjs( conjx, x, y ) bli_cscalcjris( conjx, bli_creal(x), bli_cimag(x), bli_creal(y), bli_cimag(y) )
|
||||
#define bli_zcscalcjs( conjx, x, y ) bli_cscalcjris( conjx, bli_zreal(x), bli_zimag(x), bli_creal(y), bli_cimag(y) )
|
||||
|
||||
#define bli_szscalcjs( conj, x, y ) bli_dzscalcjris( conj, bli_sreal(x), bli_simag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_dzscalcjs( conj, x, y ) bli_dzscalcjris( conj, bli_dreal(x), bli_dimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_czscalcjs( conj, x, y ) bli_zscalcjris( conj, bli_creal(x), bli_cimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_zzscalcjs( conj, x, y ) bli_zscalcjris( conj, bli_zreal(x), bli_zimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_szscalcjs( conjx, x, y ) bli_dzscalcjris( conjx, bli_sreal(x), bli_simag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_dzscalcjs( conjx, x, y ) bli_dzscalcjris( conjx, bli_dreal(x), bli_dimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_czscalcjs( conjx, x, y ) bli_zscalcjris( conjx, bli_creal(x), bli_cimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
#define bli_zzscalcjs( conjx, x, y ) bli_zscalcjris( conjx, bli_zreal(x), bli_zimag(x), bli_zreal(y), bli_zimag(y) )
|
||||
|
||||
#else // ifdef BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
#define bli_scscalcjs( conj, x, y ) { (y) *= (x); }
|
||||
#define bli_dcscalcjs( conj, x, y ) { (y) *= (x); }
|
||||
#define bli_ccscalcjs( conj, x, y ) { (y) *= ( bli_is_conj( conj ) ? conjf(x) : (x) ); }
|
||||
#define bli_zcscalcjs( conj, x, y ) { (y) *= ( bli_is_conj( conj ) ? conj (x) : (x) ); }
|
||||
#define bli_scscalcjs( conjx, x, y ) { (y) *= (x); }
|
||||
#define bli_dcscalcjs( conjx, x, y ) { (y) *= (x); }
|
||||
#define bli_ccscalcjs( conjx, x, y ) { (y) *= ( bli_is_conj( conjx ) ? conjf(x) : (x) ); }
|
||||
#define bli_zcscalcjs( conjx, x, y ) { (y) *= ( bli_is_conj( conjx ) ? conj (x) : (x) ); }
|
||||
|
||||
#define bli_szscalcjs( conj, x, y ) { (y) *= (x); }
|
||||
#define bli_dzscalcjs( conj, x, y ) { (y) *= (x); }
|
||||
#define bli_czscalcjs( conj, x, y ) { (y) *= ( bli_is_conj( conj ) ? conjf(x) : (x) ); }
|
||||
#define bli_zzscalcjs( conj, x, y ) { (y) *= ( bli_is_conj( conj ) ? conj (x) : (x) ); }
|
||||
#define bli_szscalcjs( conjx, x, y ) { (y) *= (x); }
|
||||
#define bli_dzscalcjs( conjx, x, y ) { (y) *= (x); }
|
||||
#define bli_czscalcjs( conjx, x, y ) { (y) *= ( bli_is_conj( conjx ) ? conjf(x) : (x) ); }
|
||||
#define bli_zzscalcjs( conjx, x, y ) { (y) *= ( bli_is_conj( conjx ) ? conj (x) : (x) ); }
|
||||
|
||||
#endif // BLIS_ENABLE_C99_COMPLEX
|
||||
|
||||
|
||||
#define bli_sscalcjs( conj, x, y ) bli_ssscalcjs( conj, x, y )
|
||||
#define bli_dscalcjs( conj, x, y ) bli_ddscalcjs( conj, x, y )
|
||||
#define bli_cscalcjs( conj, x, y ) bli_ccscalcjs( conj, x, y )
|
||||
#define bli_zscalcjs( conj, x, y ) bli_zzscalcjs( conj, x, y )
|
||||
#define bli_sscalcjs( conjx, x, y ) bli_ssscalcjs( conjx, x, y )
|
||||
#define bli_dscalcjs( conjx, x, y ) bli_ddscalcjs( conjx, x, y )
|
||||
#define bli_cscalcjs( conjx, x, y ) bli_ccscalcjs( conjx, x, y )
|
||||
#define bli_zscalcjs( conjx, x, y ) bli_zzscalcjs( conjx, x, y )
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user