/*
* Copyright (C) 2016 Intel Corporation. All rights reserved.
*
* 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 Intel Corporation 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
* OWNER 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.
*
*/

#ifdef _IPP_OMP_STATIC
#define LIB_THREADS " threaded"
#define CORE_THREADS " (threaded)"
#else 
#define LIB_THREADS ""
#define CORE_THREADS ""
#endif

#define GET_LIBRARY_NAME( cpu, is ) #cpu, IPP_LIB_SHORTNAME() " " is " (" #cpu LIB_THREADS ")"

static const IppLibraryVersion SLIBVERNAME = {

/* major, minor, update (ex-majorBuild) */
    BASE_VERSION(),

#if defined IPP_REVISION
    IPP_REVISION,
#else
    -1,
#endif /* IPP_REVISION */

#if defined( _CORE )
    /*GET_LIBRARY_NAME( core )*/
    "core",
    "ippCore" CORE_THREADS

#elif ( _IPP_ARCH == _IPP_ARCH_IA32 ) || ( _IPP_ARCH == _IPP_ARCH_LP32 )
    #if ( _IPP == _IPP_M5 )
        GET_LIBRARY_NAME( m5, "586" )
    #elif ( _IPP == _IPP_H9 )
        GET_LIBRARY_NAME( h9, "AVX2" )
    #elif ( _IPP == _IPP_G9 )
        GET_LIBRARY_NAME( g9, "AVX" )
    #elif ( _IPP == _IPP_P8 )
        GET_LIBRARY_NAME( p8, "SSE4.2" )
    #elif ( _IPPLP32 == _IPPLP32_S8 )
        GET_LIBRARY_NAME( s8, "Atom" )
    #elif ( _IPP == _IPP_V8 )
        GET_LIBRARY_NAME( v8, "SSSE3" )
    #elif ( _IPP == _IPP_W7 )
        GET_LIBRARY_NAME( w7, "SSE2" )
    #else
        GET_LIBRARY_NAME( px, "PX" )
    #endif

#elif ( _IPP_ARCH == _IPP_ARCH_EM64T ) || ( _IPP_ARCH == _IPP_ARCH_LP64 )
    #if ( _IPP32E == _IPP32E_K0 )
        GET_LIBRARY_NAME( k0, "AVX-512F/CD/BW/DQ/VL" )
    #elif ( _IPP32E == _IPP32E_N0 )
        GET_LIBRARY_NAME( n0, "AVX-512F/CD/ER/PF" )
    #elif ( _IPP32E == _IPP32E_E9 )
        GET_LIBRARY_NAME( e9, "AVX" )
    #elif ( _IPP32E == _IPP32E_L9 )
        GET_LIBRARY_NAME( l9, "AVX2" )
    #elif ( _IPP32E == _IPP32E_Y8 )
        GET_LIBRARY_NAME( y8, "SSE4.2" )
    #elif ( _IPPLP64 == _IPPLP64_N8 )
        GET_LIBRARY_NAME( n8, "Atom" )
    #elif ( _IPP32E == _IPP32E_U8 )
        GET_LIBRARY_NAME( u8, "SSSE3" )
    #elif ( _IPP32E == _IPP32E_M7 )
        GET_LIBRARY_NAME( m7, "SSE3" )
    #else
        GET_LIBRARY_NAME( mx, "PX" )
    #endif

#elif ( _IPP_ARCH == _IPP_ARCH_LRB2 )
    #if ( _IPPLRB == _IPPLRB_BX )
        GET_LIBRARY_NAME( bx, "PX" )
    #elif ( _IPPLRB == _IPPLRB_B2 )
        GET_LIBRARY_NAME( b2, "KNC" )
    #endif

#else
    #error ARCH not supported

#endif

#if defined( TICKTOCK )
  "+"
#endif

/* release Version (by Manager)    */
   ,STR_VERSION()

/* BuildDate (by QA person)        */
   ,__DATE__

};
