diff --git a/frame/include/bli_obj_macro_defs.h b/frame/include/bli_obj_macro_defs.h index 18ac0757a..c5b19d578 100644 --- a/frame/include/bli_obj_macro_defs.h +++ b/frame/include/bli_obj_macro_defs.h @@ -81,6 +81,21 @@ static objbits_t bli_obj_domain( obj_t* obj ) return ( obj->info & BLIS_DOMAIN_BIT ); } +static objbits_t bli_obj_prec( obj_t* obj ) +{ + return ( obj->info & BLIS_PRECISION_BIT ); +} + +static bool_t bli_obj_is_single_prec( obj_t* obj ) +{ + return ( bli_obj_prec( obj ) == BLIS_BITVAL_SINGLE_PREC ); +} + +static bool_t bli_obj_is_double_prec( obj_t* obj ) +{ + return ( bli_obj_prec( obj ) == BLIS_BITVAL_DOUBLE_PREC ); +} + static bool_t bli_obj_is_real( obj_t* obj ) { return ( bli_obj_domain( obj ) == BLIS_BITVAL_REAL ); @@ -91,16 +106,6 @@ static bool_t bli_obj_is_complex( obj_t* obj ) return ( bli_obj_domain( obj ) == BLIS_BITVAL_COMPLEX ); } -static objbits_t bli_obj_prec( obj_t* obj ) -{ - return ( obj->info & BLIS_PRECISION_BIT ); -} - -static bool_t bli_obj_is_double_prec( obj_t* obj ) -{ - return ( bli_obj_prec( obj ) == BLIS_BITVAL_DOUBLE_PREC ); -} - static num_t bli_obj_dt_proj_to_real( obj_t* obj ) { return ( bli_obj_dt( obj ) & ~BLIS_BITVAL_COMPLEX ); @@ -118,7 +123,17 @@ static num_t bli_obj_target_dt( obj_t* obj ) static num_t bli_obj_exec_dt( obj_t* obj ) { - return ( ( obj->info & BLIS_EXECUTION_DT_BITS ) >> BLIS_EXECUTION_DT_SHIFT ); + return ( ( obj->info & BLIS_EXEC_DT_BITS ) >> BLIS_EXEC_DT_SHIFT ); +} + +static dom_t bli_obj_exec_domain( obj_t* obj ) +{ + return ( ( obj->info & BLIS_EXEC_DOMAIN_BIT ) >> BLIS_EXEC_DT_SHIFT ); +} + +static prec_t bli_obj_exec_prec( obj_t* obj ) +{ + return ( ( obj->info & BLIS_EXEC_PREC_BIT ) >> BLIS_EXEC_DT_SHIFT ); } static trans_t bli_obj_conjtrans_status( obj_t* obj ) @@ -328,7 +343,17 @@ static void bli_obj_set_target_dt( num_t dt, obj_t* obj ) static void bli_obj_set_exec_dt( num_t dt, obj_t* obj ) { - obj->info = ( obj->info & ~BLIS_EXECUTION_DT_BITS ) | ( dt << BLIS_EXECUTION_DT_SHIFT ); + obj->info = ( obj->info & ~BLIS_EXEC_DT_BITS ) | ( dt << BLIS_EXEC_DT_SHIFT ); +} + +static void bli_obj_set_exec_domain( dom_t dt, obj_t* obj ) +{ + obj->info = ( obj->info & ~BLIS_EXEC_DOMAIN_BIT ) | ( dt << BLIS_EXEC_DOMAIN_SHIFT ); +} + +static void bli_obj_set_exec_prec( prec_t dt, obj_t* obj ) +{ + obj->info = ( obj->info & ~BLIS_EXEC_PREC_BIT ) | ( dt << BLIS_EXEC_PREC_SHIFT ); } static void bli_obj_set_pack_schema( pack_t schema, obj_t* obj ) diff --git a/frame/include/bli_type_defs.h b/frame/include/bli_type_defs.h index a844e1971..fe0d84a51 100644 --- a/frame/include/bli_type_defs.h +++ b/frame/include/bli_type_defs.h @@ -210,11 +210,11 @@ typedef dcomplex f77_dcomplex; 12 ~ 10 Target numerical datatype - 10: domain (0 == real, 1 == complex) - 11: precision (0 == single, 1 == double) - - 12: unused + - 12: used to encode integer, constant types 15 ~ 13 Execution numerical datatype - 13: domain (0 == real, 1 == complex) - 14: precision (0 == single, 1 == double) - - 15: unused + - 15: used to encode integer, constant types 22 ~ 16 Packed type/status - 0 0000 00: not packed - 1 0000 00: packed (unspecified; by rows, columns, or vector) @@ -271,7 +271,9 @@ typedef dcomplex f77_dcomplex; #define BLIS_UNIT_DIAG_SHIFT 8 #define BLIS_INVERT_DIAG_SHIFT 9 #define BLIS_TARGET_DT_SHIFT 10 -#define BLIS_EXECUTION_DT_SHIFT 13 +#define BLIS_EXEC_DT_SHIFT 13 +#define BLIS_EXEC_DOMAIN_SHIFT 13 +#define BLIS_EXEC_PREC_SHIFT 14 #define BLIS_PACK_SCHEMA_SHIFT 16 #define BLIS_PACK_RC_SHIFT 16 #define BLIS_PACK_PANEL_SHIFT 17 @@ -299,7 +301,9 @@ typedef dcomplex f77_dcomplex; #define BLIS_UNIT_DIAG_BIT ( 0x1 << BLIS_UNIT_DIAG_SHIFT ) #define BLIS_INVERT_DIAG_BIT ( 0x1 << BLIS_INVERT_DIAG_SHIFT ) #define BLIS_TARGET_DT_BITS ( 0x7 << BLIS_TARGET_DT_SHIFT ) -#define BLIS_EXECUTION_DT_BITS ( 0x7 << BLIS_EXECUTION_DT_SHIFT ) +#define BLIS_EXEC_DT_BITS ( 0x7 << BLIS_EXEC_DT_SHIFT ) +#define BLIS_EXEC_DOMAIN_BIT ( 0x1 << BLIS_EXEC_DOMAIN_SHIFT ) +#define BLIS_EXEC_PREC_BIT ( 0x1 << BLIS_EXEC_PREC_SHIFT ) #define BLIS_PACK_SCHEMA_BITS ( 0x7F << BLIS_PACK_SCHEMA_SHIFT ) #define BLIS_PACK_RC_BIT ( 0x1 << BLIS_PACK_RC_SHIFT ) #define BLIS_PACK_PANEL_BIT ( 0x1 << BLIS_PACK_PANEL_SHIFT )