[Mono-docs-list] Mono.Simd API Suggestions

Jonathan Pryor jonpryor at vt.edu
Wed Nov 5 10:54:19 EST 2008


On Tue, 2008-11-04 at 21:00 -0500, Jonathan Pryor wrote:
> ...

Other suggestions:

SimdRuntime.IsMethodAccelerated() and
SimdRuntime.MethodAccelerationMode() should be overloaded to accept a
MethodInfo of the desired method, as it can be ~trivial to get a
MethodInfo in a static, type-checked fashion, e.g.:

	MethodInfo average = ((Func<Vector8us, Vector8us, Vector8us>)
		Vector8us.Average).Method;
	bool b = SimdRuntime.IsMethodAccelerated (average);

Even better, this is _faster_ than typeof(Vector8us).GetMethod
("Average").  (Not by a lot, but faster nonetheless.)

AccelerationAttribute should be AcceleratedOnAttribute, and AccelMode
should be InstructionSet.  I think this would make for more readable
documentation prototypes:

	[Mono.Simd.AcceleratedOn (Mono.Simd.InstructionSet.SSE2)]
	public static Vector8us Average (Vector8us va, Vector8us vb);

Finally (for now), parameter names should be more consistent.  On some
methods the arguments are (va, vb) (e.g. Vector8us.Average()), while on
others they're (v1, v2) (e.g. Vector2d.InterleaveHigh()).  I don't care
which we choose, but we should stick to something and use it
consistently (`a` and `b`, perhaps?).

(This will be even more useful in C# 4 in which arguments can be named,
as changing the method invoked won't needlessly require changing the
parameter names...)

 - Jon




More information about the Mono-docs-list mailing list