10#ifndef QDP_SCALARSITE_SSE_BLAS_DOUBLE_H
11#define QDP_SCALARSITE_SSE_BLAS_DOUBLE_H
89 int total_n_4vec = s.
end()-s.
start()+1;
143 REAL64 ar = -( a.
elem().elem().elem().elem());
149 int total_n_4vec = s.
end()-s.
start()+1;
215 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
231 int total_n_4vec = s.
end()-s.
start()+1;
314 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
409 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
426 int total_n_4vec = s.
end()-s.
start()+1;
502 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
522 int total_n_4vec = s.
end()-s.
start()+1;
598 int total_n_4vec = s.
end()-s.
start()+1;
656 REAL64 ar = -( a.
elem().elem().elem().elem());
663 int total_n_4vec = s.
end()-s.
start()+1;
729 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
747 int total_n_4vec = s.
end()-s.
start()+1;
829 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
846 int total_n_4vec = s.
end()-s.
start()+1;
924 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
942 int total_n_4vec = s.
end()-s.
start()+1;
1020 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
1041 int total_n_4vec = s.
end()-s.
start()+1;
1043 if( zptr == yptr ) {
1105 cout <<
"BJ: v+v " << endl;
1122 int total_n_4vec = s.
end()-s.
start()+1;
1124 if( zptr == yptr ) {
1186 cout <<
"BJ: v-v " << endl;
1202 int total_n_4vec = s.
end()-s.
start()+1;
1204 if( zptr == yptr ) {
1268 cout <<
"BJ: v = a*v " << endl;
1290 int n_4vec = (s.
end()-s.
start()+1);
1291 vscal4(zptr, aptr, xptr, n_4vec);
1312 vscal4(zptr, aptr, xptr, 1);
1331 cout <<
"BJ: v = v*a " << endl;
1344 int total_n_4vec = s.
end()-s.
start()+1;
1403 int total_n_4vec = s.
end()-s.
start()+1;
1462 int total_n_4vec = s.
end()-s.
start()+1;
1525 int total_n_4vec = s.
end()-s.
start()+1;
1589 int total_n_4vec = s.
end()-s.
start()+1;
1657 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
1658 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
1681 int total_n_4vec = s.
end()-s.
start()+1;
1683 if( zptr == yptr ) {
1773 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1774 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1799 int total_n_4vec = s.
end()-s.
start()+1;
1801 if( zptr == yptr ) {
1890 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1893 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1920 int total_n_4vec = s.
end()-s.
start()+1;
1922 if( zptr == yptr ) {
2007 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
2008 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
2031 int total_n_4vec = s.
end()-s.
start()+1;
2033 if( zptr == yptr ) {
2118 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
2119 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
2143 int total_n_4vec = s.
end()-s.
start()+1;
2145 if( zptr == yptr ) {
2235 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
2236 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
2261 int total_n_4vec = s.
end()-s.
start()+1;
2263 if( zptr == yptr ) {
2354 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
2357 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
2384 int total_n_4vec = s.
end()-s.
start()+1;
2386 if( zptr == yptr ) {
2471 const BN &mulNode1 =
static_cast<const BN&
> (rhs.expression().left());
2472 const BN &mulNode2 =
static_cast<const BN&
> (rhs.expression().right());
2496 int total_n_4vec = s.
end()-s.
start()+1;
2498 if( zptr == yptr ) {
2585 const REAL64 *s1ptr = &(s1.elem(s.
start()).elem(0).elem(0).real());
2590 int n_4vec = (s.
end() - s.
start() + 1);
2606 REAL64* s1ptr = (
REAL64 *)&(s1.elem(i).elem(0).elem(0).real());
2626 int n4vec =
all.end()-
all.start()+1;
2628 arg.
vptr = (
REAL64*)&(s1.elem(
all.start()).elem(0).elem(0).real());
2645 int n_4vec = (
all.end() -
all.start() + 1);
2646 const REAL64 *s1ptr = &(s1.elem(
all.start()).elem(0).elem(0).real());
2669 int n4vec =
all.end()-
all.start()+1;
2670 arg.
xptr = (
REAL64*)&(v1.elem(
all.start()).elem(0).elem(0).real());
2671 arg.
yptr = (
REAL64*)&(v2.elem(
all.start()).elem(0).elem(0).real());
2689 lprod.elem().elem().elem().real() = ip[0];
2690 lprod.elem().elem().elem().imag() = ip[1];
2704 unsigned long n_4vec = (
all.end() -
all.start() + 1);
2708 (
REAL64 *)&(v1.elem(
all.start()).elem(0).elem(0).real()),
2709 (
REAL64 *)&(v2.elem(
all.start()).elem(0).elem(0).real()),
2717 lprod.elem().elem().elem().real() = ip[0];
2718 lprod.elem().elem().elem().imag() = ip[1];
2758 lprod.elem().elem().elem().real() = ip[0];
2759 lprod.elem().elem().elem().imag() = ip[1];
2768 unsigned long n_4vec = (s.
end() - s.
start() + 1);
2770 (
REAL64 *)&(v1.elem(s.
start()).elem(0).elem(0).real()),
2771 (
REAL64 *)&(v2.elem(s.
start()).elem(0).elem(0).real()),
2792 (
REAL64 *)&(v1.elem(i).elem(0).elem(0).real()),
2793 (
REAL64 *)&(v2.elem(i).elem(0).elem(0).real()),
2802 lprod.elem().elem().elem().real() = ip[0];
2803 lprod.elem().elem().elem().imag() = ip[1];
2820 QDPIO::cout <<
"BJ: innerProductReal all" << endl;
2830 unsigned long n_4vec = (
all.end() -
all.start() + 1);
2834 (
REAL64 *)&(v1.elem(
all.start()).elem(0).elem(0).real()),
2835 (
REAL64 *)&(v2.elem(
all.start()).elem(0).elem(0).real()),
2843 lprod.elem().elem().elem().elem() = ip_re;
2868 unsigned long n_4vec = (s.
end() - s.
start() + 1);
2870 (
REAL64 *)&(v1.elem(s.
start()).elem(0).elem(0).real()),
2871 (
REAL64 *)&(v2.elem(s.
start()).elem(0).elem(0).real()),
2875 lprod.elem().elem().elem().elem() = ip_re;
2884 REAL64 ip_re=0, ip_re_tmp;
2893 (
REAL64 *)&(v1.elem(i).elem(0).elem(0).real()),
2894 (
REAL64 *)&(v2.elem(i).elem(0).elem(0).real()),
2900 lprod.elem().elem().elem().elem() = ip_re;
2911 QDPIO::cout <<
"Using SSE multi1d sumsq all" << endl;
2914 int n_4vec = (
all.end() -
all.start() + 1);
2916 for(
int n=0; n < s1.size(); ++n)
2918 const REAL64* s1ptr = &(s1[n].elem(
all.start()).elem(0).elem(0).real());
2939 QDPIO::cout <<
"BJ: multi1d innerProduct all" << endl;
2952 unsigned long n_4vec = (
all.end() -
all.start() + 1);
2954 for(
int n=0; n < v1.size(); ++n)
2962 (
REAL64 *)&(v1[n].elem(
all.start()).elem(0).elem(0).real()),
2963 (
REAL64 *)&(v2[n].elem(
all.start()).elem(0).elem(0).real()),
2974 lprod.elem().elem().elem().real() = ip[0];
2975 lprod.elem().elem().elem().imag() = ip[1];
2991 QDPIO::cout <<
"BJ: innerProductReal(multi1d) all" << endl;
3001 unsigned long n_4vec = (
all.end() -
all.start() + 1);
3003 for(
int n=0; n < v1.size(); ++n)
3009 (
REAL64 *)&(v1[n].elem(
all.start()).elem(0).elem(0).real()),
3010 (
REAL64 *)&(v2[n].elem(
all.start()).elem(0).elem(0).real()),
3021 lprod.elem().elem().elem().elem() = ip_re;
Outer grid Scalar class */.
Primitive spin Vector class.
Expression class for QDP.
QDPType - major type class/container for all QDP objects.
Subsets - controls how lattices are looped.
const multi1d< int > & siteTable() const
bool hasOrderedRep() const
Container for a multi-dimensional 1D array.
const T * slice() const
Return ref to a column slice.
BinaryReturn< C1, C2, FnInnerProductReal >::Type_t innerProductReal(const QDPType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
OScalar = innerProductReal(adj(source1)*source2).
UnaryReturn< C, FnNorm2 >::Type_t norm2(const QDPType< T, C > &s1)
OScalar = norm2(trace(adj(source)*source)).
BinaryReturn< C1, C2, FnInnerProduct >::Type_t innerProduct(const QDPType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
OScalar = innerProduct(adj(source1)*source2).
void evaluate(OLattice< DCol > &d, const OpAssign &op, const QDPExpr< BinaryNode< OpMultiply, Reference< QDPType< DCol, OLattice< DCol > > >, Reference< QDPType< DCol, OLattice< DCol > > > >, OLattice< DCol > > &rhs, const Subset &s)
Subset all
Default all subset.
StandardOutputStream cout
void globalSum(T &dest)
Sum across all nodes.
void globalSumArray(unsigned int *dest, int len)
Wrapper to get a functional unsigned global sum.
REAL64 * innerProd_results
Yet another random number generator.
void unordered_sse_vaxOpbyz4_double_evaluate_function(int lo, int hi, int myId, unordered_sse_vaxOpbyz4_double_user_arg *a)
MakeReturn< UnaryNode< FnReal, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnReal >::Type_t >::Expression_t real(const QDPExpr< T1, C1 > &l)
void dispatch_to_threads(int numSiteTable, Arg a, void(*func)(int, int, int, Arg *))
PScalar< PScalar< RScalar< REAL64 > > > DScal
void vaxpy4(REAL64 *Out, REAL64 *scalep, REAL64 *InScale, int n_4spin)
void vscal4(REAL64 *z, REAL64 *a, REAL64 *x, int n_4spin)
void vaxpby4(REAL64 *y, REAL64 *a, REAL64 *x, REAL64 *b, int n_4vec)
void ordered_sse_vaxOpy4_double_evaluate_function(int lo, int hi, int myId, ordered_sse_vaxOpy4_double_user_arg *a)
void vaxmyz4(REAL64 *Out, REAL64 *scalep, REAL64 *InScale, REAL64 *Add, int n_4vec)
void vaxmy4(REAL64 *Out, REAL64 *scalep, REAL64 *InScale, int n_4spin)
void ordered_sse_vaxOpyz4_double_evaluate_function(int lo, int hi, int myId, ordered_sse_vaxOpyz4_double_user_arg *a)
void ordered_sse_vscal4_double_evaluate_function(int lo, int hi, int myId, ordered_sse_vscal4_double_user_arg *a)
void ordered_sse_vaxOpby4_double_evaluate_function(int lo, int hi, int myId, ordered_sse_vaxOpby4_double_user_arg *a)
void ordered_sse_vaxOpbyz4_double_evaluate_function(int lo, int hi, int myId, ordered_sse_vaxOpbyz4_double_user_arg *a)
void local_vcdot_real4(REAL64 *sum, REAL64 *y, REAL64 *x, int n_4spin)
void local_sumsq4(REAL64 *sum, REAL64 *vecptr, int n_4spin)
void vaxpyz4(REAL64 *Out, REAL64 *scalep, REAL64 *InScale, REAL64 *Add, int n_4vec)
void local_vcdot4(REAL64 *sum, REAL64 *y, REAL64 *x, int n_4spin)
void unordered_sse_vaxOpyz4_double_evaluate_function(int lo, int hi, int myId, unordered_sse_vaxOpyz4_double_user_arg *a)
void vaxmby4(REAL64 *y, REAL64 *a, REAL64 *x, REAL64 *b, int n_4vec)
void ordered_inner_product_double_func(int lo, int hi, int myId, ordered_inner_product_double_user_arg *a)
void unordered_sse_vaxOpy4_double_evaluate_function(int lo, int hi, int myId, unordered_sse_vaxOpy4_double_user_arg *a)
void vaxpbyz4(REAL64 *z, REAL64 *a, REAL64 *x, REAL64 *b, REAL64 *y, int n_4vec)
PSpinVector< PColorVector< RComplex< REAL64 >, 3 >, 4 > DVec
void unordered_sse_vscal4_double_evaluate_function(int lo, int hi, int myId, unordered_sse_vscal4_double_user_arg *a)
void vaxmbyz4(REAL64 *z, REAL64 *a, REAL64 *x, REAL64 *b, REAL64 *y, int n_4vec)
void ordered_norm_double_func(int lo, int hi, int myId, ordered_norm_double_user_arg *a)
void unordered_sse_vaxOpy4_double_evaluate_function(int lo, int hi, int myId, unordered_sse_vaxOpy4_double_user_arg *a)
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
Generic Scalar VAXPY routine.
void(* func)(REAL64 *, REAL64 *, REAL64 *, int)
void(* func)(REAL64 *, REAL64 *, int)
const OLattice< DVec > & y
const OLattice< DVec > & x
const OLattice< DVec > & x