207 {
209 {
210 }
212 {
214 Sse.
Store(&value1.M11,
Sse.
Add(
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 0),
Sse.
LoadVector128(&value2.M11)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 85),
Sse.
LoadVector128(&value2.M21))),
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 170),
Sse.
LoadVector128(&value2.M31)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector,
byte.MaxValue),
Sse.
LoadVector128(&value2.M41)))));
216 Sse.
Store(&value1.M21,
Sse.
Add(
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 0),
Sse.
LoadVector128(&value2.M11)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 85),
Sse.
LoadVector128(&value2.M21))),
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 170),
Sse.
LoadVector128(&value2.M31)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector,
byte.MaxValue),
Sse.
LoadVector128(&value2.M41)))));
218 Sse.
Store(&value1.M31,
Sse.
Add(
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 0),
Sse.
LoadVector128(&value2.M11)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 85),
Sse.
LoadVector128(&value2.M21))),
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 170),
Sse.
LoadVector128(&value2.M31)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector,
byte.MaxValue),
Sse.
LoadVector128(&value2.M41)))));
220 Sse.
Store(&value1.M41,
Sse.
Add(
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 0),
Sse.
LoadVector128(&value2.M11)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 85),
Sse.
LoadVector128(&value2.M21))),
Sse.
Add(
Sse.
Multiply(
Sse.
Shuffle(vector, vector, 170),
Sse.
LoadVector128(&value2.M31)),
Sse.
Multiply(
Sse.
Shuffle(vector, vector,
byte.MaxValue),
Sse.
LoadVector128(&value2.M41)))));
221 return value1;
222 }
224 result.M11 = value1.M11 * value2.M11 + value1.M12 * value2.M21 + value1.M13 * value2.M31 + value1.M14 * value2.M41;
225 result.M12 = value1.M11 * value2.M12 + value1.M12 * value2.M22 + value1.M13 * value2.M32 + value1.M14 * value2.M42;
226 result.M13 = value1.M11 * value2.M13 + value1.M12 * value2.M23 + value1.M13 * value2.M33 + value1.M14 * value2.M43;
227 result.M14 = value1.M11 * value2.M14 + value1.M12 * value2.M24 + value1.M13 * value2.M34 + value1.M14 * value2.M44;
228 result.M21 = value1.M21 * value2.M11 + value1.M22 * value2.M21 + value1.M23 * value2.M31 + value1.M24 * value2.M41;
229 result.M22 = value1.M21 * value2.M12 + value1.M22 * value2.M22 + value1.M23 * value2.M32 + value1.M24 * value2.M42;
230 result.M23 = value1.M21 * value2.M13 + value1.M22 * value2.M23 + value1.M23 * value2.M33 + value1.M24 * value2.M43;
231 result.M24 = value1.M21 * value2.M14 + value1.M22 * value2.M24 + value1.M23 * value2.M34 + value1.M24 * value2.M44;
232 result.M31 = value1.M31 * value2.M11 + value1.M32 * value2.M21 + value1.M33 * value2.M31 + value1.M34 * value2.M41;
233 result.M32 = value1.M31 * value2.M12 + value1.M32 * value2.M22 + value1.M33 * value2.M32 + value1.M34 * value2.M42;
234 result.M33 = value1.M31 * value2.M13 + value1.M32 * value2.M23 + value1.M33 * value2.M33 + value1.M34 * value2.M43;
235 result.M34 = value1.M31 * value2.M14 + value1.M32 * value2.M24 + value1.M33 * value2.M34 + value1.M34 * value2.M44;
236 result.M41 = value1.M41 * value2.M11 + value1.M42 * value2.M21 + value1.M43 * value2.M31 + value1.M44 * value2.M41;
237 result.M42 = value1.M41 * value2.M12 + value1.M42 * value2.M22 + value1.M43 * value2.M32 + value1.M44 * value2.M42;
238 result.M43 = value1.M41 * value2.M13 + value1.M42 * value2.M23 + value1.M43 * value2.M33 + value1.M44 * value2.M43;
239 result.M44 = value1.M41 * value2.M14 + value1.M42 * value2.M24 + value1.M43 * value2.M34 + value1.M44 * value2.M44;
240 return result;
241 }
static new bool IsSupported
static unsafe void Store(float *address, Vector128< float > source)
static new bool IsSupported
static unsafe Vector128< float > LoadVector128(float *address)
static Vector128< float > Shuffle(Vector128< float > left, Vector128< float > right, byte control)
static Vector128< float > Multiply(Vector128< float > left, Vector128< float > right)
static Vector128< float > Add(Vector128< float > left, Vector128< float > right)
Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)