00001
00002
00004
00005
00006
00007
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef CG_SOLVER_SSE_H
00023 #define CG_SOLVER_SSE_H
00024
00025 #include "CG_SOLVER.h"
00026 #include <xmmintrin.h>
00027
00031 class CG_SOLVER_SSE : public CG_SOLVER
00032 {
00033 public:
00035 CG_SOLVER_SSE(int maxDepth, int iterations = 10, int digits = 1);
00037 ~CG_SOLVER_SSE();
00038
00040 virtual int solve(list<CELL*> cells);
00041
00042 private:
00044 virtual void reallocate();
00045
00046
00047 inline float dotSSE(float* x, float* y);
00048 inline void saxpySSE(float a, float* x, float* y);
00049 inline void saypxSSE(float a, float* x, float* y);
00050 inline float maxSSE(float* x);
00051 inline void addSSE(float* x, float* y);
00052 inline void multiplySSE(float* x, float* y);
00053 inline void multiplySSE(float* x, float* y, float* z);
00054 inline void multiplySubtractSSE(float* w, float* x, float* y, float* z);
00055 inline void setSSE(float* x, float val);
00056 inline void wipeSSE(float* x);
00057 inline void copySSE(float* x, float* y);
00058 };
00059
00060 #endif