rewrite of f32 fma, and other optmization of simd kernel ops
This commit is contained in:
@@ -31,6 +31,7 @@ using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Intrinsics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -41,12 +42,18 @@ namespace StgSharp.HighPerformance
|
||||
{
|
||||
|
||||
[FieldOffset(0)]private fixed byte _buffer[64];
|
||||
[FieldOffset(0)]private Vector512<float> Vec;
|
||||
|
||||
public ref T AsRef<T>() where T: unmanaged, INumber<T>
|
||||
{
|
||||
return ref Unsafe.As<byte, T>(ref _buffer[0]);
|
||||
}
|
||||
|
||||
public void BroadCastFrom<T>(T value) where T: unmanaged, INumber<T>
|
||||
{
|
||||
Vec = Vector512.CreateScalarUnsafe(value).As<T, float>();
|
||||
}
|
||||
|
||||
public ref T Member<T>(int index) where T: unmanaged, INumber<T>
|
||||
{
|
||||
return ref Unsafe.As<byte, T>(ref _buffer[0]);
|
||||
|
||||
Reference in New Issue
Block a user