[Mono-dev] Mono.Simd: Accelerated methods analysis

Bart Masschelein masschel at gmail.com
Wed Dec 10 15:51:58 EST 2008


> The following code is wrong "mi.GetParameters() [i].GetType()", it  
> should be "mi.GetParameters() [i].ParameterType" otherwise you'll be  
> querying for ParameterInfo class instead of what you want.

Thanks, that was what I was looking for, updated program below.

> The other one is minor, in that some functions might not report as  
> accelerated because you're running it on an old machine without  
> support.

That is exactly what this program is supposed to do: see which  
functions are accelerated on a certain machine, and which not, to know  
if I can expect an increase or not, or rather choose for another  
option, without having to investigate this for each method seperately.  
I just have to run this program ones, and keep the list at hand. As an  
example, the output on my MacBookPro is added to the end.

Sorry for the lengthy mail ;-).

Bart

// Main.cs created with MonoDevelop
// User: masschel at 15:51 11/21/2008
//
// To change standard headers go to Edit->Preferences->Coding- 
 >Standard Headers
//
using System;
using Mono.Simd;
using System.Reflection;

namespace AcceleratedMethods
{
     class MainClass
     {
         public static void Main(string[] args)
         {
             // Change to your location of Mono.Simd
             string monoSimdLocation = @"/Users/masschel/local/mono/ 
lib/mono/2.0/Mono.Simd.dll";
             Assembly assembly = Assembly.LoadFile(monoSimdLocation);
             foreach(Type type in assembly.GetTypes())
             {
                 string typeName = type.Name;
                 if (typeName.Length>=6 && typeName.Substring(0,6) ==  
"Vector")
                 {
                     Console.WriteLine("Type {0}", type.Name);
                     foreach(MethodInfo mi in type.GetMethods())
                     {
                         string methodName = mi.Name;
                         bool ctu = methodName != "Equals"
                                 && methodName != "GetHashCode"
                                 && methodName != "ToString"
                                 && methodName != "GetType"
                                 /*&& (methodName.Length>=4
                                     && methodName.Substring(0, 4) !=  
"get_"
                                     && methodName.Substring(0, 4) !=  
"set_")*/;
                         if (ctu)
                         {
                             Type[] types = new  
Type[mi.GetParameters().Length];
                             Console.Write("   Method {0}(", mi.Name);
                             for(int i = 0; i <  
mi.GetParameters().Length; i++)
                             {
                                 types[i] = mi.GetParameters() 
[i].ParameterType;
                                 if (i+1<mi.GetParameters().Length)  
Console.Write("{0}, ", types[i].Name);
                                 else Console.Write("{0}",  
types[i].Name);
                             }
                             Console.WriteLine("):{0} accelerated:  
{1}", mi.ReturnParameter, SimdRuntime.IsMethodAccelerated(type,  
mi.Name, types));
                         }
                     }
                 }
             }
         }
     }
}


Type Vector2d
    Method AndNot(Vector2d, Vector2d):Vector2d accelerated: True
    Method HorizontalAdd(Vector2d, Vector2d):Vector2d accelerated: True
    Method AddSub(Vector2d, Vector2d):Vector2d accelerated: True
    Method HorizontalSub(Vector2d, Vector2d):Vector2d accelerated: True
    Method InterleaveHigh(Vector2d, Vector2d):Vector2d accelerated: True
    Method InterleaveLow(Vector2d, Vector2d):Vector2d accelerated: True
    Method CompareEqual(Vector2d, Vector2d):Vector2d accelerated: True
    Method CompareLessThan(Vector2d, Vector2d):Vector2d accelerated:  
True
    Method CompareLessEqual(Vector2d, Vector2d):Vector2d accelerated:  
True
    Method CompareUnordered(Vector2d, Vector2d):Vector2d accelerated:  
True
    Method CompareNotEqual(Vector2d, Vector2d):Vector2d accelerated:  
True
    Method CompareNotLessThan(Vector2d, Vector2d):Vector2d  
accelerated: True
    Method CompareNotLessEqual(Vector2d, Vector2d):Vector2d  
accelerated: True
    Method CompareOrdered(Vector2d, Vector2d):Vector2d accelerated: True
    Method Duplicate(Vector2d):Vector2d accelerated: True
    Method LoadAligned(Vector2d&):Vector2d accelerated: True
    Method StoreAligned(Vector2d&, Vector2d):Void accelerated: True
    Method LoadAligned(Vector2d*):Vector2d accelerated: True
    Method StoreAligned(Vector2d*, Vector2d):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2d&):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector2d&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2d&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2d&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2d*):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector2d*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2d*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2d*):Void accelerated: True
    Method op_BitwiseAnd(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_BitwiseOr(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_ExclusiveOr(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_Addition(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_Subtraction(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_Multiply(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_Division(Vector2d, Vector2d):Vector2d accelerated: True
    Method op_Explicit(Vector2d):Vector4f accelerated: True
    Method op_Explicit(Vector2d):Vector2l accelerated: True
    Method op_Explicit(Vector2d):Vector2ul accelerated: True
    Method op_Explicit(Vector2d):Vector4i accelerated: True
    Method op_Explicit(Vector2d):Vector4ui accelerated: True
    Method op_Explicit(Vector2d):Vector8s accelerated: True
    Method op_Explicit(Vector2d):Vector8us accelerated: True
    Method op_Explicit(Vector2d):Vector16sb accelerated: True
    Method op_Explicit(Vector2d):Vector16b accelerated: True
Type Vector2ul
    Method UnpackLow(Vector2ul, Vector2ul):Vector2ul accelerated: True
    Method UnpackHigh(Vector2ul, Vector2ul):Vector2ul accelerated: True
    Method ExtractByteMask(Vector2ul):Int32 accelerated: True
    Method CompareEqual(Vector2ul, Vector2ul):Vector2ul accelerated:  
False
    Method LoadAligned(Vector2ul&):Vector2ul accelerated: True
    Method StoreAligned(Vector2ul&, Vector2ul):Void accelerated: True
    Method LoadAligned(Vector2ul*):Vector2ul accelerated: True
    Method StoreAligned(Vector2ul*, Vector2ul):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2ul&):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector2ul&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2ul&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2ul&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2ul*):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector2ul*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2ul*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2ul*):Void accelerated: True
    Method op_Addition(Vector2ul, Vector2ul):Vector2ul accelerated: True
    Method op_Subtraction(Vector2ul, Vector2ul):Vector2ul accelerated:  
True
    Method op_LeftShift(Vector2ul, Int32):Vector2ul accelerated: True
    Method op_RightShift(Vector2ul, Int32):Vector2ul accelerated: True
    Method op_BitwiseAnd(Vector2ul, Vector2ul):Vector2ul accelerated:  
True
    Method op_BitwiseOr(Vector2ul, Vector2ul):Vector2ul accelerated:  
True
    Method op_ExclusiveOr(Vector2ul, Vector2ul):Vector2ul accelerated:  
True
    Method op_Explicit(Vector2ul):Vector2d accelerated: True
    Method op_Explicit(Vector2ul):Vector4f accelerated: True
    Method op_Explicit(Vector2ul):Vector2l accelerated: True
    Method op_Explicit(Vector2ul):Vector4i accelerated: True
    Method op_Explicit(Vector2ul):Vector4ui accelerated: True
    Method op_Explicit(Vector2ul):Vector8s accelerated: True
    Method op_Explicit(Vector2ul):Vector8us accelerated: True
    Method op_Explicit(Vector2ul):Vector16sb accelerated: True
    Method op_Explicit(Vector2ul):Vector16b accelerated: True
Type Vector2l
    Method UnpackLow(Vector2l, Vector2l):Vector2l accelerated: True
    Method UnpackHigh(Vector2l, Vector2l):Vector2l accelerated: True
    Method LogicalRightShift(Vector2l, Int32):Vector2l accelerated: True
    Method ExtractByteMask(Vector2l):Int64 accelerated: True
    Method CompareEqual(Vector2l, Vector2l):Vector2l accelerated: False
    Method CompareGreaterThan(Vector2l, Vector2l):Vector2l  
accelerated: False
    Method LoadAligned(Vector2l&):Vector2l accelerated: True
    Method StoreAligned(Vector2l&, Vector2l):Void accelerated: True
    Method LoadAligned(Vector2l*):Vector2l accelerated: True
    Method StoreAligned(Vector2l*, Vector2l):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2l&):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector2l&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2l&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2l&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector2l*):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector2l*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector2l*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector2l*):Void accelerated: True
    Method op_Addition(Vector2l, Vector2l):Vector2l accelerated: True
    Method op_Subtraction(Vector2l, Vector2l):Vector2l accelerated: True
    Method op_LeftShift(Vector2l, Int32):Vector2l accelerated: True
    Method op_BitwiseAnd(Vector2l, Vector2l):Vector2l accelerated: True
    Method op_BitwiseOr(Vector2l, Vector2l):Vector2l accelerated: True
    Method op_ExclusiveOr(Vector2l, Vector2l):Vector2l accelerated: True
    Method op_Explicit(Vector2l):Vector2d accelerated: True
    Method op_Explicit(Vector2l):Vector4f accelerated: True
    Method op_Explicit(Vector2l):Vector2ul accelerated: True
    Method op_Explicit(Vector2l):Vector4i accelerated: True
    Method op_Explicit(Vector2l):Vector4ui accelerated: True
    Method op_Explicit(Vector2l):Vector8s accelerated: True
    Method op_Explicit(Vector2l):Vector8us accelerated: True
    Method op_Explicit(Vector2l):Vector16sb accelerated: True
    Method op_Explicit(Vector2l):Vector16b accelerated: True
Type Vector4f
    Method AndNot(Vector4f, Vector4f):Vector4f accelerated: True
    Method Sqrt(Vector4f):Vector4f accelerated: True
    Method InvSqrt(Vector4f):Vector4f accelerated: True
    Method Reciprocal(Vector4f):Vector4f accelerated: True
    Method HorizontalAdd(Vector4f, Vector4f):Vector4f accelerated: True
    Method AddSub(Vector4f, Vector4f):Vector4f accelerated: True
    Method HorizontalSub(Vector4f, Vector4f):Vector4f accelerated: True
    Method InterleaveHigh(Vector4f, Vector4f):Vector4f accelerated: True
    Method InterleaveLow(Vector4f, Vector4f):Vector4f accelerated: True
    Method CompareEqual(Vector4f, Vector4f):Vector4f accelerated: True
    Method CompareLessThan(Vector4f, Vector4f):Vector4f accelerated:  
True
    Method CompareLessEqual(Vector4f, Vector4f):Vector4f accelerated:  
True
    Method CompareUnordered(Vector4f, Vector4f):Vector4f accelerated:  
True
    Method CompareNotEqual(Vector4f, Vector4f):Vector4f accelerated:  
True
    Method CompareNotLessThan(Vector4f, Vector4f):Vector4f  
accelerated: True
    Method CompareNotLessEqual(Vector4f, Vector4f):Vector4f  
accelerated: True
    Method CompareOrdered(Vector4f, Vector4f):Vector4f accelerated: True
    Method DuplicateLow(Vector4f):Vector4f accelerated: True
    Method DuplicateHigh(Vector4f):Vector4f accelerated: True
    Method Shuffle(Vector4f, ShuffleSel):Vector4f accelerated: True
    Method LoadAligned(Vector4f&):Vector4f accelerated: True
    Method StoreAligned(Vector4f&, Vector4f):Void accelerated: True
    Method LoadAligned(Vector4f*):Vector4f accelerated: True
    Method StoreAligned(Vector4f*, Vector4f):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4f&):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector4f&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4f&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4f&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4f*):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector4f*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4f*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4f*):Void accelerated: True
    Method op_BitwiseAnd(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_BitwiseOr(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_ExclusiveOr(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_Addition(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_Subtraction(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_Multiply(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_Division(Vector4f, Vector4f):Vector4f accelerated: True
    Method op_Explicit(Vector4f):Vector2d accelerated: True
    Method op_Explicit(Vector4f):Vector2l accelerated: True
    Method op_Explicit(Vector4f):Vector2ul accelerated: True
    Method op_Explicit(Vector4f):Vector4i accelerated: True
    Method op_Explicit(Vector4f):Vector4ui accelerated: True
    Method op_Explicit(Vector4f):Vector8s accelerated: True
    Method op_Explicit(Vector4f):Vector8us accelerated: True
    Method op_Explicit(Vector4f):Vector16sb accelerated: True
    Method op_Explicit(Vector4f):Vector16b accelerated: True
Type Vector4ui
    Method UnpackLow(Vector4ui, Vector4ui):Vector4ui accelerated: True
    Method UnpackHigh(Vector4ui, Vector4ui):Vector4ui accelerated: True
    Method ArithmeticRightShift(Vector4ui, Int32):Vector4ui  
accelerated: True
    Method ExtractByteMask(Vector4ui):Int32 accelerated: True
    Method Shuffle(Vector4ui, ShuffleSel):Vector4ui accelerated: True
    Method CompareEqual(Vector4ui, Vector4ui):Vector4ui accelerated:  
True
    Method SignedPackWithUnsignedSaturation(Vector4ui,  
Vector4ui):Vector8us accelerated: False
    Method SignedPackWithSignedSaturation(Vector4ui,  
Vector4ui):Vector8s accelerated: True
    Method LoadAligned(Vector4ui&):Vector4ui accelerated: True
    Method StoreAligned(Vector4ui&, Vector4ui):Void accelerated: True
    Method LoadAligned(Vector4ui*):Vector4ui accelerated: True
    Method StoreAligned(Vector4ui*, Vector4ui):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4ui&):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector4ui&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4ui&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4ui&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4ui*):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector4ui*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4ui*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4ui*):Void accelerated: True
    Method op_Addition(Vector4ui, Vector4ui):Vector4ui accelerated: True
    Method op_Subtraction(Vector4ui, Vector4ui):Vector4ui accelerated:  
True
    Method op_Multiply(Vector4ui, Vector4ui):Vector4ui accelerated:  
False
    Method op_LeftShift(Vector4ui, Int32):Vector4ui accelerated: True
    Method op_RightShift(Vector4ui, Int32):Vector4ui accelerated: True
    Method op_BitwiseAnd(Vector4ui, Vector4ui):Vector4ui accelerated:  
True
    Method op_BitwiseOr(Vector4ui, Vector4ui):Vector4ui accelerated:  
True
    Method op_ExclusiveOr(Vector4ui, Vector4ui):Vector4ui accelerated:  
True
    Method op_Explicit(Vector4ui):Vector2d accelerated: True
    Method op_Explicit(Vector4ui):Vector4f accelerated: True
    Method op_Explicit(Vector4ui):Vector2l accelerated: True
    Method op_Explicit(Vector4ui):Vector2ul accelerated: True
    Method op_Explicit(Vector4ui):Vector4i accelerated: True
    Method op_Explicit(Vector4ui):Vector8s accelerated: True
    Method op_Explicit(Vector4ui):Vector8us accelerated: True
    Method op_Explicit(Vector4ui):Vector16sb accelerated: True
    Method op_Explicit(Vector4ui):Vector16b accelerated: True
Type Vector4i
    Method UnpackLow(Vector4i, Vector4i):Vector4i accelerated: True
    Method UnpackHigh(Vector4i, Vector4i):Vector4i accelerated: True
    Method LogicalRightShift(Vector4i, Int32):Vector4i accelerated: True
    Method ExtractByteMask(Vector4i):Int32 accelerated: True
    Method Shuffle(Vector4i, ShuffleSel):Vector4i accelerated: True
    Method CompareEqual(Vector4i, Vector4i):Vector4i accelerated: True
    Method CompareGreaterThan(Vector4i, Vector4i):Vector4i  
accelerated: True
    Method PackWithUnsignedSaturation(Vector4i, Vector4i):Vector8us  
accelerated: False
    Method PackWithSignedSaturation(Vector4i, Vector4i):Vector8s  
accelerated: True
    Method LoadAligned(Vector4i&):Vector4i accelerated: True
    Method StoreAligned(Vector4i&, Vector4i):Void accelerated: True
    Method LoadAligned(Vector4i*):Vector4i accelerated: True
    Method StoreAligned(Vector4i*, Vector4i):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4i&):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector4i&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4i&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4i&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector4i*):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector4i*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector4i*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector4i*):Void accelerated: True
    Method op_Addition(Vector4i, Vector4i):Vector4i accelerated: True
    Method op_Subtraction(Vector4i, Vector4i):Vector4i accelerated: True
    Method op_Multiply(Vector4i, Vector4i):Vector4i accelerated: False
    Method op_LeftShift(Vector4i, Int32):Vector4i accelerated: True
    Method op_RightShift(Vector4i, Int32):Vector4i accelerated: True
    Method op_BitwiseAnd(Vector4i, Vector4i):Vector4i accelerated: True
    Method op_BitwiseOr(Vector4i, Vector4i):Vector4i accelerated: True
    Method op_ExclusiveOr(Vector4i, Vector4i):Vector4i accelerated: True
    Method op_Explicit(Vector4i):Vector2d accelerated: True
    Method op_Explicit(Vector4i):Vector4f accelerated: True
    Method op_Explicit(Vector4i):Vector2l accelerated: True
    Method op_Explicit(Vector4i):Vector2ul accelerated: True
    Method op_Explicit(Vector4i):Vector4ui accelerated: True
    Method op_Explicit(Vector4i):Vector8s accelerated: True
    Method op_Explicit(Vector4i):Vector8us accelerated: True
    Method op_Explicit(Vector4i):Vector16sb accelerated: True
    Method op_Explicit(Vector4i):Vector16b accelerated: True
Type Vector8us
    Method UnpackLow(Vector8us, Vector8us):Vector8us accelerated: True
    Method UnpackHigh(Vector8us, Vector8us):Vector8us accelerated: True
    Method ArithmeticRightShift(Vector8us, Int32):Vector8us  
accelerated: True
    Method AddWithSaturation(Vector8us, Vector8us):Vector8us  
accelerated: True
    Method SubtractWithSaturation(Vector8us, Vector8us):Vector8us  
accelerated: True
    Method Average(Vector8us, Vector8us):Vector8us accelerated: True
    Method ExtractByteMask(Vector8us):Int32 accelerated: True
    Method ShuffleHigh(Vector8us, ShuffleSel):Vector8us accelerated:  
True
    Method ShuffleLow(Vector8us, ShuffleSel):Vector8us accelerated: True
    Method CompareEqual(Vector8us, Vector8us):Vector8us accelerated:  
True
    Method MultiplyStoreHigh(Vector8us, Vector8us):Vector8us  
accelerated: True
    Method SignedPackWithUnsignedSaturation(Vector8us,  
Vector8us):Vector16b accelerated: True
    Method SignedPackWithSignedSaturation(Vector8us,  
Vector8us):Vector16sb accelerated: True
    Method LoadAligned(Vector8us&):Vector8us accelerated: True
    Method StoreAligned(Vector8us&, Vector8us):Void accelerated: True
    Method LoadAligned(Vector8us*):Vector8us accelerated: True
    Method StoreAligned(Vector8us*, Vector8us):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector8us&):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector8us&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector8us&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector8us&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector8us*):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector8us*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector8us*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector8us*):Void accelerated: True
    Method op_Addition(Vector8us, Vector8us):Vector8us accelerated: True
    Method op_Subtraction(Vector8us, Vector8us):Vector8us accelerated:  
True
    Method op_Multiply(Vector8us, Vector8us):Vector8us accelerated: True
    Method op_RightShift(Vector8us, Int32):Vector8us accelerated: True
    Method op_LeftShift(Vector8us, Int32):Vector8us accelerated: True
    Method op_BitwiseAnd(Vector8us, Vector8us):Vector8us accelerated:  
True
    Method op_BitwiseOr(Vector8us, Vector8us):Vector8us accelerated:  
True
    Method op_ExclusiveOr(Vector8us, Vector8us):Vector8us accelerated:  
True
    Method op_Explicit(Vector8us):Vector2d accelerated: True
    Method op_Explicit(Vector8us):Vector4f accelerated: True
    Method op_Explicit(Vector8us):Vector2l accelerated: True
    Method op_Explicit(Vector8us):Vector2ul accelerated: True
    Method op_Explicit(Vector8us):Vector4i accelerated: True
    Method op_Explicit(Vector8us):Vector4ui accelerated: True
    Method op_Explicit(Vector8us):Vector8s accelerated: True
    Method op_Explicit(Vector8us):Vector16sb accelerated: True
    Method op_Explicit(Vector8us):Vector16b accelerated: True
Type Vector8s
    Method UnpackLow(Vector8s, Vector8s):Vector8s accelerated: True
    Method UnpackHigh(Vector8s, Vector8s):Vector8s accelerated: True
    Method LogicalRightShift(Vector8s, Int32):Vector8s accelerated: True
    Method AddWithSaturation(Vector8s, Vector8s):Vector8s accelerated:  
True
    Method SubtractWithSaturation(Vector8s, Vector8s):Vector8s  
accelerated: True
    Method ExtractByteMask(Vector8s):Int32 accelerated: True
    Method ShuffleHigh(Vector8s, ShuffleSel):Vector8s accelerated: True
    Method ShuffleLow(Vector8s, ShuffleSel):Vector8s accelerated: True
    Method CompareEqual(Vector8s, Vector8s):Vector8s accelerated: True
    Method CompareGreaterThan(Vector8s, Vector8s):Vector8s  
accelerated: True
    Method MultiplyStoreHigh(Vector8s, Vector8s):Vector8s accelerated:  
True
    Method PackWithUnsignedSaturation(Vector8s, Vector8s):Vector16b  
accelerated: True
    Method PackWithSignedSaturation(Vector8s, Vector8s):Vector16sb  
accelerated: True
    Method LoadAligned(Vector8s&):Vector8s accelerated: True
    Method StoreAligned(Vector8s&, Vector8s):Void accelerated: True
    Method LoadAligned(Vector8s*):Vector8s accelerated: True
    Method StoreAligned(Vector8s*, Vector8s):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector8s&):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector8s&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector8s&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector8s&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector8s*):Void accelerated:  
True
    Method PrefetchTemporal1stLevelCache(Vector8s*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector8s*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector8s*):Void accelerated: True
    Method op_Addition(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_Subtraction(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_Multiply(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_RightShift(Vector8s, Int32):Vector8s accelerated: True
    Method op_LeftShift(Vector8s, Int32):Vector8s accelerated: True
    Method op_BitwiseAnd(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_BitwiseOr(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_ExclusiveOr(Vector8s, Vector8s):Vector8s accelerated: True
    Method op_Explicit(Vector8s):Vector2d accelerated: True
    Method op_Explicit(Vector8s):Vector4f accelerated: True
    Method op_Explicit(Vector8s):Vector2l accelerated: True
    Method op_Explicit(Vector8s):Vector2ul accelerated: True
    Method op_Explicit(Vector8s):Vector4i accelerated: True
    Method op_Explicit(Vector8s):Vector4ui accelerated: True
    Method op_Explicit(Vector8s):Vector8us accelerated: True
    Method op_Explicit(Vector8s):Vector16sb accelerated: True
    Method op_Explicit(Vector8s):Vector16b accelerated: True
Type Vector16b
    Method UnpackLow(Vector16b, Vector16b):Vector16b accelerated: True
    Method UnpackHigh(Vector16b, Vector16b):Vector16b accelerated: True
    Method AddWithSaturation(Vector16b, Vector16b):Vector16b  
accelerated: True
    Method SubtractWithSaturation(Vector16b, Vector16b):Vector16b  
accelerated: True
    Method Average(Vector16b, Vector16b):Vector16b accelerated: True
    Method ExtractByteMask(Vector16b):Int32 accelerated: True
    Method SumOfAbsoluteDifferences(Vector16b, Vector16sb):Vector8us  
accelerated: True
    Method CompareEqual(Vector16b, Vector16b):Vector16b accelerated:  
True
    Method LoadAligned(Vector16b&):Vector16b accelerated: True
    Method StoreAligned(Vector16b&, Vector16b):Void accelerated: True
    Method LoadAligned(Vector16b*):Vector16b accelerated: True
    Method StoreAligned(Vector16b*, Vector16b):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector16b&):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector16b&):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector16b&):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector16b&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector16b*):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector16b*):Void accelerated:  
True
    Method PrefetchTemporal2ndLevelCache(Vector16b*):Void accelerated:  
True
    Method PrefetchNonTemporal(Vector16b*):Void accelerated: True
    Method op_Addition(Vector16b, Vector16b):Vector16b accelerated: True
    Method op_Subtraction(Vector16b, Vector16b):Vector16b accelerated:  
True
    Method op_BitwiseAnd(Vector16b, Vector16b):Vector16b accelerated:  
True
    Method op_BitwiseOr(Vector16b, Vector16b):Vector16b accelerated:  
True
    Method op_ExclusiveOr(Vector16b, Vector16b):Vector16b accelerated:  
True
    Method op_Explicit(Vector16b):Vector2d accelerated: True
    Method op_Explicit(Vector16b):Vector4f accelerated: True
    Method op_Explicit(Vector16b):Vector2l accelerated: True
    Method op_Explicit(Vector16b):Vector2ul accelerated: True
    Method op_Explicit(Vector16b):Vector4i accelerated: True
    Method op_Explicit(Vector16b):Vector4ui accelerated: True
    Method op_Explicit(Vector16b):Vector8s accelerated: True
    Method op_Explicit(Vector16b):Vector8us accelerated: True
    Method op_Explicit(Vector16b):Vector16sb accelerated: True
Type Vector16sb
    Method UnpackLow(Vector16sb, Vector16sb):Vector16sb accelerated:  
True
    Method UnpackHigh(Vector16sb, Vector16sb):Vector16sb accelerated:  
True
    Method AddWithSaturation(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method SubtractWithSaturation(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method ExtractByteMask(Vector16sb):Int32 accelerated: True
    Method CompareEqual(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method CompareGreaterThan(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method LoadAligned(Vector16sb&):Vector16sb accelerated: True
    Method StoreAligned(Vector16sb&, Vector16sb):Void accelerated: True
    Method LoadAligned(Vector16sb*):Vector16sb accelerated: True
    Method StoreAligned(Vector16sb*, Vector16sb):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector16sb&):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector16sb&):Void  
accelerated: True
    Method PrefetchTemporal2ndLevelCache(Vector16sb&):Void  
accelerated: True
    Method PrefetchNonTemporal(Vector16sb&):Void accelerated: True
    Method PrefetchTemporalAllCacheLevels(Vector16sb*):Void  
accelerated: True
    Method PrefetchTemporal1stLevelCache(Vector16sb*):Void  
accelerated: True
    Method PrefetchTemporal2ndLevelCache(Vector16sb*):Void  
accelerated: True
    Method PrefetchNonTemporal(Vector16sb*):Void accelerated: True
    Method op_Addition(Vector16sb, Vector16sb):Vector16sb accelerated:  
True
    Method op_Subtraction(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method op_BitwiseAnd(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method op_BitwiseOr(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method op_ExclusiveOr(Vector16sb, Vector16sb):Vector16sb  
accelerated: True
    Method op_Explicit(Vector16sb):Vector2d accelerated: True
    Method op_Explicit(Vector16sb):Vector4f accelerated: True
    Method op_Explicit(Vector16sb):Vector2l accelerated: True
    Method op_Explicit(Vector16sb):Vector2ul accelerated: True
    Method op_Explicit(Vector16sb):Vector4i accelerated: True
    Method op_Explicit(Vector16sb):Vector4ui accelerated: True
    Method op_Explicit(Vector16sb):Vector8s accelerated: True
    Method op_Explicit(Vector16sb):Vector8us accelerated: True
    Method op_Explicit(Vector16sb):Vector16b accelerated: True



More information about the Mono-devel-list mailing list