daily update on 20230813 by nitload youmu, weritting matrix algs
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
|
||||
@@ -12,8 +13,13 @@ namespace StgSharp
|
||||
{
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "load",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern IntPtr load_internal(float x,float y, float z, float w);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "load_matmap",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr load_mat(IntPtr c0, IntPtr c1, IntPtr c2, IntPtr c3);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "load_cpy",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr load_cpy_internal(IntPtr ptr);
|
||||
@@ -46,17 +52,40 @@ namespace StgSharp
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr divps_const_internal(IntPtr ptr, float value);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "sqrtss_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern float sqrtss_const_internal(float a);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "test_addps_mat",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr addps_mat_internal_test(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
|
||||
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "set_m128ptr_default",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr set_m128ptr_default_internal();
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "transpose_ssemat_2",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern ref M128matMap transpose_ssemat2_internal(ref M128matMap matMap);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "transpose_ssemat_3",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern ref M128matMap transpose_ssemat3_internal(ref M128matMap matMap);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinitM128",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void deinitM128_internal(IntPtr M128Ptr);
|
||||
internal static extern void deinitM128_internal(IntPtr M128Ptr);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinit_matmap_sse",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void deinitMatmap_sse_internal(ref M128matMap mapPtr);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,27 @@ using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
internal struct MatSize
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
internal ushort sizePair;
|
||||
|
||||
[FieldOffset(0)]
|
||||
internal byte width;
|
||||
[FieldOffset(1)]
|
||||
internal byte height;
|
||||
}
|
||||
|
||||
public static unsafe partial class SSE
|
||||
{
|
||||
internal static IntPtr defaultM128Ptr =
|
||||
internalIO.set_m128ptr_default_internal();
|
||||
|
||||
|
||||
internal static IntPtr defaultM256Ptr;
|
||||
|
||||
|
||||
public enum Registor : byte
|
||||
{
|
||||
XMM0 = 0,
|
||||
|
||||
+18
-20
@@ -6,29 +6,24 @@ using System.Text;
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct M128ptrCache
|
||||
internal struct M128matMap
|
||||
{
|
||||
internal ulong ptr0;
|
||||
internal ulong ptr1;
|
||||
internal ulong ptr2;
|
||||
internal ulong ptr3;
|
||||
internal ulong ptr4;
|
||||
internal ulong ptr5;
|
||||
internal ulong ptr6;
|
||||
internal ulong ptr7;
|
||||
internal IntPtr colum0Ptr;
|
||||
internal IntPtr colum1Ptr;
|
||||
internal IntPtr colum2Ptr;
|
||||
internal IntPtr colum3Ptr;
|
||||
|
||||
public override string ToString()
|
||||
internal M128matMap(
|
||||
IntPtr c0ptr,
|
||||
IntPtr c1ptr,
|
||||
IntPtr c2ptr,
|
||||
IntPtr c3ptr
|
||||
)
|
||||
{
|
||||
return
|
||||
$"{ptr0}\t" +
|
||||
$"{ptr1}\t" +
|
||||
$"{ptr2}\t" +
|
||||
$"{ptr3}\t" +
|
||||
$"{ptr4}\t" +
|
||||
$"{ptr5}\t" +
|
||||
$"{ptr6}\t" +
|
||||
$"{ptr7}\t" +
|
||||
$"";
|
||||
colum0Ptr = c0ptr;
|
||||
colum1Ptr = c1ptr;
|
||||
colum2Ptr = c2ptr;
|
||||
colum3Ptr = c3ptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +44,9 @@ namespace StgSharp.Math
|
||||
[FieldOffset(0)] internal long int64_0;
|
||||
[FieldOffset(8)] internal long int64_1;
|
||||
|
||||
[FieldOffset(0)] internal IntPtr ptr_0;
|
||||
[FieldOffset(8)] internal IntPtr ptr_1;
|
||||
|
||||
[FieldOffset(0)] internal long double_0;
|
||||
[FieldOffset(8)] internal long double_1;
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit, Size = 32, Pack = 32)]
|
||||
internal struct M256
|
||||
{
|
||||
[FieldOffset(0)] public float single_0;
|
||||
[FieldOffset(4)] public float single_1;
|
||||
[FieldOffset(8)] public float single_2;
|
||||
[FieldOffset(12)] public float single_3;
|
||||
[FieldOffset(16)] public float single_4;
|
||||
[FieldOffset(20)] public float single_5;
|
||||
[FieldOffset(24)] public float single_6;
|
||||
[FieldOffset(28)] public float single_7;
|
||||
|
||||
[FieldOffset(0)] public long uint64_0;
|
||||
[FieldOffset(8)] public long uint64_1;
|
||||
[FieldOffset(16)] public long uint64_2;
|
||||
[FieldOffset(24)] public long uint64_3;
|
||||
|
||||
[FieldOffset(0)] public double double_0;
|
||||
[FieldOffset(8)] public double double_1;
|
||||
[FieldOffset(16)] public double double_2;
|
||||
[FieldOffset(24)] public double double_3;
|
||||
|
||||
[FieldOffset(0)] public IntPtr ptr_0;
|
||||
[FieldOffset(8)] public IntPtr ptr_1;
|
||||
[FieldOffset(16)] public IntPtr ptr_2;
|
||||
[FieldOffset(24)] public IntPtr ptr_3;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user