MCPcopy Index your code
hub / github.com/HandmadeMath/HandmadeMath / HMM_LinearCombineV4M4

Function HMM_LinearCombineV4M4

HandmadeMath.h:1076–1109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1074
1075COVERAGE(HMM_LinearCombineV4M4, 1)
1076static inline HMM_Vec4 HMM_LinearCombineV4M4(HMM_Vec4 Left, HMM_Mat4 Right)
1077{
1078 ASSERT_COVERED(HMM_LinearCombineV4M4);
1079
1080 HMM_Vec4 Result;
1081#ifdef HANDMADE_MATH__USE_SSE
1082 Result.SSE = _mm_mul_ps(_mm_shuffle_ps(Left.SSE, Left.SSE, 0x00), Right.Columns[0].SSE);
1083 Result.SSE = _mm_add_ps(Result.SSE, _mm_mul_ps(_mm_shuffle_ps(Left.SSE, Left.SSE, 0x55), Right.Columns[1].SSE));
1084 Result.SSE = _mm_add_ps(Result.SSE, _mm_mul_ps(_mm_shuffle_ps(Left.SSE, Left.SSE, 0xaa), Right.Columns[2].SSE));
1085 Result.SSE = _mm_add_ps(Result.SSE, _mm_mul_ps(_mm_shuffle_ps(Left.SSE, Left.SSE, 0xff), Right.Columns[3].SSE));
1086#else
1087 Result.X = Left.Elements[0] * Right.Columns[0].X;
1088 Result.Y = Left.Elements[0] * Right.Columns[0].Y;
1089 Result.Z = Left.Elements[0] * Right.Columns[0].Z;
1090 Result.W = Left.Elements[0] * Right.Columns[0].W;
1091
1092 Result.X += Left.Elements[1] * Right.Columns[1].X;
1093 Result.Y += Left.Elements[1] * Right.Columns[1].Y;
1094 Result.Z += Left.Elements[1] * Right.Columns[1].Z;
1095 Result.W += Left.Elements[1] * Right.Columns[1].W;
1096
1097 Result.X += Left.Elements[2] * Right.Columns[2].X;
1098 Result.Y += Left.Elements[2] * Right.Columns[2].Y;
1099 Result.Z += Left.Elements[2] * Right.Columns[2].Z;
1100 Result.W += Left.Elements[2] * Right.Columns[2].W;
1101
1102 Result.X += Left.Elements[3] * Right.Columns[3].X;
1103 Result.Y += Left.Elements[3] * Right.Columns[3].Y;
1104 Result.Z += Left.Elements[3] * Right.Columns[3].Z;
1105 Result.W += Left.Elements[3] * Right.Columns[3].W;
1106#endif
1107
1108 return Result;
1109}
1110
1111/*
1112 * 2x2 Matrices

Callers 3

HMM_MulM4Function · 0.85
HMM_MulM4V4Function · 0.85
TESTFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected