Files
blis/frame/base/bli_func.c
Field G. Van Zee 95adc43d80 Moved 'family' field from cntx_t to cntl_t.
Details:
- Removed the family field inside the cntx_t struct and re-added it to the
  cntl_t struct. Updated all accessor functions/macros accordingly, as well
  as all consumers and intermediaries of the family parameter (such as
  bli_l3_thread_decorator(), bli_l3_direct(), and bli_l3_prune_*()). This
  change was motivated by the desire to keep the context limited, as much
  as possible, to information about the computing environment. (The family
  field, by contrast, is a descriptor about the operation being executed.)
- Added additional functions to bli_blksz_*() API.
- Added additional functions to bli_cntx_*() API.
- Minor updates to bli_func.c, bli_mbool.c.
- Removed 'obj' from bli_blksz_*() API names.
- Removed 'obj' from bli_cntx_*() API names.
- Removed 'obj' from bli_cntl_*(), bli_*_cntl_*() API names. Renamed routines
  that operate only on a single struct to contain the "_node" suffix to
  differentiate with those routines that operate on the entire tree.
- Added enums for packm and unpackm kernels to bli_type_defs.h.
- Removed BLIS_1F and BLIS_VF from bszid_t definition in bli_type_defs.h.
  They weren't being used and probably never will be.
2017-12-11 12:12:29 +05:30

120 lines
3.1 KiB
C

/*
BLIS
An object-based framework for developing high-performance BLAS-like
libraries.
Copyright (C) 2014, The University of Texas at Austin
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of The University of Texas at Austin nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "blis.h"
func_t* bli_func_create
(
void* ptr_s,
void* ptr_d,
void* ptr_c,
void* ptr_z
)
{
func_t* f;
f = ( func_t* ) bli_malloc_intl( sizeof(func_t) );
bli_func_init
(
f,
ptr_s,
ptr_d,
ptr_c,
ptr_z
);
return f;
}
void bli_func_init
(
func_t* f,
void* ptr_s,
void* ptr_d,
void* ptr_c,
void* ptr_z
)
{
bli_func_set_dt( ptr_s, BLIS_FLOAT, f );
bli_func_set_dt( ptr_d, BLIS_DOUBLE, f );
bli_func_set_dt( ptr_c, BLIS_SCOMPLEX, f );
bli_func_set_dt( ptr_z, BLIS_DCOMPLEX, f );
}
void bli_func_init_null
(
func_t* f
)
{
bli_func_set_dt( NULL, BLIS_FLOAT, f );
bli_func_set_dt( NULL, BLIS_DOUBLE, f );
bli_func_set_dt( NULL, BLIS_SCOMPLEX, f );
bli_func_set_dt( NULL, BLIS_DCOMPLEX, f );
}
void bli_func_free( func_t* f )
{
bli_free_intl( f );
}
// -----------------------------------------------------------------------------
bool_t bli_func_is_null_dt( num_t dt,
func_t* f )
{
return ( bli_func_get_dt( dt, f ) == NULL );
}
bool_t bli_func_is_null( func_t* f )
{
bool_t r_val = TRUE;
num_t dt;
// Iterate over all floating-point datatypes. If any is non-null,
// return FALSE. Otherwise, if they are all null, return TRUE.
for ( dt = BLIS_DT_LO; dt <= BLIS_DT_HI; ++dt )
{
if ( bli_func_get_dt( dt, f ) != NULL )
{
r_val = FALSE;
break;
}
}
return r_val;
}