#ifndef _INLINE_SSE_H_
#define _INLINE_SSE_H_

#include "sse_mult_nn.h"
#include "sse_mult_na.h"
#include "sse_mult_an.h"
#include "sse_mat_vec.h"
#include "sse_adj_mat_vec.h"
#include "sse_mat_vec_sum_4dir.h"
#include "sse_adj_mat_vec_4dir.h"
#include "sse_adj_mat_vec_4vec.h"
#include "sse_su3_proj.h"
#include "sse_mat_hwvec.h"
#include "sse_adj_mat_hwvec.h"
#include "sse_sub4vecs.h"
#include "sse_addvec.h"
#include "sse_s_m_a_vec.h"
#include "sse_s_m_a_mat.h"

#ifdef SSE_SUBS
#define mult_su3_nn(args...) _inline_sse_mult_su3_nn(## args)
#define mult_su3_na(args...) _inline_sse_mult_su3_na(## args)
#define mult_su3_an(args...) _inline_sse_mult_su3_an(## args)
#define mult_su3_mat_vec(args...) _inline_sse_mult_su3_mat_vec(## args)
#define mult_adj_su3_mat_vec(args...) _inline_sse_mult_adj_su3_mat_vec(##args)
#define mult_su3_mat_vec_sum_4dir(args...) _inline_sse_mult_su3_mat_vec_sum_4dir(##args)
#define mult_adj_su3_mat_vec_4dir(args...) _inline_sse_mult_adj_su3_mat_vec_4dir(##args)
#define mult_adj_su3_mat_4vec(args...) _inline_sse_mult_adj_su3_mat_4vec(##args)
#define su3_projector(args...) _inline_sse_su3_projector(##args)
#define mult_su3_mat_hwvec(args...) _inline_sse_mult_su3_mat_hwvec(##args)
#define mult_adj_su3_mat_hwvec(args...) _inline_sse_mult_adj_su3_mat_hwvec(##args)
#define sub_four_su3_vecs(args...) _inline_sse_sub_four_su3_vecs(##args)
#define add_su3_vector(args...) _inline_sse_add_su3_vector(##args)
#define scalar_mult_add_su3_vector(args...) _inline_sse_scalar_mult_add_su3_vector(##args)
#define scalar_mult_add_su3_matrix(args...) _inline_sse_scalar_mult_add_su3_matrix(##args)
#endif

typedef struct
{
   unsigned int c1,c2,c3,c4;
} sse_mask __attribute__ ((aligned (16)));

static sse_mask _sse_sgn13 __attribute__ ((unused)) ={0x80000000, 0x00000000, 0x80000000, 0x00000000};
static sse_mask _sse_sgn24 __attribute__ ((unused)) ={0x00000000, 0x80000000, 0x00000000, 0x80000000};
static sse_mask _sse_sgn3 __attribute__  ((unused)) ={0x00000000, 0x00000000, 0x80000000, 0x00000000};
static sse_mask _sse_sgn4 __attribute__  ((unused)) ={0x00000000, 0x00000000, 0x00000000, 0x80000000};


#endif
