text: /*==========================================================================*
   * This file is part of the TVL - a template SIMD library.                  *
   *                                                                          *
   * Copyright 2022 TVL-Team, Database Research Group TU Dresden              *
   *                                                                          *
   * Licensed under the Apache License, Version 2.0 (the "License");          *
   * you may not use this file except in compliance with the License.         *
   * You may obtain a copy of the License at                                  *
   *                                                                          *
   *     http://www.apache.org/licenses/LICENSE-2.0                           *
   *                                                                          *
   * Unless required by applicable law or agreed to in writing, software      *
   * distributed under the License is distributed on an "AS IS" BASIS,        *
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
   * See the License for the specific language governing permissions and      *
   * limitations under the License.                                           *
   *==========================================================================*/
  /*
   * @file lib/generated/extensions/simd/intel/avx2.hpp
   * @date 30.03.2022
   */
  #ifndef TUD_D2RG_TVL_LIB_GENERATED_EXTENSIONS_SIMD_INTEL_AVX2_HPP
  #define TUD_D2RG_TVL_LIB_GENERATED_EXTENSIONS_SIMD_INTEL_AVX2_HPP
  
  #include "immintrin.h"
  namespace tvl {
     struct avx2 {
        template<Arithmetic BaseType, std::size_t VectorSizeInBits = 256>
           struct types {
              using default_size_in_bits = std::integral_constant< std::size_t, VectorSizeInBits >;
              using register_t __attribute__((__vector_size__(VectorSizeInBits/8),__may_alias__,__aligned__(VectorSizeInBits/8))) =
                 TVL_DEP_TYPE(
                    (std::is_integral_v< BaseType >),
                    long long,
                    TVL_DEP_TYPE(
                       (sizeof( BaseType ) == 4),
                       float,
                       double
                    )
                 );
              using mask_t =
                 register_t;
           };
     };
  } // end of namespace tvl
  #endif //TUD_D2RG_TVL_LIB_GENERATED_EXTENSIONS_SIMD_INTEL_AVX2_HPP