what is difference between *(B*)(&A)
and (B)A
I'm using simd codes. but I confront problem.
I couldn't cast my own vector4
type to __m128
So I did like this
this works well
#define XMM128Float(VECTOR4FLOAT) *(__m128*)(&VECTOR4FLOAT)
Vector4<float> vec4{};
XMM128Float(&vec4) = _mm_mul_ps(XMM128Float(*this), XMM128Float(*this));
I wanna know why (__m128)vec4
doesn't works....
What is difference between them.
#define XMM128Float(VECTOR4FLOAT) *(__m128*)(&VECTOR4FLOAT)
template <>
[[nodiscard]] inline SIMD_CONSTEXPR auto Vector<4, float>::sqrMagnitude() const noexcept
{
Vector<4, float> Result;
XMM128Float(Result) = _mm_mul_ps(XMM128Float(*this), XMM128Float(*this));
return Result.x + Result.y + Result.z + Result.w;
}
I wrote my SIMD function like this.
i'm using MS BUILD 16 Compiler