QDP++
qdp_sse_spin_evaluates_wrapper.h
Go to the documentation of this file.
1#ifndef QDP_SSE_SPIN_EVALUATES_WRAPPER_H
2#define QDP_SSE_SPIN_EVALUATES_WRAPPER_H
3
5// Threading evaluates wrappers
6//
7// by Xu Guo, EPCC, 13 October, 2008
9
10
11// for inlineSpinProjDir0Plus, inlineSpinProjDir1Plus, inlineSpinProjDir2Plus, inlineSpinProjDir3Plus, inlineSpinProjDir0Minus, inlineSpinProjDir1Minus, inlineSpinProjDir2Minus, inlineSpinProjDir3Minus
12// for inlineSpinReconDir0Plus, inlineSpinReconDir1Plus, inlineSpinReconDir2Plus, inlineSpinReconDir3Plus, inlineSpinReconDir0Minus, inlineSpinReconDir1Minus, inlineSpinReconDir2Minus, inlineSpinReconDir3Minus,
13// for inlineAddSpinReconDir0Plus, inlineAddSpinReconDir1Plus, inlineAddSpinReconDir2Plus, inlineAddSpinReconDir3Plus, inlineAddSpinReconDir0Minus, inlineAddSpinReconDir1Minus, inlineAddSpinReconDir2Minus, inlineAddSpinReconDir3Minus,
14
15// user arg for evaluate having order
19 void (*func)(const REAL32*, REAL32*, unsigned int);
20};
21
22
23// user func for evaluate having order
24inline
26
27 REAL32* aptr = arg->aptr;
28 REAL32* bptr = arg->bptr;
29 void (*func)(const REAL32*, REAL32*, unsigned int) = arg->func;
30
31 unsigned int n_vec = hi - lo;
32
33 func(aptr, bptr, n_vec);
34}
35
36
37// user arg for evaluate NOT having order
38template <class A, class B>
40 A a;
41 B b;
42 const int *tab;
43 void (*func)(const REAL32*, REAL32*,unsigned int);
44};
45
46
47// user func for evaluate NOT having order
48template <class A, class B>
49inline
51
52 A a = arg->a;
53 B b = arg->b;
54 const int *tab = arg->tab;
55 void (*func)(const REAL32*, REAL32*, unsigned int) = arg->func;
56
57
58 for(int j=lo; j < hi; j++) {
59 int i = tab[j];
60
61 REAL32 *aptr =(REAL *)&(a.elem(i).elem(0).elem(0).real());
62 REAL32 *bptr =(REAL *)&(b.elem(i).elem(0).elem(0).real());
63 func(aptr, bptr, 1);
64 }
65
66}
67
68
69
70
71#endif
float REAL32
REAL32 REAL
void unordered_sse_spin_project_evaluate_function(int lo, int hi, int myId, unordered_sse_spin_project_user_arg< A, B > *arg)
void ordered_sse_spin_project_evaluate_function(int lo, int hi, int myId, ordered_sse_spin_project_user_arg *arg)
void(* func)(const REAL32 *, REAL32 *, unsigned int)
void(* func)(const REAL32 *, REAL32 *, unsigned int)