fixing tile fma
This commit is contained in:
@@ -70,11 +70,11 @@ namespace StgSharp.Mathematics.Numeric
|
||||
|
||||
int
|
||||
k_c = y / 4,
|
||||
k_r = x / 4,
|
||||
c = y % 4,
|
||||
k_r = x / 4,
|
||||
r = x % 4;
|
||||
ref MatrixKernel<T> kernel = ref GetMatrixKernel(k_c, k_r);
|
||||
return Unsafe.IsNullRef(ref kernel) ? T.Zero : kernel[c, r];
|
||||
ref MatrixKernel<T> kernel = ref GetMatrixKernel(k_r, k_c);
|
||||
return Unsafe.IsNullRef(ref kernel) ? T.Zero : kernel[r, c];
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -84,12 +84,12 @@ namespace StgSharp.Mathematics.Numeric
|
||||
|
||||
int
|
||||
k_c = y / 4,
|
||||
k_r = x / 4,
|
||||
c = y % 4,
|
||||
k_r = x / 4,
|
||||
r = x % 4;
|
||||
ref MatrixKernel<T> kernel = ref GetMatrixKernel(k_c, k_r);
|
||||
ref MatrixKernel<T> kernel = ref GetMatrixKernel(k_r, k_c);
|
||||
if (!Unsafe.IsNullRef(ref kernel)) {
|
||||
kernel[c, r] = value;
|
||||
kernel[r, c] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,10 +146,8 @@ namespace StgSharp.Mathematics.Numeric
|
||||
int y
|
||||
)
|
||||
{
|
||||
MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength,
|
||||
x, y);
|
||||
return ref _boarder.IsInBuffer(x, y, in enumerator) ?
|
||||
ref _buffer[_boarder.GetIndexOffset(x, y, in enumerator)] :
|
||||
return ref _boarder.IsInBuffer(x, y, in _size) ?
|
||||
ref _buffer[_boarder.GetIndexOffset(x, y, in _size)] :
|
||||
ref Unsafe.NullRef<MatrixKernel<T>>();
|
||||
}
|
||||
|
||||
@@ -165,9 +163,7 @@ namespace StgSharp.Mathematics.Numeric
|
||||
int c = y & 3;
|
||||
int r = x & 3;
|
||||
|
||||
MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength,
|
||||
k_c, k_r);
|
||||
ref MatrixKernel<T> kernel = ref _buffer[_boarder.GetIndexOffset(k_c, k_r, in enumerator)];
|
||||
ref MatrixKernel<T> kernel = ref _buffer[_boarder.GetIndexOffset(k_c, k_r, in _size)];
|
||||
return ref kernel[c, r];
|
||||
}
|
||||
|
||||
@@ -177,10 +173,7 @@ namespace StgSharp.Mathematics.Numeric
|
||||
int y
|
||||
)
|
||||
{
|
||||
// Caller guarantees: indices in range, layout is dense square.
|
||||
MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength,
|
||||
x, y);
|
||||
return Buffer + _boarder.GetIndexOffset(x, y, in enumerator);
|
||||
return Buffer + _boarder.GetIndexOffset(x, y, in _size);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
@@ -194,10 +187,7 @@ namespace StgSharp.Mathematics.Numeric
|
||||
int k_r = x >> 2;
|
||||
int c = y & 3;
|
||||
int r = x & 3;
|
||||
|
||||
MatrixKernelEnumerator enumerator = new(_size.KernelColumnLength, _size.KernelRowLength,
|
||||
k_c, k_r);
|
||||
return ref _buffer[_boarder.GetIndexOffset(k_c, k_r, in enumerator)];
|
||||
return ref _buffer[_boarder.GetIndexOffset(k_c, k_r, in _size)];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user