Align(16) class Vector { private: m128 v; public: // Constructors Vector() : v(_mm_setzero_ps()) {}; Vector(const m128 vector) : v(vector) {}; Vector(const Float4 &vector) : v(_mm_loadu_ps(&vector.x)) {}; Vector(const Float x, const Float y, const Float z, const Float w) : v(_mm_set_ps(x, y, z, w)) {}; // Register compatibility Vector operator=(const m128 &vector) { v = vector; return *this; } operator m128() const { return v; } // Float4 compatibility Vector operator=(const Float4 &vector) { v = _mm_loadu_ps(&vector.x); return *this; } operator Float4() const { Float4 a; _mm_storeu_ps(&a.x, v); return a; } };