Refactor SPMD lane abstraction and add gather support
- Rename ISPMD interfaces to ISPMDLane for clarity - Add gather and mask load methods to ISPMDLane, implement for ScalarLane and WideLane - Add GetUnsafePtr() for direct pointer access - Update MathV and vector types to use new interface and gather methods - Update SPMD job interfaces and implementations to ISPMDLane - Improve hash codes, range checks, and safety checks in vector types - Update codegen templates for new interface/methods - Refactor SPMD jobs to use gather methods for efficient vectorized access
This commit is contained in:
@@ -239,7 +239,7 @@ internal unsafe struct NoiseJobMathSPMD : IJobSPMD<float>
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private static T GradDot<T>(T ix, T iy, T fx, T fy)
|
||||
where T : unmanaged, ISPMD<T, float>
|
||||
where T : unmanaged, ISPMDLane<T, float>
|
||||
{
|
||||
var c289 = T.Create(289f);
|
||||
var c34 = T.Create(34f);
|
||||
@@ -267,7 +267,7 @@ internal unsafe struct NoiseJobMathSPMD : IJobSPMD<float>
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static T Noise<T>(T uvX, T uvY)
|
||||
where T : unmanaged, ISPMD<T, float>
|
||||
where T : unmanaged, ISPMDLane<T, float>
|
||||
{
|
||||
var c1 = T.Create(1f);
|
||||
var c6 = T.Create(6f);
|
||||
@@ -292,7 +292,7 @@ internal unsafe struct NoiseJobMathSPMD : IJobSPMD<float>
|
||||
}
|
||||
|
||||
public readonly void Execute<TLane>(int baseIndex, ref readonly JobExecutionContext ctx)
|
||||
where TLane : unmanaged, ISPMD<TLane, float>
|
||||
where TLane : unmanaged, ISPMDLane<TLane, float>
|
||||
{
|
||||
var indices = TLane.Sequence(baseIndex, 1f);
|
||||
var w = TLane.Create(width);
|
||||
|
||||
Reference in New Issue
Block a user