05-08-2014, 02:04 AM
I just thought of a rediculous way of doing c++ and SSE in one codebase with efficient vector ops. Since c++ template classes can be equivalent to S-Expressions.
This can then be inlined down to a simple c++ maths equation or sequence of SSE ops and the code using it would look like:
Don't think I can implement it immediately as I have major exams coming up but it would be an interesting summer project.
Code:
template<class T, class U>
class VectorAdd
{
VectorAdd( T a_x, U a_y) :
m_x(a_x),m_y(a_y)
{
}
T m_x;
U m_y;
template<class V>
Vector<V> Evaluate()
{
Vector<V> z;
for(int i =0; i < m_x.size(); i++)
{
z[i] = Evaluate(i)
}
return z;
}
template<class V>
V Evaluate(int i)
{
return m_x.Evalute(i) + m_y.Evaluate(i)
}
}
Code:
Vector<int> x;
Vector<int> y;
Vector<int> z = VectorAdd(VectorMultiply(x,y),y);