// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

#ifndef EIGEN_CXX11_FIXED_POINT_MODULE
#define EIGEN_CXX11_FIXED_POINT_MODULE

#include <Eigen/Core>
#include <stdint.h>

/** \defgroup CXX11_FixedPoint_Module Fixed Point Module
  *
  * This module provides common core features for all modules that
  * explicitly depend on C++11. Currently, this is only the Tensor
  * module. Note that at this stage, you should not need to include
  * this module directly.
  *
  * It also provides a limited fallback for compilers that don't support
  * CXX11 yet, such as nvcc.
  *
  * \code
  * #include <Eigen/CXX11/FixedPoint>
  * \endcode
  */

#include "src/FixedPoint/FixedPointTypes.h"

// Use optimized implementations whenever available
#ifdef EIGEN_VECTORIZE_AVX512
#include "src/Tensor/TensorContractionThreadPool.h"
#include "src/FixedPoint/PacketMathAVX512.h"
#include "src/FixedPoint/TypeCastingAVX512.h"

#elif defined EIGEN_VECTORIZE_AVX2
#define EIGEN_USE_OPTIMIZED_INT8_UINT8_MAT_MAT_PRODUCT
#define EIGEN_USE_OPTIMIZED_INT16_INT16_MAT_MAT_PRODUCT
#include "src/Tensor/TensorContractionThreadPool.h"
#include "src/FixedPoint/PacketMathAVX2.h"
#include "src/FixedPoint/MatMatProductAVX2.h"
#include "src/FixedPoint/TypeCastingAVX2.h"

#elif defined EIGEN_VECTORIZE_NEON
#define EIGEN_USE_OPTIMIZED_INT8_UINT8_MAT_MAT_PRODUCT
#include "src/FixedPoint/MatMatProductNEON.h"
#endif

// Use the default implementation when no optimized code is available
#include "src/FixedPoint/MatMatProduct.h"
#include "src/FixedPoint/MatVecProduct.h"


#endif // EIGEN_CXX11_FIXED_POINT_MODULE
