Example #1
0
 public static void Scale(ref VectorFloat5 m, ref Vector <float> s, out VectorFloat5 result)
 {
     result.A = m.A * s;
     result.B = m.B * s;
     result.C = m.C * s;
     result.D = m.D * s;
     result.E = m.E * s;
 }
Example #2
0
        public static void Test()
        {
            {
                //Nested versus flattened tests
                var s8  = new OuterStruct8();
                var s16 = new OuterStruct16();
                var s   = 0f;
                OuterStruct8.Test(ref s8, s, out var result8);
                OuterStruct16.Test(ref s16, s, out var result16);

                var d = new DummyOuterStruct();
                DummyOuterStruct.Test(ref d, 0f, out var dResult);

                var f = new ScalarFlattenedStruct();
                ScalarFlattenedStruct.Test(ref f, s, out var flattenedResult);
            }

            {
                //Field count tests
                var i4  = new Int4();
                var i5  = new Int5();
                var l4  = new Long4();
                var l5  = new Long5();
                var vf4 = new VectorFloat4();
                var vf5 = new VectorFloat5();
                var s   = new Vector <float>();
                Int4.Test(ref i4, 0, out var i4result);
                Int5.Test(ref i5, 0, out var i5result);
                Long4.Test(ref l4, 0, out var l4result);
                Long5.Test(ref l5, 0, out var l5result);
                VectorFloat4.Test(ref vf4, ref s, out var vf4Result);
                VectorFloat5.Test(ref vf5, ref s, out var vf5Result);
            }

            {
                //Assignment-only tests
                var s16 = new DummyStruct16();
                var s32 = new DummyStruct32();
                var s48 = new DummyStruct48();
                var s64 = new DummyStruct64();
                var s80 = new DummyStruct80();
                DoDummies(ref s16, out var result16);
                DoDummies(ref s32, out var result32);
                DoDummies(ref s48, out var result48);
                DoDummies(ref s64, out var result64);
                DoDummies(ref s80, out var result80);
            }

            {
                TestScalarStruct();
                TestStruct();
                TestStructManuallyInlined();
                TestStructless();
            }
        }
Example #3
0
 public static void Test(ref VectorFloat5 m, ref Vector <float> s, out VectorFloat5 result)
 {
     //rep stos, ecx 14h (80 bytes) when Vector<float>.Count == 4
     Scale(ref m, ref s, out var temp);
     Scale(ref temp, ref s, out result);
 }