CG_SOLVER_SSE.h

00001 
00002 // File : CG_SOLVER_SSE.h
00004 //
00005 // Copyright 2006
00006 // The University of North Carolina at Chapel Hill
00007 // 
00009 //
00010 // Permission to use, copy, modify, distribute and sell this software and its 
00011 // documentation for any purpose is hereby granted without fee, provided that 
00012 // the above copyright notice appear in all copies and that both that copyright 
00013 // notice and this permission notice appear in supporting documentation. 
00014 // Binaries may be compiled with this software without any royalties or 
00015 // restrictions. 
00016 //
00017 // The University of North Carolina at Chapel Hill makes no representations 
00018 // about the suitability of this software for any purpose. It is provided 
00019 // "as is" without express or implied warranty.
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   // SSE linear algebra operators
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

Generated on Wed Oct 25 03:19:42 2006 for Lumos by  doxygen 1.4.6