daily update on 20230830

This commit is contained in:
Nitload
2023-08-30 22:49:11 +08:00
parent 1fcbfb972b
commit c6f4b3dd53
55 changed files with 648 additions and 1198 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+18 -11
View File
@@ -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);
}
}
}
+35 -2
View File
@@ -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);
}
}
}
+19 -82
View File
@@ -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;
}
+9 -5
View File
@@ -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
}
}
}
+7 -1
View File
@@ -206,7 +206,13 @@ namespace StgSharp.Math
}
}
public override int GetHashCode()
{
return HashCode.Combine(
mat.colum0.GetHashCode(),
mat.colum1.GetHashCode()
);
}
}
+31 -1
View File
@@ -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()
);
}
+36 -14
View File
@@ -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}";
}
}
+5 -117
View File
@@ -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.
@@ -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
+10 -1
View File
@@ -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]
);
}
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
+2 -23
View File
@@ -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.