Skip to content

Commit

Permalink
Fixing Narrow and Widen
Browse files Browse the repository at this point in the history
  • Loading branch information
tannergooding committed Sep 28, 2022
1 parent 34069fa commit 4146f92
Showing 1 changed file with 70 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1920,8 +1920,8 @@ public static Vector256<T> Multiply<T>(T left, Vector256<T> right)
public static Vector256<float> Narrow(Vector256<double> lower, Vector256<double> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -1935,8 +1935,8 @@ public static Vector256<float> Narrow(Vector256<double> lower, Vector256<double>
public static Vector256<sbyte> Narrow(Vector256<short> lower, Vector256<short> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -1949,8 +1949,8 @@ public static Vector256<sbyte> Narrow(Vector256<short> lower, Vector256<short> u
public static Vector256<short> Narrow(Vector256<int> lower, Vector256<int> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -1963,8 +1963,8 @@ public static Vector256<short> Narrow(Vector256<int> lower, Vector256<int> upper
public static Vector256<int> Narrow(Vector256<long> lower, Vector256<long> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -1978,8 +1978,8 @@ public static Vector256<int> Narrow(Vector256<long> lower, Vector256<long> upper
public static Vector256<byte> Narrow(Vector256<ushort> lower, Vector256<ushort> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -1993,8 +1993,8 @@ public static Vector256<byte> Narrow(Vector256<ushort> lower, Vector256<ushort>
public static Vector256<ushort> Narrow(Vector256<uint> lower, Vector256<uint> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand All @@ -2008,8 +2008,8 @@ public static Vector256<ushort> Narrow(Vector256<uint> lower, Vector256<uint> up
public static Vector256<uint> Narrow(Vector256<ulong> lower, Vector256<ulong> upper)
{
return Create(
Vector128.Narrow(lower.GetLower(), upper.GetLower()),
Vector128.Narrow(lower.GetUpper(), upper.GetUpper())
Vector128.Narrow(lower.GetLower(), lower.GetUpper()),
Vector128.Narrow(upper.GetLower(), upper.GetUpper())
);
}

Expand Down Expand Up @@ -2998,139 +2998,167 @@ internal static void SetUpperUnsafe<T>(in this Vector256<T> vector, Vector128<T>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<ushort> WidenLower(Vector256<byte> source)
{
Vector128<byte> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<int> WidenLower(Vector256<short> source)
{
Vector128<short> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<long> WidenLower(Vector256<int> source)
{
Vector128<int> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<short> WidenLower(Vector256<sbyte> source)
{
Vector128<sbyte> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<double> WidenLower(Vector256<float> source)
{
Vector128<float> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<uint> WidenLower(Vector256<ushort> source)
{
Vector128<ushort> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<ulong> WidenLower(Vector256<uint> source)
{
Vector128<uint> lower = source.GetLower();

return Create(
Vector128.WidenLower(source.GetLower()),
Vector128.WidenLower(source.GetUpper())
Vector128.WidenLower(lower),
Vector128.WidenUpper(lower)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<ushort> WidenUpper(Vector256<byte> source)
{
Vector128<byte> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<int> WidenUpper(Vector256<short> source)
{
Vector128<short> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<long> WidenUpper(Vector256<int> source)
{
Vector128<int> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<short> WidenUpper(Vector256<sbyte> source)
{
Vector128<sbyte> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<double> WidenUpper(Vector256<float> source)
{
Vector128<float> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<uint> WidenUpper(Vector256<ushort> source)
{
Vector128<ushort> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}

[Intrinsic]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static Vector256<ulong> WidenUpper(Vector256<uint> source)
{
Vector128<uint> upper = source.GetUpper();

return Create(
Vector128.WidenUpper(source.GetLower()),
Vector128.WidenUpper(source.GetUpper())
Vector128.WidenLower(upper),
Vector128.WidenUpper(upper)
);
}
}
Expand Down

0 comments on commit 4146f92

Please sign in to comment.