Ejemplo n.º 1
0
        public void RunStructLclFldScenario()
        {
            var test   = TestStruct.Create();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Ejemplo n.º 2
0
        public void RunLclVarScenario_UnsafeRead()
        {
            var value  = Unsafe.Read <Vector128 <Byte> >(_dataTable.inArrayPtr);
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Ejemplo n.º 3
0
        public void RunClassLclFldScenario()
        {
            var test   = new BooleanUnaryOpTest__TestAllOnesByte();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Ejemplo n.º 4
0
        public void RunLclVarScenario_LoadAligned()
        {
            var value  = Sse2.LoadAlignedVector128((Byte *)(_dataTable.inArrayPtr));
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Ejemplo n.º 5
0
        public void RunLclFldScenario()
        {
            var test   = new BooleanComparisonOpTest__TestAllOnesUInt16();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Ejemplo n.º 6
0
        public void RunClassFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario));

            var result = Sse41.TestAllOnes(_fld1);

            ValidateResult(_fld1, result);
        }
Ejemplo n.º 7
0
        public void RunBasicScenario_UnsafeRead()
        {
            var result = Sse41.TestAllOnes(
                Unsafe.Read <Vector128 <Int16> >(_dataTable.inArrayPtr)
                );

            ValidateResult(_dataTable.inArrayPtr, result);
        }
Ejemplo n.º 8
0
        public void RunBasicScenario_LoadAligned()
        {
            var result = Sse41.TestAllOnes(
                Sse2.LoadAlignedVector128((Int16 *)(_dataTable.inArrayPtr))
                );

            ValidateResult(_dataTable.inArrayPtr, result);
        }
Ejemplo n.º 9
0
        public void RunClsVarScenario()
        {
            var result = Sse41.TestAllOnes(
                _clsVar
                );

            ValidateResult(_clsVar, result);
        }
Ejemplo n.º 10
0
        public void RunLclVarScenario_LoadAligned()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_LoadAligned));

            var value  = Sse2.LoadAlignedVector128((Int32 *)(_dataTable.inArrayPtr));
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Ejemplo n.º 11
0
        public void RunLclVarScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_UnsafeRead));

            var value  = Unsafe.Read <Vector128 <Int32> >(_dataTable.inArrayPtr);
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Ejemplo n.º 12
0
        public void RunStructLclFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario));

            var test   = TestStruct.Create();
            var result = Sse41.TestAllOnes(test._fld1);

            ValidateResult(test._fld1, result);
        }
Ejemplo n.º 13
0
        public void RunClassLclFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario));

            var test   = new BooleanUnaryOpTest__TestAllOnesByte();
            var result = Sse41.TestAllOnes(test._fld1);

            ValidateResult(test._fld1, result);
        }
Ejemplo n.º 14
0
        public void RunLclVarScenario_LoadAligned()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_LoadAligned));

            var op1    = Sse2.LoadAlignedVector128((Byte *)(_dataTable.inArray1Ptr));
            var result = Sse41.TestAllOnes(op1);

            ValidateResult(op1, result);
        }
Ejemplo n.º 15
0
        public void RunLclVarScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunLclVarScenario_UnsafeRead));

            var op1    = Unsafe.Read <Vector128 <Byte> >(_dataTable.inArray1Ptr);
            var result = Sse41.TestAllOnes(op1);

            ValidateResult(op1, result);
        }
Ejemplo n.º 16
0
        public void RunClsVarScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario));

            var result = Sse41.TestAllOnes(
                _clsVar
                );

            ValidateResult(_clsVar, result);
        }
Ejemplo n.º 17
0
        public void RunBasicScenario_Load()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_Load));

            var result = Sse41.TestAllOnes(
                Sse2.LoadVector128((Byte *)(_dataTable.inArray1Ptr))
                );

            ValidateResult(_dataTable.inArray1Ptr, result);
        }
Ejemplo n.º 18
0
        public void RunBasicScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_UnsafeRead));

            var result = Sse41.TestAllOnes(
                Unsafe.Read <Vector128 <UInt16> >(_dataTable.inArrayPtr)
                );

            ValidateResult(_dataTable.inArrayPtr, result);
        }
Ejemplo n.º 19
0
            public void RunStructFldScenario_Load(BooleanUnaryOpTest__TestAllOnesByte testClass)
            {
                fixed(Vector128 <Byte> *pFld1 = &_fld1)
                {
                    var result = Sse41.TestAllOnes(
                        Sse2.LoadVector128((Byte *)(pFld1))
                        );

                    testClass.ValidateResult(_fld1, result);
                }
            }
Ejemplo n.º 20
0
        public void RunStructLclFldScenario_Load()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario_Load));

            var test   = TestStruct.Create();
            var result = Sse41.TestAllOnes(
                Sse2.LoadVector128((Byte *)(&test._fld1))
                );

            ValidateResult(test._fld1, result);
        }
Ejemplo n.º 21
0
        public void RunClsVarScenario_Load()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario_Load));

            fixed(Vector128 <UInt64> *pClsVar1 = &_clsVar1)
            {
                var result = Sse41.TestAllOnes(
                    Sse2.LoadVector128((UInt64 *)(pClsVar1))
                    );

                ValidateResult(_clsVar1, result);
            }
        }
Ejemplo n.º 22
0
        public void RunClassFldScenario_Load()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario_Load));

            fixed(Vector128 <Byte> *pFld1 = &_fld1)
            {
                var result = Sse41.TestAllOnes(
                    Sse2.LoadVector128((Byte *)(pFld1))
                    );

                ValidateResult(_fld1, result);
            }
        }
Ejemplo n.º 23
0
        public void RunClassLclFldScenario_Load()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario_Load));

            var test = new BooleanUnaryOpTest__TestAllOnesByte();

            fixed(Vector128 <Byte> *pFld1 = &test._fld1)
            {
                var result = Sse41.TestAllOnes(
                    Sse2.LoadVector128((Byte *)(pFld1))
                    );

                ValidateResult(test._fld1, result);
            }
        }
        public static int IndexOf_Sse41_aligned(int[] array, int element)
        {
            var count = array.Length;

            if (count < 1)
            {
                return(-1);
            }

            if (count == 1)
            {
                return(array[0] == element ? 0 : -1);
            }

            int i = 0;

            fixed(int *ptr = &array[0])
            {
                if (array.Length >= 4 * 2)
                {
                    int *aligned1 = (int *)(((ulong)ptr + 31UL) & ~31UL);
                    int  pos      = (int)(aligned1 - ptr);
                    FindIndex_Soft(array, 0, pos);
                    i = pos;

                    var elementVec = Vector128.Create(element);
                    for (; i < count - 4; i += 4)
                    {
                        var curr = Sse2.LoadAlignedVector128(ptr + i);
                        var mask = Sse41.CompareEqual(curr, elementVec);
                        if (!Sse41.TestAllOnes(mask))
                        {
                            return(FindIndex_Soft(array, i, element));
                        }
                    }
                }
            }

            return(FindIndex_Soft(array, i, element));
        }
        public static int IndexOf_Sse41(int[] array, int element)
        {
            var count = array.Length;

            if (count < 1)
            {
                return(-1);
            }

            if (count == 1)
            {
                return(array[0] == element ? 0 : -1);
            }


            int i = 0;

            fixed(int *ptr = &array[0])
            {
                if (array.Length >= 4 * 2)
                {
                    var elementVec = Vector128.Create(element);
                    for (; i < count - 4; i += 4)
                    {
                        var curr = Sse2.LoadVector128(ptr + i);
                        var mask = Sse2.CompareEqual(curr, elementVec);
                        if (!Sse41.TestAllOnes(mask))
                        {
                            return(FindIndex_Soft(array, i, element));
                        }
                    }
                }
            }

            return(FindIndex_Soft(array, i, element));
        }
Ejemplo n.º 26
0
        public void RunFldScenario()
        {
            var result = Sse41.TestAllOnes(_fld);

            ValidateResult(_fld, result);
        }
Ejemplo n.º 27
0
            public void RunStructFldScenario(BooleanUnaryOpTest__TestAllOnesByte testClass)
            {
                var result = Sse41.TestAllOnes(_fld1);

                testClass.ValidateResult(_fld1, result);
            }