libflame
revision_anchor
|
00001 /* 00002 00003 Copyright (C) 2014, The University of Texas at Austin 00004 00005 This file is part of libflame and is available under the 3-Clause 00006 BSD license, which can be found in the LICENSE file at the top-level 00007 directory, or at http://opensource.org/licenses/BSD-3-Clause 00008 00009 */ 00010 00011 #include "FLA_type_defs.h" 00012 00013 // --- Pointer-accessing FLAME macro definitions ------------------------------------ 00014 00015 #define FLA_CONSTANT_I_OFFSET 0 00016 #define FLA_CONSTANT_S_OFFSET ( sizeof(double) ) 00017 #define FLA_CONSTANT_D_OFFSET ( sizeof(double) + sizeof(double) ) 00018 #define FLA_CONSTANT_C_OFFSET ( sizeof(double) + sizeof(double) + sizeof(double) ) 00019 #define FLA_CONSTANT_Z_OFFSET ( sizeof(double) + sizeof(double) + sizeof(double) + sizeof( scomplex ) ) 00020 #define FLA_CONSTANT_SIZE ( sizeof(double) + sizeof(double) + sizeof(double) + sizeof( scomplex ) + sizeof( dcomplex ) ) 00021 00022 #define FLA_INT_PTR( x ) \ 00023 ( ((x).base)->datatype == FLA_CONSTANT ? \ 00024 ( ( int * ) ( ( ( char * ) ((x).base)->buffer ) + FLA_CONSTANT_I_OFFSET ) ) : \ 00025 ( ( ( int * ) ((x).base)->buffer ) + ( size_t ) (x).offn * ((x).base)->cs + \ 00026 ( size_t ) (x).offm * ((x).base)->rs ) ) 00027 00028 #define FLA_FLOAT_PTR( x ) \ 00029 ( ((x).base)->datatype == FLA_CONSTANT ? \ 00030 ( ( float * ) ( ( ( char * ) ((x).base)->buffer ) + FLA_CONSTANT_S_OFFSET ) ) : \ 00031 ( ( ( float * ) ((x).base)->buffer ) + ( size_t ) (x).offn * ((x).base)->cs + \ 00032 ( size_t ) (x).offm * ((x).base)->rs ) ) 00033 00034 #define FLA_DOUBLE_PTR( x ) \ 00035 ( ((x).base)->datatype == FLA_CONSTANT ? \ 00036 ( ( double * ) ( ( ( char * ) ((x).base)->buffer ) + FLA_CONSTANT_D_OFFSET ) ) : \ 00037 ( ( ( double * ) ((x).base)->buffer ) + ( size_t ) (x).offn * ((x).base)->cs + \ 00038 ( size_t ) (x).offm * ((x).base)->rs ) ) 00039 00040 #define FLA_COMPLEX_PTR( x ) \ 00041 ( ((x).base)->datatype == FLA_CONSTANT ? \ 00042 ( ( scomplex * ) ( ( ( char * ) ((x).base)->buffer ) + FLA_CONSTANT_C_OFFSET ) ) : \ 00043 ( ( ( scomplex * ) ((x).base)->buffer ) + ( size_t ) (x).offn * ((x).base)->cs + \ 00044 ( size_t ) (x).offm * ((x).base)->rs ) ) 00045 00046 #define FLA_DOUBLE_COMPLEX_PTR( x ) \ 00047 ( ((x).base)->datatype == FLA_CONSTANT ? \ 00048 ( ( dcomplex * ) ( ( ( char * ) ((x).base)->buffer ) + FLA_CONSTANT_Z_OFFSET ) ) : \ 00049 ( ( ( dcomplex * ) ((x).base)->buffer ) + ( size_t ) (x).offn * ((x).base)->cs + \ 00050 ( size_t ) (x).offm * ((x).base)->rs ) ) 00051