Skip to content

Commit 76b9c99

Browse files
committed
Address feedback
1 parent f8d2c59 commit 76b9c99

File tree

2 files changed

+37
-24
lines changed

2 files changed

+37
-24
lines changed

src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.ConvertToInteger.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,31 +38,36 @@ public static Vector128<TTo> Invoke(Vector128<TFrom> x)
3838
{
3939
if (typeof(TFrom) == typeof(float))
4040
{
41-
if (IsInt32Like<TTo>()) return Vector128.ConvertToInt32(x.AsSingle()).As<int, TTo>();
42-
if (IsUInt32Like<TTo>()) return Vector128.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
41+
return Vector128.IsNegative(Vector128<TTo>.AllBitsSet) != Vector128<TTo>.Zero ?
42+
Vector128.ConvertToInt32(x.AsSingle()).As<int, TTo>() :
43+
Vector128.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
4344
}
4445

4546
if (typeof(TFrom) == typeof(double))
4647
{
47-
if (IsInt64Like<TTo>()) return Vector128.ConvertToInt64(x.AsDouble()).As<long, TTo>();
48-
if (IsUInt64Like<TTo>()) return Vector128.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
48+
return Vector128.IsNegative(Vector128<TTo>.AllBitsSet) != Vector128<TTo>.Zero ?
49+
Vector128.ConvertToInt64(x.AsDouble()).As<long, TTo>() :
50+
Vector128.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
4951
}
5052

5153
throw new NotSupportedException();
54+
5255
}
5356

5457
public static Vector256<TTo> Invoke(Vector256<TFrom> x)
5558
{
5659
if (typeof(TFrom) == typeof(float))
5760
{
58-
if (IsInt32Like<TTo>()) return Vector256.ConvertToInt32(x.AsSingle()).As<int, TTo>();
59-
if (IsUInt32Like<TTo>()) return Vector256.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
61+
return Vector256.IsNegative(Vector256<TTo>.AllBitsSet) != Vector256<TTo>.Zero ?
62+
Vector256.ConvertToInt32(x.AsSingle()).As<int, TTo>() :
63+
Vector256.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
6064
}
6165

6266
if (typeof(TFrom) == typeof(double))
6367
{
64-
if (IsInt64Like<TTo>()) return Vector256.ConvertToInt64(x.AsDouble()).As<long, TTo>();
65-
if (IsUInt64Like<TTo>()) return Vector256.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
68+
return Vector256.IsNegative(Vector256<TTo>.AllBitsSet) != Vector256<TTo>.Zero ?
69+
Vector256.ConvertToInt64(x.AsDouble()).As<long, TTo>() :
70+
Vector256.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
6671
}
6772

6873
throw new NotSupportedException();
@@ -72,14 +77,16 @@ public static Vector512<TTo> Invoke(Vector512<TFrom> x)
7277
{
7378
if (typeof(TFrom) == typeof(float))
7479
{
75-
if (IsInt32Like<TTo>()) return Vector512.ConvertToInt32(x.AsSingle()).As<int, TTo>();
76-
if (IsUInt32Like<TTo>()) return Vector512.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
80+
return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
81+
Vector512.ConvertToInt32(x.AsSingle()).As<int, TTo>() :
82+
Vector512.ConvertToUInt32(x.AsSingle()).As<uint, TTo>();
7783
}
7884

7985
if (typeof(TFrom) == typeof(double))
8086
{
81-
if (IsInt64Like<TTo>()) return Vector512.ConvertToInt64(x.AsDouble()).As<long, TTo>();
82-
if (IsUInt64Like<TTo>()) return Vector512.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
87+
return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
88+
Vector512.ConvertToInt64(x.AsDouble()).As<long, TTo>() :
89+
Vector512.ConvertToUInt64(x.AsDouble()).As<ulong, TTo>();
8390
}
8491

8592
throw new NotSupportedException();

src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.ConvertToIntegerNative.cs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,16 @@ public static Vector128<TTo> Invoke(Vector128<TFrom> x)
3838
{
3939
if (typeof(TFrom) == typeof(float))
4040
{
41-
if (IsInt32Like<TTo>()) return Vector128.ConvertToInt32Native(x.AsSingle()).As<int, TTo>();
42-
if (IsUInt32Like<TTo>()) return Vector128.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
41+
return Vector128.IsNegative(Vector128<TTo>.AllBitsSet) != Vector128<TTo>.Zero ?
42+
Vector128.ConvertToInt32Native(x.AsSingle()).As<int, TTo>() :
43+
Vector128.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
4344
}
4445

4546
if (typeof(TFrom) == typeof(double))
4647
{
47-
if (IsInt64Like<TTo>()) return Vector128.ConvertToInt64Native(x.AsDouble()).As<long, TTo>();
48-
if (IsUInt64Like<TTo>()) return Vector128.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
48+
return Vector128.IsNegative(Vector128<TTo>.AllBitsSet) != Vector128<TTo>.Zero ?
49+
Vector128.ConvertToInt64Native(x.AsDouble()).As<long, TTo>() :
50+
Vector128.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
4951
}
5052

5153
throw new NotSupportedException();
@@ -55,14 +57,16 @@ public static Vector256<TTo> Invoke(Vector256<TFrom> x)
5557
{
5658
if (typeof(TFrom) == typeof(float))
5759
{
58-
if (IsInt32Like<TTo>()) return Vector256.ConvertToInt32Native(x.AsSingle()).As<int, TTo>();
59-
if (IsUInt32Like<TTo>()) return Vector256.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
60+
return Vector256.IsNegative(Vector256<TTo>.AllBitsSet) != Vector256<TTo>.Zero ?
61+
Vector256.ConvertToInt32Native(x.AsSingle()).As<int, TTo>() :
62+
Vector256.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
6063
}
6164

6265
if (typeof(TFrom) == typeof(double))
6366
{
64-
if (IsInt64Like<TTo>()) return Vector256.ConvertToInt64Native(x.AsDouble()).As<long, TTo>();
65-
if (IsUInt64Like<TTo>()) return Vector256.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
67+
return Vector256.IsNegative(Vector256<TTo>.AllBitsSet) != Vector256<TTo>.Zero ?
68+
Vector256.ConvertToInt64Native(x.AsDouble()).As<long, TTo>() :
69+
Vector256.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
6670
}
6771

6872
throw new NotSupportedException();
@@ -72,14 +76,16 @@ public static Vector512<TTo> Invoke(Vector512<TFrom> x)
7276
{
7377
if (typeof(TFrom) == typeof(float))
7478
{
75-
if (IsInt32Like<TTo>()) return Vector512.ConvertToInt32Native(x.AsSingle()).As<int, TTo>();
76-
if (IsUInt32Like<TTo>()) return Vector512.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
79+
return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
80+
Vector512.ConvertToInt32Native(x.AsSingle()).As<int, TTo>() :
81+
Vector512.ConvertToUInt32Native(x.AsSingle()).As<uint, TTo>();
7782
}
7883

7984
if (typeof(TFrom) == typeof(double))
8085
{
81-
if (IsInt64Like<TTo>()) return Vector512.ConvertToInt64Native(x.AsDouble()).As<long, TTo>();
82-
if (IsUInt64Like<TTo>()) return Vector512.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
86+
return Vector512.IsNegative(Vector512<TTo>.AllBitsSet) != Vector512<TTo>.Zero ?
87+
Vector512.ConvertToInt64Native(x.AsDouble()).As<long, TTo>() :
88+
Vector512.ConvertToUInt64Native(x.AsDouble()).As<ulong, TTo>();
8389
}
8490

8591
throw new NotSupportedException();

0 commit comments

Comments
 (0)