@@ -1099,12 +1099,6 @@ private static Vector512<float> FusedMultiplyAdd(Vector512<float> x, Vector512<f
1099
1099
#if NET8_0_OR_GREATER
1100
1100
public static Vector512 < float > Invoke ( Vector512 < float > x , Vector512 < float > y ) => x - y ;
1101
1101
#endif
1102
-
1103
- public static float Invoke ( Vector128 < float > x ) => throw new NotSupportedException ( ) ;
1104
- public static float Invoke ( Vector256 < float > x ) => throw new NotSupportedException ( ) ;
1105
- #if NET8_0_OR_GREATER
1106
- public static float Invoke ( Vector512 < float > x ) => throw new NotSupportedException ( ) ;
1107
- #endif
1108
1102
}
1109
1103
1110
1104
private readonly struct SubtractSquaredOperator : IBinaryOperator
@@ -1134,12 +1128,6 @@ public static Vector512<float> Invoke(Vector512<float> x, Vector512<float> y)
1134
1128
return tmp * tmp ;
1135
1129
}
1136
1130
#endif
1137
-
1138
- public static float Invoke ( Vector128 < float > x ) => throw new NotSupportedException ( ) ;
1139
- public static float Invoke ( Vector256 < float > x ) => throw new NotSupportedException ( ) ;
1140
- #if NET8_0_OR_GREATER
1141
- public static float Invoke ( Vector512 < float > x ) => throw new NotSupportedException ( ) ;
1142
- #endif
1143
1131
}
1144
1132
1145
1133
private readonly struct MultiplyOperator : IBinaryOperator
@@ -1195,12 +1183,6 @@ public static float Invoke(Vector512<float> x)
1195
1183
#if NET8_0_OR_GREATER
1196
1184
public static Vector512 < float > Invoke ( Vector512 < float > x , Vector512 < float > y ) => x / y ;
1197
1185
#endif
1198
-
1199
- public static float Invoke ( Vector128 < float > x ) => throw new NotSupportedException ( ) ;
1200
- public static float Invoke ( Vector256 < float > x ) => throw new NotSupportedException ( ) ;
1201
- #if NET8_0_OR_GREATER
1202
- public static float Invoke ( Vector512 < float > x ) => throw new NotSupportedException ( ) ;
1203
- #endif
1204
1186
}
1205
1187
1206
1188
private readonly struct NegateOperator : IUnaryOperator
@@ -1276,14 +1258,18 @@ private interface IUnaryOperator
1276
1258
private interface IBinaryOperator
1277
1259
{
1278
1260
static abstract float Invoke ( float x , float y ) ;
1279
-
1280
1261
static abstract Vector128 < float > Invoke ( Vector128 < float > x , Vector128 < float > y ) ;
1281
- static abstract float Invoke ( Vector128 < float > x ) ;
1282
1262
static abstract Vector256 < float > Invoke ( Vector256 < float > x , Vector256 < float > y ) ;
1283
- static abstract float Invoke ( Vector256 < float > x ) ;
1284
1263
#if NET8_0_OR_GREATER
1285
1264
static abstract Vector512 < float > Invoke ( Vector512 < float > x , Vector512 < float > y ) ;
1286
- static abstract float Invoke ( Vector512 < float > x ) ;
1265
+ #endif
1266
+
1267
+ // Operations for aggregating all lanes in a vector into a single value.
1268
+ // These are not supported on most implementations.
1269
+ static virtual float Invoke ( Vector128 < float > x ) => throw new NotSupportedException ( ) ;
1270
+ static virtual float Invoke ( Vector256 < float > x ) => throw new NotSupportedException ( ) ;
1271
+ #if NET8_0_OR_GREATER
1272
+ static virtual float Invoke ( Vector512 < float > x ) => throw new NotSupportedException ( ) ;
1287
1273
#endif
1288
1274
}
1289
1275
0 commit comments