daily update on 20230830
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -58,7 +58,7 @@ namespace StgSharp
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit, Size = 12 * sizeof(float), Pack = 16)]
|
||||
internal struct Mat2
|
||||
internal struct Mat2 : IEquatable<Mat2>
|
||||
{
|
||||
|
||||
[FieldOffset(0)] internal Vector4 colum0;
|
||||
@@ -84,21 +84,28 @@ namespace StgSharp.Math
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static Mat2 Add(Mat2 left, Mat2 right)
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return new Mat2(
|
||||
left.colum0 + right.colum0,
|
||||
left.colum1 + right.colum1
|
||||
);
|
||||
return obj is Mat2 mat && Equals(mat);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static Mat2 Sub(Mat2 left, Mat2 right)
|
||||
public bool Equals(Mat2 other)
|
||||
{
|
||||
return new Mat2(
|
||||
left.colum0 - right.colum0,
|
||||
left.colum1 - right.colum1
|
||||
);
|
||||
return colum0.Equals(other.colum0) &&
|
||||
colum1.Equals(other.colum1);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator ==(Mat2 left, Mat2 right)
|
||||
{
|
||||
return left.Equals(right);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator !=(Mat2 left, Mat2 right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using StgSharp.Math;
|
||||
using StgSharp.StgSharp.Math;
|
||||
using System;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp
|
||||
@@ -9,6 +9,14 @@ namespace StgSharp
|
||||
internal static unsafe partial class internalIO
|
||||
{
|
||||
|
||||
#region det
|
||||
|
||||
[DllImport("StgsharpGraphic", EntryPoint = "det_mat3",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe float det_mat3(Mat3* mat);
|
||||
|
||||
#endregion
|
||||
|
||||
#region transpose
|
||||
|
||||
@@ -34,7 +42,7 @@ namespace StgSharp
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit, Size = 12 * sizeof(float), Pack = 16)]
|
||||
internal struct Mat3
|
||||
internal struct Mat3 : IEquatable<Mat3>
|
||||
{
|
||||
|
||||
[FieldOffset(0)] internal Vector4 colum0;
|
||||
@@ -56,4 +64,29 @@ namespace StgSharp.Math
|
||||
[FieldOffset(10 * sizeof(float))] internal float m22;
|
||||
[FieldOffset(11 * sizeof(float))] internal float m32;
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is Mat3 mat && Equals(mat);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public bool Equals(Mat3 other)
|
||||
{
|
||||
return colum0.Equals(other.colum0) &&
|
||||
colum1.Equals(other.colum1) &&
|
||||
colum2.Equals(other.colum2);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator ==(Mat3 left, Mat3 right)
|
||||
{
|
||||
return left.Equals(right);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator !=(Mat3 left, Mat3 right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,68 +10,6 @@ namespace StgSharp
|
||||
internal static unsafe partial class internalIO
|
||||
{
|
||||
|
||||
#region add_mat4
|
||||
|
||||
#if NET7_0_OR_GREATER
|
||||
#else
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "addmat4",
|
||||
#endif
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe Mat4* add_mat4(
|
||||
ref Mat4 mat1, ref Mat4 Mat2);
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "addmat4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe Mat4* add_mat4(
|
||||
Mat4* mat1, Mat4* Mat2);
|
||||
|
||||
#endregion
|
||||
|
||||
#region sub_mat4
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "sub_mat4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe extern Mat4* sub_mat4(
|
||||
ref Mat4 mat1, ref Mat4 Mat2);
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "Mat4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe extern Mat4* sub_mat4(
|
||||
Mat4* mat1, Mat4* Mat2);
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region mul
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mul_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe extern Mat4* mul_const(
|
||||
Mat4* mat, float value);
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mul_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe extern Mat4* mul_const(
|
||||
ref Mat4 mat, float value);
|
||||
|
||||
[DllImport("StgsharpGraphic", EntryPoint = "mul_4_2",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe Mat2* mul_4_2(Mat4* left, Mat2* right);
|
||||
|
||||
[DllImport("StgsharpGraphic", EntryPoint = "mul_4_4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe Mat4* mul_4_4(Mat4* left, Mat4* right);
|
||||
|
||||
#endregion
|
||||
|
||||
#region transpose
|
||||
|
||||
[DllImport("StgsharpGraphic", EntryPoint = "transpose4to4",
|
||||
@@ -100,10 +38,6 @@ namespace StgSharp
|
||||
|
||||
#region deinit_mat4
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinit_mat4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern void deinit_mat4(ref Mat4 mat);
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinit_mat4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
@@ -121,7 +55,7 @@ namespace StgSharp.Math
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 16 * sizeof(float))]
|
||||
public struct Mat4
|
||||
internal struct Mat4 : IEquatable<Mat4>
|
||||
{
|
||||
[FieldOffset(0)] internal Vector4 colum0;
|
||||
[FieldOffset(16)] internal Vector4 colum1;
|
||||
@@ -162,27 +96,30 @@ namespace StgSharp.Math
|
||||
this.colum3 = colum3;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static Mat4 add(Mat4 left, Mat4 right)
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return new Mat4(
|
||||
left.colum0 + right.colum0,
|
||||
left.colum1 + right.colum1,
|
||||
left.colum2 + right.colum2,
|
||||
left.colum3 + right.colum3
|
||||
);
|
||||
return obj is Mat4 mat && Equals(mat);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static Mat4 sub(Mat4 left, Mat4 right)
|
||||
public bool Equals(Mat4 other)
|
||||
{
|
||||
return new Mat4(
|
||||
left.colum0 - right.colum0,
|
||||
left.colum1 - right.colum1,
|
||||
left.colum2 - right.colum2,
|
||||
left.colum3 - right.colum3
|
||||
);
|
||||
return colum0.Equals(other.colum0) &&
|
||||
colum1.Equals(other.colum1) &&
|
||||
colum2.Equals(other.colum2) &&
|
||||
colum3.Equals(other.colum3);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator ==(Mat4 left, Mat4 right)
|
||||
{
|
||||
return left.Equals(right);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static bool operator !=(Mat4 left, Mat4 right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,6 +144,11 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public float Det()
|
||||
{
|
||||
return mat.m00 * mat.m11 - mat.m10 * mat.m01;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -91,6 +91,15 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe float Det()
|
||||
{
|
||||
fixed (Mat3* mat = &this.mat)
|
||||
{
|
||||
return internalIO.det_mat3(mat);
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Matrix3x3 operator +(Matrix3x3 left, Matrix3x3 right)
|
||||
{
|
||||
@@ -189,10 +198,5 @@ namespace StgSharp.Math
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +206,13 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(
|
||||
mat.colum0.GetHashCode(),
|
||||
mat.colum1.GetHashCode()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -6,7 +7,7 @@ using System.Runtime.InteropServices;
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit, Size = 7*4*sizeof(float)+ sizeof(bool),Pack =16 )]
|
||||
public struct Matrix4x3
|
||||
public struct Matrix4x3 : IEquatable<Matrix4x3>
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
internal Mat3 mat;
|
||||
@@ -97,6 +98,17 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is Matrix4x3 x && Equals(x);
|
||||
}
|
||||
|
||||
public bool Equals(Matrix4x3 other)
|
||||
{
|
||||
return EqualityComparer<Mat3>.Default.Equals(mat, other.mat);
|
||||
}
|
||||
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Matrix4x3 operator +(Matrix4x3 left, Matrix4x3 right)
|
||||
{
|
||||
@@ -118,6 +130,16 @@ namespace StgSharp.Math
|
||||
|
||||
}
|
||||
|
||||
public static bool operator ==(Matrix4x3 left, Matrix4x3 right)
|
||||
{
|
||||
return left.Equals(right);
|
||||
}
|
||||
|
||||
public static bool operator !=(Matrix4x3 left, Matrix4x3 right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static Matrix4x3 operator *(Matrix4x3 mat, float value)
|
||||
{
|
||||
@@ -210,6 +232,14 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(
|
||||
mat.colum0.GetHashCode(),
|
||||
mat.colum1.GetHashCode(),
|
||||
mat.colum2.GetHashCode()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,9 +3,6 @@ using System.Drawing;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
|
||||
@@ -103,7 +100,10 @@ namespace StgSharp.Math
|
||||
public static unsafe Matrix4x4 operator +(Matrix4x4 left, Matrix4x4 right)
|
||||
{
|
||||
return new Matrix4x4(
|
||||
Mat4.add( right.mat,left.mat)
|
||||
right.mat.colum0 + left.mat.colum0,
|
||||
right.mat.colum1 + left.mat.colum1,
|
||||
right.mat.colum2 + left.mat.colum2,
|
||||
right.mat.colum3 + left.mat.colum3
|
||||
);
|
||||
}
|
||||
|
||||
@@ -111,7 +111,10 @@ namespace StgSharp.Math
|
||||
public static unsafe Matrix4x4 operator -(Matrix4x4 left, Matrix4x4 right)
|
||||
{
|
||||
return new Matrix4x4(
|
||||
Mat4.sub(right.mat, left.mat)
|
||||
right.mat.colum0-left.mat.colum0,
|
||||
right.mat.colum1-left.mat.colum1,
|
||||
right.mat.colum2-left.mat.colum2,
|
||||
right.mat.colum3-left.mat.colum3
|
||||
);
|
||||
}
|
||||
|
||||
@@ -196,7 +199,15 @@ namespace StgSharp.Math
|
||||
);
|
||||
}
|
||||
|
||||
public static bool operator ==(Matrix4x4 left, Matrix4x4 right)
|
||||
{
|
||||
return left.Equals(right);
|
||||
}
|
||||
|
||||
public static bool operator !=(Matrix4x4 left, Matrix4x4 right)
|
||||
{
|
||||
return !(left == right);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public unsafe float Det()
|
||||
@@ -223,21 +234,32 @@ namespace StgSharp.Math
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
InternalTranspose();
|
||||
return
|
||||
$"{transpose.colum0}\n" +
|
||||
$"{transpose.colum1}\n" +
|
||||
$"{transpose.colum2}\n" +
|
||||
$"{transpose.colum3}";
|
||||
|
||||
return obj is Matrix4x4 x && Equals(x);
|
||||
}
|
||||
|
||||
public bool Equals(Matrix4x4 other)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return mat.Equals(other.mat);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(
|
||||
mat.colum0.GetHashCode(),
|
||||
mat.colum1.GetHashCode(),
|
||||
mat.colum2.GetHashCode(),
|
||||
mat.colum3.GetHashCode()
|
||||
);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
InternalTranspose();
|
||||
return $"{transpose.colum0}{transpose.colum1}{transpose.colum2}{transpose.colum3}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5
-117
@@ -1,6 +1,7 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Numerics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
|
||||
@@ -12,127 +13,14 @@ namespace StgSharp
|
||||
|
||||
internal unsafe static void Main(string[] args)
|
||||
{
|
||||
|
||||
/**/
|
||||
Matrix4x4 matrix = new Matrix4x4(
|
||||
1,1,-1,2,
|
||||
-1,-1,-4,1,
|
||||
2,4,-6,1,
|
||||
1,2,4,2
|
||||
Matrix3x3 matrix = new Matrix3x3(
|
||||
1,2,3,
|
||||
4,5,6,
|
||||
7,8,9
|
||||
);
|
||||
|
||||
Console.WriteLine(matrix.Det());
|
||||
|
||||
/**/
|
||||
System.Numerics.Matrix4x4 m = new System.Numerics.Matrix4x4(
|
||||
1, 1, -1, 2,
|
||||
-1, -1, -4, 1,
|
||||
2, 4, -6, 1,
|
||||
1, 2, 4, 2
|
||||
);
|
||||
|
||||
Console.WriteLine(m.GetDeterminant());
|
||||
/**/
|
||||
int cycle = 1000;
|
||||
int time = 10000;
|
||||
|
||||
|
||||
|
||||
for (int t = 0; t < cycle; t++)
|
||||
{
|
||||
Stopwatch sw = Stopwatch.StartNew();
|
||||
sw.Start();
|
||||
for (int i = 0; i < time; i++)
|
||||
{
|
||||
Matrix4x4 matrix4X4 = new Matrix4x4(
|
||||
1, 1, -1, 2,
|
||||
-1, -1, -4, 1,
|
||||
2, 4, -6, 1,
|
||||
1, 2, 4, 2
|
||||
);
|
||||
}
|
||||
sw.Stop();
|
||||
|
||||
TimeSpan timeSpan = sw.Elapsed;
|
||||
Console.WriteLine(timeSpan.TotalMilliseconds);
|
||||
|
||||
Stopwatch sw2 = new Stopwatch();
|
||||
sw2.Start();
|
||||
for (int i = 0; i < time; i++)
|
||||
{
|
||||
System.Numerics.Matrix4x4 test = new System.Numerics.Matrix4x4(
|
||||
1, 1, -1, 2,
|
||||
-1, -1, -4, 1,
|
||||
2, 4, -6, 1,
|
||||
1, 2, 4, 2
|
||||
);
|
||||
}
|
||||
sw2.Stop();
|
||||
|
||||
TimeSpan timeSpan1 = sw2.Elapsed;
|
||||
Console.WriteLine(timeSpan1.TotalMilliseconds);
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**/
|
||||
|
||||
/*
|
||||
System.Numerics.Matrix4x4 smt1 = new System.Numerics.Matrix4x4(
|
||||
1,2,3,4,
|
||||
5,6,7,8,
|
||||
1,2,3,4,
|
||||
5,6,7,8
|
||||
);
|
||||
|
||||
Matrix4x4 gmt1 = new Matrix4x4(
|
||||
1, 2, 3, 4,
|
||||
5, 6, 7, 8,
|
||||
1, 2, 3, 4,
|
||||
5, 6, 7, 8
|
||||
);
|
||||
|
||||
Stopwatch s = new Stopwatch();
|
||||
|
||||
double cycle = 1e6;
|
||||
|
||||
for (int t = 0; t < 1000; t++)
|
||||
{
|
||||
|
||||
s.Reset();
|
||||
s.Start();
|
||||
|
||||
for (int i = 0; i < cycle; i++)
|
||||
{
|
||||
System.Numerics.Matrix4x4 ret = smt1 * smt1;
|
||||
}
|
||||
s.Stop();
|
||||
|
||||
TimeSpan span = s.Elapsed;
|
||||
Console.WriteLine(span.TotalMilliseconds);
|
||||
|
||||
s.Reset();
|
||||
s.Start();
|
||||
|
||||
for (int i = 0; i < cycle; i++)
|
||||
{
|
||||
Matrix4x4 ret = VectorCalc.Multiple(gmt1, gmt1);
|
||||
}
|
||||
s.Stop();
|
||||
|
||||
TimeSpan span1 = s.Elapsed;
|
||||
Console.WriteLine(span1.TotalMilliseconds);
|
||||
|
||||
Console.WriteLine(t);
|
||||
Console.WriteLine();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -134,6 +134,7 @@ SSGC_API __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* targ
|
||||
SSGC_API __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target);
|
||||
SSGC_API __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target);
|
||||
|
||||
SSGC_API _inline float _cdecl det_mat3(matrix3map* mat);
|
||||
SSGC_API __inline float det_mat3_internal(__m128 const c1, __m128 const c2, __m128 const c3);
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -36,7 +36,7 @@ SSGC_API __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* targ
|
||||
target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
|
||||
}
|
||||
|
||||
float det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2)
|
||||
SSGC_API _inline float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2)
|
||||
{
|
||||
|
||||
//let adding row aligned
|
||||
@@ -64,3 +64,12 @@ float det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2)
|
||||
|
||||
return ret.m128_f32[2];
|
||||
}
|
||||
|
||||
SSGC_API _inline float _cdecl det_mat3(matrix3map* mat)
|
||||
{
|
||||
return det_mat3_internal(
|
||||
mat->colum[0],
|
||||
mat->colum[1],
|
||||
mat->colum[2]
|
||||
);
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -5,27 +5,6 @@ include listing.inc
|
||||
INCLUDELIB OLDNAMES
|
||||
|
||||
PUBLIC deinit_mat2
|
||||
PUBLIC transmpose2to4
|
||||
PUBLIC sub_mat2
|
||||
PUBLIC add_mat2
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$sub_mat2 DD imagerel $LN7@sub_mat2
|
||||
DD imagerel $LN7@sub_mat2+67
|
||||
DD imagerel $unwind$sub_mat2
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$add_mat2 DD imagerel $LN7@add_mat2
|
||||
DD imagerel $LN7@add_mat2+67
|
||||
DD imagerel $unwind$add_mat2
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$add_mat2 DQ 00006340a00040a01r ; 8.62672e-309
|
||||
DD 07006320aH
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$sub_mat2 DQ 00006340a00040a01r ; 8.62672e-309
|
||||
DD 07006320aH
|
||||
PUBLIC transpose2to4
|
||||
PUBLIC transpose2to3
|
||||
END
|
||||
|
||||
Binary file not shown.
@@ -4,5 +4,93 @@ include listing.inc
|
||||
|
||||
INCLUDELIB OLDNAMES
|
||||
|
||||
PUBLIC det_mat3
|
||||
PUBLIC det_mat3_internal
|
||||
PUBLIC transpose3to4
|
||||
PUBLIC transpose3to3
|
||||
PUBLIC transpose3to2
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$transpose3to3 DD imagerel $LN4@transpose3
|
||||
DD imagerel $LN4@transpose3+86
|
||||
DD imagerel $unwind$transpose3to3
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$transpose3to3 DQ 00000681700031701r ; 5.65448e-310
|
||||
DD 02204H
|
||||
; Function compile flags: /Ogtpy
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat3.c
|
||||
; COMDAT det_mat3
|
||||
_TEXT SEGMENT
|
||||
mat$ = 8
|
||||
det_mat3 PROC ; COMDAT
|
||||
|
||||
; 70 : return det_mat3_internal(
|
||||
|
||||
00000 0f 10 59 10 movups xmm3, XMMWORD PTR [rcx+16]
|
||||
00004 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32]
|
||||
|
||||
; 43 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
|
||||
|
||||
00008 0f 28 e3 movaps xmm4, xmm3
|
||||
0000b 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H
|
||||
|
||||
; 44 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
|
||||
|
||||
0000f 0f 28 c2 movaps xmm0, xmm2
|
||||
|
||||
; 45 :
|
||||
; 46 : //let sub row aligned
|
||||
; 47 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
|
||||
; 48 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1));
|
||||
; 49 :
|
||||
; 50 : //multple all add row
|
||||
; 51 : __m128 cache = _mm_mul_ps(c0,addc1);
|
||||
|
||||
00012 0f 59 21 mulps xmm4, XMMWORD PTR [rcx]
|
||||
00015 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H
|
||||
00019 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H
|
||||
|
||||
; 52 : cache = _mm_mul_ps(cache,addc2);
|
||||
; 53 :
|
||||
; 54 : //multiple all sub row
|
||||
; 55 : __m128 sub = _mm_mul_ps(c0, subc1);
|
||||
|
||||
0001d 0f 59 19 mulps xmm3, XMMWORD PTR [rcx]
|
||||
00020 0f 59 e0 mulps xmm4, xmm0
|
||||
00023 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H
|
||||
|
||||
; 56 : sub = _mm_mul_ps(sub, subc2);
|
||||
|
||||
00027 0f 59 da mulps xmm3, xmm2
|
||||
|
||||
; 57 :
|
||||
; 58 : //main-corner sub sub-corner
|
||||
; 59 : cache = _mm_sub_ps(cache,sub);
|
||||
|
||||
0002a 0f 5c e3 subps xmm4, xmm3
|
||||
|
||||
; 60 :
|
||||
; 61 : __m128 ret = _mm_hadd_ps(cache,cache); //element 1 add element 2
|
||||
|
||||
0002d 0f 28 c4 movaps xmm0, xmm4
|
||||
00030 f2 0f 7c c4 haddps xmm0, xmm4
|
||||
|
||||
; 62 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
|
||||
|
||||
00034 0f 58 c4 addps xmm0, xmm4
|
||||
|
||||
; 70 : return det_mat3_internal(
|
||||
|
||||
00037 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH
|
||||
|
||||
; 71 : mat->colum[0],
|
||||
; 72 : mat->colum[1],
|
||||
; 73 : mat->colum[2]
|
||||
; 74 : );
|
||||
; 75 : }
|
||||
|
||||
0003b c3 ret 0
|
||||
det_mat3 ENDP
|
||||
_TEXT ENDS
|
||||
END
|
||||
|
||||
Binary file not shown.
@@ -9,11 +9,6 @@ PUBLIC det_mat4
|
||||
PUBLIC transpose4to3
|
||||
PUBLIC transpose4to4
|
||||
PUBLIC transpose4to2
|
||||
PUBLIC mul_4_4
|
||||
PUBLIC mul_4_2
|
||||
PUBLIC mul_const
|
||||
PUBLIC sub_mat4
|
||||
PUBLIC add_mat4
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$det_mat4 DD imagerel $LN12@det_mat4
|
||||
@@ -25,63 +20,6 @@ pdata SEGMENT
|
||||
$pdata$transpose4to3 DD imagerel $LN4@transpose4
|
||||
DD imagerel $LN4@transpose4+80
|
||||
DD imagerel $unwind$transpose4to3
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$mul_4_4 DD imagerel $LN39
|
||||
DD imagerel $LN39+406
|
||||
DD imagerel $unwind$mul_4_4
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$mul_4_2 DD imagerel $LN22
|
||||
DD imagerel $LN22+218
|
||||
DD imagerel $unwind$mul_4_2
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$mul_const DD imagerel $LN15@mul_const
|
||||
DD imagerel $LN15@mul_const+98
|
||||
DD imagerel $unwind$mul_const
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$sub_mat4 DD imagerel $LN7@sub_mat4
|
||||
DD imagerel $LN7@sub_mat4+91
|
||||
DD imagerel $unwind$sub_mat4
|
||||
pdata ENDS
|
||||
; COMDAT pdata
|
||||
pdata SEGMENT
|
||||
$pdata$add_mat4 DD imagerel $LN7@add_mat4
|
||||
DD imagerel $LN7@add_mat4+91
|
||||
DD imagerel $unwind$add_mat4
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$add_mat4 DQ 00006340a00040a01r ; 8.62672e-309
|
||||
DD 07006320aH
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$sub_mat4 DQ 00006340a00040a01r ; 8.62672e-309
|
||||
DD 07006320aH
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$mul_const DQ 00003680b00040b01r ; 4.73721e-309
|
||||
DD 030027206H
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$mul_4_2 DD 040a01H
|
||||
DD 06340aH
|
||||
DD 07006320aH
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$mul_4_4 DD 040a01H
|
||||
DD 06340aH
|
||||
DD 07006320aH
|
||||
xdata ENDS
|
||||
; COMDAT xdata
|
||||
xdata SEGMENT
|
||||
$unwind$transpose4to3 DQ 00000681400031401r ; 5.65385e-310
|
||||
@@ -93,493 +31,4 @@ $unwind$det_mat4 DQ 00000a835000b3501r ; 9.13753e-310
|
||||
DQ 00002881b0001982cr ; 3.52071e-309
|
||||
DQ 00004680e00037816r ; 6.12794e-309
|
||||
DD 0a207H
|
||||
; Function compile flags: /Ogtpy
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; COMDAT mul_4_2
|
||||
_TEXT SEGMENT
|
||||
left$ = 48
|
||||
right$ = 56
|
||||
mul_4_2 PROC ; COMDAT
|
||||
|
||||
; 57 : {
|
||||
|
||||
$LN22:
|
||||
00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx
|
||||
00005 57 push rdi
|
||||
00006 48 83 ec 20 sub rsp, 32 ; 00000020H
|
||||
0000a 48 8b fa mov rdi, rdx
|
||||
0000d 48 8b d9 mov rbx, rcx
|
||||
|
||||
; 58 : matrix2map* retPtr = _aligned_malloc(sizeof(matrix2map), 16);
|
||||
|
||||
00010 ba 10 00 00 00 mov edx, 16
|
||||
00015 8d 4a 10 lea ecx, QWORD PTR [rdx+16]
|
||||
00018 ff 15 00 00 00
|
||||
00 call QWORD PTR __imp__aligned_malloc
|
||||
|
||||
; 59 : if (NULL != retPtr)
|
||||
|
||||
0001e 48 85 c0 test rax, rax
|
||||
00021 0f 84 a8 00 00
|
||||
00 je $LN2@mul_4_2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00027 0f 10 17 movups xmm2, XMMWORD PTR [rdi]
|
||||
0002a 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
0002e 0f 10 4b 20 movups xmm1, XMMWORD PTR [rbx+32]
|
||||
00032 0f 10 5b 10 movups xmm3, XMMWORD PTR [rbx+16]
|
||||
00036 0f 59 ca mulps xmm1, xmm2
|
||||
00039 0f 28 e2 movaps xmm4, xmm2
|
||||
0003c 0f 59 da mulps xmm3, xmm2
|
||||
0003f 0f 59 e0 mulps xmm4, xmm0
|
||||
00042 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00045 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00049 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0004c f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00050 f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 61 : retPtr->colum[0] = _mm_set_ps(
|
||||
|
||||
00054 0f 28 c1 movaps xmm0, xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00057 f2 0f 7c db haddps xmm3, xmm3
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0005b f2 0f 7c e4 haddps xmm4, xmm4
|
||||
0005f f2 0f 7c d2 haddps xmm2, xmm2
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00063 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
00067 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 61 : retPtr->colum[0] = _mm_set_ps(
|
||||
|
||||
0006b 0f 28 cc movaps xmm1, xmm4
|
||||
0006e 0f 14 c8 unpcklps xmm1, xmm0
|
||||
00071 0f 14 da unpcklps xmm3, xmm2
|
||||
00074 0f 16 cb movlhps xmm1, xmm3
|
||||
00077 0f 11 08 movups XMMWORD PTR [rax], xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
0007a 0f 10 57 10 movups xmm2, XMMWORD PTR [rdi+16]
|
||||
0007e 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
00082 0f 10 4b 20 movups xmm1, XMMWORD PTR [rbx+32]
|
||||
00086 0f 10 5b 10 movups xmm3, XMMWORD PTR [rbx+16]
|
||||
0008a 0f 59 ca mulps xmm1, xmm2
|
||||
0008d 0f 28 e2 movaps xmm4, xmm2
|
||||
00090 0f 59 da mulps xmm3, xmm2
|
||||
00093 0f 59 e0 mulps xmm4, xmm0
|
||||
00096 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00099 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
0009d 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000a0 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000a4 f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 67 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
000a8 0f 28 c1 movaps xmm0, xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000ab f2 0f 7c e4 haddps xmm4, xmm4
|
||||
000af f2 0f 7c d2 haddps xmm2, xmm2
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000b3 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
000b7 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
000bb f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 67 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
000bf 0f 28 cc movaps xmm1, xmm4
|
||||
000c2 0f 14 da unpcklps xmm3, xmm2
|
||||
000c5 0f 14 c8 unpcklps xmm1, xmm0
|
||||
000c8 0f 16 cb movlhps xmm1, xmm3
|
||||
000cb 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1
|
||||
$LN2@mul_4_2:
|
||||
|
||||
; 68 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[1])),
|
||||
; 69 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[1])),
|
||||
; 70 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[1])),
|
||||
; 71 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[1]))
|
||||
; 72 : );
|
||||
; 73 : }
|
||||
; 74 : }
|
||||
|
||||
000cf 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48]
|
||||
000d4 48 83 c4 20 add rsp, 32 ; 00000020H
|
||||
000d8 5f pop rdi
|
||||
000d9 c3 ret 0
|
||||
mul_4_2 ENDP
|
||||
_TEXT ENDS
|
||||
; Function compile flags: /Ogtpy
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
; COMDAT mul_4_4
|
||||
_TEXT SEGMENT
|
||||
left$ = 48
|
||||
right$ = 56
|
||||
mul_4_4 PROC ; COMDAT
|
||||
|
||||
; 78 : {
|
||||
|
||||
$LN39:
|
||||
00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx
|
||||
00005 57 push rdi
|
||||
00006 48 83 ec 20 sub rsp, 32 ; 00000020H
|
||||
0000a 48 8b fa mov rdi, rdx
|
||||
0000d 48 8b d9 mov rbx, rcx
|
||||
|
||||
; 79 : matrix4map* retPtr = _aligned_malloc(sizeof(matrix4map), 16);
|
||||
|
||||
00010 ba 10 00 00 00 mov edx, 16
|
||||
00015 8d 4a 30 lea ecx, QWORD PTR [rdx+48]
|
||||
00018 ff 15 00 00 00
|
||||
00 call QWORD PTR __imp__aligned_malloc
|
||||
|
||||
; 80 : if (NULL != retPtr)
|
||||
|
||||
0001e 48 85 c0 test rax, rax
|
||||
00021 0f 84 64 01 00
|
||||
00 je $LN36@mul_4_4
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00027 0f 10 17 movups xmm2, XMMWORD PTR [rdi]
|
||||
0002a 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
0002e 0f 10 4b 20 movups xmm1, XMMWORD PTR [rbx+32]
|
||||
00032 0f 10 5b 10 movups xmm3, XMMWORD PTR [rbx+16]
|
||||
00036 0f 59 ca mulps xmm1, xmm2
|
||||
00039 0f 28 e2 movaps xmm4, xmm2
|
||||
0003c 0f 59 e0 mulps xmm4, xmm0
|
||||
0003f 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
00042 0f 59 da mulps xmm3, xmm2
|
||||
00045 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00048 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
0004c f2 0f 7c e4 haddps xmm4, xmm4
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00050 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00054 f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 82 : retPtr->colum[0] = _mm_set_ps(
|
||||
|
||||
00058 0f 28 c1 movaps xmm0, xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0005b f2 0f 7c e4 haddps xmm4, xmm4
|
||||
0005f f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 82 : retPtr->colum[0] = _mm_set_ps(
|
||||
|
||||
00063 0f 28 cc movaps xmm1, xmm4
|
||||
00066 0f 14 c8 unpcklps xmm1, xmm0
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00069 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0006d f2 0f 7c d2 haddps xmm2, xmm2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 82 : retPtr->colum[0] = _mm_set_ps(
|
||||
|
||||
00071 0f 14 da unpcklps xmm3, xmm2
|
||||
00074 0f 16 cb movlhps xmm1, xmm3
|
||||
00077 0f 11 08 movups XMMWORD PTR [rax], xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
0007a 0f 10 57 10 movups xmm2, XMMWORD PTR [rdi+16]
|
||||
0007e 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
00082 0f 28 e2 movaps xmm4, xmm2
|
||||
00085 0f 28 ca movaps xmm1, xmm2
|
||||
00088 0f 59 e0 mulps xmm4, xmm0
|
||||
0008b 0f 28 da movaps xmm3, xmm2
|
||||
0008e 0f 10 43 20 movups xmm0, XMMWORD PTR [rbx+32]
|
||||
00092 0f 59 c8 mulps xmm1, xmm0
|
||||
00095 0f 10 43 10 movups xmm0, XMMWORD PTR [rbx+16]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00099 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
0009d 0f 59 d8 mulps xmm3, xmm0
|
||||
000a0 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000a3 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
000a7 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000aa f2 0f 7c c9 haddps xmm1, xmm1
|
||||
000ae f2 0f 7c e4 haddps xmm4, xmm4
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 88 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
000b2 0f 28 c1 movaps xmm0, xmm1
|
||||
000b5 0f 28 cc movaps xmm1, xmm4
|
||||
000b8 0f 14 c8 unpcklps xmm1, xmm0
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000bb f2 0f 7c db haddps xmm3, xmm3
|
||||
000bf f2 0f 7c d2 haddps xmm2, xmm2
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000c3 f2 0f 7c db haddps xmm3, xmm3
|
||||
000c7 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 88 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
000cb 0f 14 da unpcklps xmm3, xmm2
|
||||
000ce 0f 16 cb movlhps xmm1, xmm3
|
||||
000d1 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
000d5 0f 10 57 20 movups xmm2, XMMWORD PTR [rdi+32]
|
||||
000d9 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
000dd 0f 28 e2 movaps xmm4, xmm2
|
||||
000e0 0f 28 ca movaps xmm1, xmm2
|
||||
000e3 0f 59 e0 mulps xmm4, xmm0
|
||||
000e6 0f 28 da movaps xmm3, xmm2
|
||||
000e9 0f 10 43 20 movups xmm0, XMMWORD PTR [rbx+32]
|
||||
000ed 0f 59 c8 mulps xmm1, xmm0
|
||||
000f0 0f 10 43 10 movups xmm0, XMMWORD PTR [rbx+16]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000f4 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
000f8 0f 59 d8 mulps xmm3, xmm0
|
||||
000fb 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
000fe f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00102 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00105 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
00109 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 94 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
0010d 0f 28 c1 movaps xmm0, xmm1
|
||||
00110 0f 28 cc movaps xmm1, xmm4
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00113 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
00117 f2 0f 7c db haddps xmm3, xmm3
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0011b f2 0f 7c d2 haddps xmm2, xmm2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 94 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
0011f 0f 14 c8 unpcklps xmm1, xmm0
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00122 f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 94 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
00126 0f 14 da unpcklps xmm3, xmm2
|
||||
00129 0f 16 cb movlhps xmm1, xmm3
|
||||
0012c 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00130 0f 10 57 30 movups xmm2, XMMWORD PTR [rdi+48]
|
||||
00134 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48]
|
||||
00138 0f 28 e2 movaps xmm4, xmm2
|
||||
0013b 0f 59 e0 mulps xmm4, xmm0
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0013e f2 0f 7c e4 haddps xmm4, xmm4
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00142 0f 10 43 20 movups xmm0, XMMWORD PTR [rbx+32]
|
||||
00146 0f 28 ca movaps xmm1, xmm2
|
||||
00149 0f 28 da movaps xmm3, xmm2
|
||||
0014c 0f 59 c8 mulps xmm1, xmm0
|
||||
0014f 0f 10 43 10 movups xmm0, XMMWORD PTR [rbx+16]
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00153 f2 0f 7c e4 haddps xmm4, xmm4
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00157 0f 59 d8 mulps xmm3, xmm0
|
||||
0015a 0f 10 03 movups xmm0, XMMWORD PTR [rbx]
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
0015d f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 123 : __m128 ret = _mm_mul_ps(left, right);
|
||||
|
||||
00161 0f 59 d0 mulps xmm2, xmm0
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00164 f2 0f 7c c9 haddps xmm1, xmm1
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00168 f2 0f 7c db haddps xmm3, xmm3
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 100 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
0016c 0f 28 c1 movaps xmm0, xmm1
|
||||
0016f 0f 28 cc movaps xmm1, xmm4
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\linear.c
|
||||
|
||||
; 124 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00172 f2 0f 7c d2 haddps xmm2, xmm2
|
||||
|
||||
; 125 : ret = _mm_hadd_ps(ret, ret);
|
||||
|
||||
00176 f2 0f 7c db haddps xmm3, xmm3
|
||||
0017a f2 0f 7c d2 haddps xmm2, xmm2
|
||||
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgShqrpGraphic\mat4.c
|
||||
|
||||
; 100 : retPtr->colum[1] = _mm_set_ps(
|
||||
|
||||
0017e 0f 14 c8 unpcklps xmm1, xmm0
|
||||
00181 0f 14 da unpcklps xmm3, xmm2
|
||||
00184 0f 16 cb movlhps xmm1, xmm3
|
||||
00187 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1
|
||||
$LN36@mul_4_4:
|
||||
|
||||
; 101 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[3])),
|
||||
; 102 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[3])),
|
||||
; 103 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[3])),
|
||||
; 104 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[3]))
|
||||
; 105 : );
|
||||
; 106 : }
|
||||
; 107 : return retPtr;
|
||||
; 108 : }
|
||||
|
||||
0018b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48]
|
||||
00190 48 83 c4 20 add rsp, 32 ; 00000020H
|
||||
00194 5f pop rdi
|
||||
00195 c3 ret 0
|
||||
mul_4_4 ENDP
|
||||
_TEXT ENDS
|
||||
END
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user