1 /* 2 3 PHYML : a program that computes maximum likelihood phylogenies from 4 DNA or AA homologous sequences 5 6 Copyright (C) Stephane Guindon. Oct 2003 onward 7 8 All parts of the source except where indicated are distributed under 9 the GNU public licence. See http://www.opensource.org for details. 10 11 */ 12 13 #include <config.h> 14 15 #ifndef AVX_H 16 #define AVX_H 17 18 #include "utilities.h" 19 #include "optimiz.h" 20 #include "models.h" 21 #include "free.h" 22 #include "times.h" 23 #include "mixt.h" 24 25 26 #if defined(__AVX__) 27 28 void AVX_Update_Partial_Lk(t_tree *tree,t_edge *b_fcus,t_node *n); 29 void AVX_Update_Eigen_Lr(t_edge *b, t_tree *tree); 30 phydbl AVX_Lk_Core_One_Class_Eigen_Lr(const phydbl *dot_prod, const phydbl *expl, const unsigned int ns); 31 void AVX_Lk_dLk_Core_One_Class_Eigen_Lr(const phydbl *dot_prod, const phydbl *expl, const unsigned int ns, phydbl *lk, phydbl *dlk); 32 phydbl AVX_Lk_Core_One_Class_No_Eigen_Lr(const phydbl *p_lk_left, const phydbl *p_lk_rght, const phydbl *Pij, const phydbl *tPij, const phydbl *pi, const int ns, const int ambiguity_check, const int observed_state); 33 phydbl AVX_Vect_Norm(__m256d _z); 34 phydbl AVX_Lk_Core(int state, int ambiguity_check, t_edge *b, t_tree *tree); 35 phydbl AVX_Lk_Core_Nucl(int state, int ambiguity_check, t_edge *b, t_tree *tree); 36 phydbl AVX_Lk_Core_AA(int state, int ambiguity_check, t_edge *b, t_tree *tree); 37 void AVX_Partial_Lk_Exex(const __m256d *_tPij1, const int state1, const __m256d *_tPij2, const int state2, const int ns, __m256d *plk0); 38 void AVX_Partial_Lk_Exin(const __m256d *_tPij1, const int state1, const __m256d *_tPij2, const phydbl *_plk2, __m256d *_pmat2plk2, const int ns, __m256d *_plk0); 39 void AVX_Partial_Lk_Inin(const __m256d *_tPij1, const phydbl *plk1, __m256d *_pmat1plk1, const __m256d *_tPij2, const phydbl *plk2, __m256d *_pmat2plk2, const int ns, __m256d *_plk0); 40 void AVX_Matrix_Vect_Prod(const __m256d *_m_transpose, const phydbl *_v, const int ns, __m256d *res); 41 __m256d AVX_Horizontal_Add(const __m256d x[4]); 42 phydbl AVX_Lk_Core_One_Class_No_Eigen_Lr_Block(const phydbl *p_lk_left, const phydbl *p_lk_rght, const phydbl *Pij, const phydbl *tPij, const phydbl *pi, const int ns, const int ambiguity_check, const int observed_state); 43 phydbl AVX_Lk_Core_One_Class_No_Eigen_Lr_No_Block(const phydbl *p_lk_left, const phydbl *p_lk_rght, const phydbl *Pij, const phydbl *tPij, const phydbl *pi, const int ns, const int ambiguity_check, const int observed_state); 44 45 46 #endif 47 #endif 48