/*
 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 * See https://llvm.org/LICENSE.txt for license information.
 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 *
 */

MTHINTRIN(cotan  , ss   , em64t      , __mth_i_cotan           , __mth_i_cotan           , __mth_i_cotan           ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , em64t      , __mth_i_dcotan          , __mth_i_dcotan          , __mth_i_dcotan          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , em64t      , __gs_cotan_4_f          , __gs_cotan_4_r          , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , em64t      , __gd_cotan_2_f          , __gd_cotan_2_r          , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , em64t      , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , em64t      , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , sse4       , __mth_i_cotan           , __mth_i_cotan           , __mth_i_cotan           ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , sse4       , __mth_i_dcotan          , __mth_i_dcotan          , __mth_i_dcotan          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , sse4       , __gs_cotan_4_f          , __gs_cotan_4_r          , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , sse4       , __gd_cotan_2_f          , __gd_cotan_2_r          , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , sse4       , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , sse4       , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , avx        , __fss_cotan_vex         , __rss_cotan_vex         , __mth_i_cotan           ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , avx        , __fsd_cotan_vex         , __rsd_cotan_vex         , __mth_i_dcotan          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , avx        , __fvs_cotan_vex         , __rvs_cotan_vex         , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , avx        , __fvd_cotan_vex         , __rvd_cotan_vex         , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8  , avx        , __fvs_cotan_vex_256     , __rvs_cotan_vex_256     , __gs_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4  , avx        , __fvd_cotan_vex_256     , __rvd_cotan_vex_256     , __gd_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , avx        , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , avx        , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8m , avx        , __fs_cotan_8_mn         , __rs_cotan_8_mn         , __ps_cotan_8_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4m , avx        , __fd_cotan_4_mn         , __rd_cotan_4_mn         , __pd_cotan_4_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , avxfma4    , __fss_cotan_fma4        , __rss_cotan_fma4        , __mth_i_cotan           ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , avxfma4    , __fsd_cotan_fma4        , __rsd_cotan_fma4        , __mth_i_dcotan          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , avxfma4    , __fvs_cotan_fma4        , __rvs_cotan_fma4        , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , avxfma4    , __fvd_cotan_fma4        , __rvd_cotan_fma4        , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8  , avxfma4    , __fvs_cotan_fma4_256    , __rvs_cotan_fma4_256    , __gs_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4  , avxfma4    , __fvd_cotan_fma4_256    , __rvd_cotan_fma4_256    , __gd_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , avxfma4    , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , avxfma4    , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8m , avxfma4    , __fs_cotan_8_mn         , __rs_cotan_8_mn         , __ps_cotan_8_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4m , avxfma4    , __fd_cotan_4_mn         , __rd_cotan_4_mn         , __pd_cotan_4_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , avx2       , __fs_cotan_1_avx2       , __rss_cotan_vex         , __mth_i_cotan_avx2      ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , avx2       , __mth_i_dcotan_avx2     , __rsd_cotan_vex         , __mth_i_dcotan_avx2     ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , avx2       , __fs_cotan_4_avx2       , __rvs_cotan_vex         , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , avx2       , __gd_cotan_2_f          , __rvd_cotan_vex         , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8  , avx2       , __fs_cotan_8_avx2       , __rvs_cotan_vex_256     , __gs_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4  , avx2       , __gd_cotan_4_f          , __rvd_cotan_vex_256     , __gd_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , avx2       , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , avx2       , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8m , avx2       , __fs_cotan_8_mn         , __rs_cotan_8_mn         , __ps_cotan_8_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4m , avx2       , __fd_cotan_4_mn         , __rd_cotan_4_mn         , __pd_cotan_4_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , avx512knl  , __fs_cotan_1_avx2       , __rss_cotan_vex         , __mth_i_cotan_avx2      ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , avx512knl  , __mth_i_dcotan_avx2     , __rsd_cotan_vex         , __mth_i_dcotan_avx2     ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , avx512knl  , __fs_cotan_4_avx2       , __rvs_cotan_vex         , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , avx512knl  , __gd_cotan_2_f          , __rvd_cotan_vex         , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8  , avx512knl  , __fs_cotan_8_avx2       , __rvs_cotan_vex_256     , __gs_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4  , avx512knl  , __gd_cotan_4_f          , __rvd_cotan_vex_256     , __gd_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv16 , avx512knl  , __fs_cotan_16_z2yy      , __rs_cotan_16_z2yy      , __gs_cotan_16_p         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv8  , avx512knl  , __gd_cotan_8_f          , __rd_cotan_8_z2yy       , __gd_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , avx512knl  , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , avx512knl  , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8m , avx512knl  , __fs_cotan_8_mn         , __rs_cotan_8_mn         , __ps_cotan_8_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4m , avx512knl  , __fd_cotan_4_mn         , __rd_cotan_4_mn         , __pd_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv16m, avx512knl  , __fs_cotan_16_mn        , __rs_cotan_16_mn        , __ps_cotan_16_mn        ,__math_dispatch_error)
MTHINTRIN(cotan  , dv8m , avx512knl  , __fd_cotan_8_mn         , __rd_cotan_8_mn         , __pd_cotan_8_mn         ,__math_dispatch_error)

MTHINTRIN(cotan  , ss   , avx512     , __fs_cotan_1_avx2       , __rss_cotan_vex         , __mth_i_cotan_avx2      ,__math_dispatch_error)
MTHINTRIN(cotan  , ds   , avx512     , __mth_i_dcotan_avx2     , __rsd_cotan_vex         , __mth_i_dcotan_avx2     ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4  , avx512     , __fs_cotan_4_avx2       , __rvs_cotan_vex         , __gs_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2  , avx512     , __gd_cotan_2_f          , __rvd_cotan_vex         , __gd_cotan_2_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8  , avx512     , __fs_cotan_8_avx2       , __rvs_cotan_vex_256     , __gs_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4  , avx512     , __gd_cotan_4_f          , __rvd_cotan_vex_256     , __gd_cotan_4_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv16 , avx512     , __fs_cotan_16_avx512    , __rs_cotan_16_z2yy      , __gs_cotan_16_p         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv8  , avx512     , __gd_cotan_8_f          , __rd_cotan_8_z2yy       , __gd_cotan_8_p          ,__math_dispatch_error)
MTHINTRIN(cotan  , sv4m , avx512     , __fs_cotan_4_mn         , __rs_cotan_4_mn         , __ps_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv2m , avx512     , __fd_cotan_2_mn         , __rd_cotan_2_mn         , __pd_cotan_2_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv8m , avx512     , __fs_cotan_8_mn         , __rs_cotan_8_mn         , __ps_cotan_8_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , dv4m , avx512     , __fd_cotan_4_mn         , __rd_cotan_4_mn         , __pd_cotan_4_mn         ,__math_dispatch_error)
MTHINTRIN(cotan  , sv16m, avx512     , __fs_cotan_16_mn        , __rs_cotan_16_mn        , __ps_cotan_16_mn        ,__math_dispatch_error)
MTHINTRIN(cotan  , dv8m , avx512     , __fd_cotan_8_mn         , __rd_cotan_8_mn         , __pd_cotan_8_mn         ,__math_dispatch_error)

MTHINTRIN(cotan , cs   , em64t       , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , em64t       , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , em64t       , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , em64t       , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , sse4        , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , sse4        , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , sse4        , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , sse4        , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , avx         , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , avx         , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , avx         , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , avx         , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv4  , avx         , __gc_cotan_4_f          , __gc_cotan_4_r          , __gc_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv2  , avx         , __gz_cotan_2_f          , __gz_cotan_2_r          , __gz_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , avxfma4     , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , avxfma4     , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , avxfma4     , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , avxfma4     , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv4  , avxfma4     , __gc_cotan_4_f          , __gc_cotan_4_r          , __gc_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv2  , avxfma4     , __gz_cotan_2_f          , __gz_cotan_2_r          , __gz_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , avx2        , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , avx2        , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , avx2        , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , avx2        , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv4  , avx2        , __gc_cotan_4_f          , __gc_cotan_4_r          , __gc_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv2  , avx2        , __gz_cotan_2_f          , __gz_cotan_2_r          , __gz_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , avx512knl   , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , avx512knl   , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , avx512knl   , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , avx512knl   , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv4  , avx512knl   , __gc_cotan_4_f          , __gc_cotan_4_r          , __gc_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv8  , avx512knl   , __gc_cotan_8_f          , __gc_cotan_8_r          , __gc_cotan_8_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv2  , avx512knl   , __gz_cotan_2_f          , __gz_cotan_2_r          , __gz_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv4  , avx512knl   , __gz_cotan_4_f          , __gz_cotan_4_r          , __gz_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cs   , avx512      , tanf                 , tanf                 , tanf                ,__math_dispatch_error)
MTHINTRIN(cotan , zs   , avx512      , tanf                  , tanf                  , tanf                 ,__math_dispatch_error)
MTHINTRIN(cotan , zv1  , avx512      , __gz_cotan_1v_f         , __gz_cotan_1v_r         , __gz_cotan_1v_p        ,__math_dispatch_error)
MTHINTRIN(cotan , cv2  , avx512      , __gc_cotan_2_f          , __gc_cotan_2_r          , __gc_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv4  , avx512      , __gc_cotan_4_f          , __gc_cotan_4_r          , __gc_cotan_4_p         ,__math_dispatch_error)
MTHINTRIN(cotan , cv8  , avx512      , __gc_cotan_8_f          , __gc_cotan_8_r          , __gc_cotan_8_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv2  , avx512      , __gz_cotan_2_f          , __gz_cotan_2_r          , __gz_cotan_2_p         ,__math_dispatch_error)
MTHINTRIN(cotan , zv4  , avx512      , __gz_cotan_4_f          , __gz_cotan_4_r          , __gz_cotan_4_p         ,__math_dispatch_error)
