Пример #1
0
        public void RunStructLclFldScenario()
        {
            var test   = TestStruct.Create();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Пример #2
0
        public void RunLclVarScenario_UnsafeRead()
        {
            var value  = Unsafe.Read <Vector128 <Byte> >(_dataTable.inArrayPtr);
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Пример #3
0
        public void RunClassLclFldScenario()
        {
            var test   = new BooleanUnaryOpTest__TestAllOnesByte();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Пример #4
0
        public void RunLclVarScenario_LoadAligned()
        {
            var value  = Sse2.LoadAlignedVector128((Byte *)(_dataTable.inArrayPtr));
            var result = Sse41.TestAllOnes(value);

            ValidateResult(value, result);
        }
Пример #5
0
        public void RunLclFldScenario()
        {
            var test   = new BooleanComparisonOpTest__TestAllOnesUInt16();
            var result = Sse41.TestAllOnes(test._fld);

            ValidateResult(test._fld, result);
        }
Пример #6
0
        public void RunClassFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClassFldScenario));

            var result = Sse41.TestAllOnes(_fld1);

            ValidateResult(_fld1, result);
        }
Пример #7
0
        public void RunBasicScenario_UnsafeRead()
        {
            var result = Sse41.TestAllOnes(
                Unsafe.Read <Vector128 <Int16> >(_dataTable.inArrayPtr)
                );

            ValidateResult(_dataTable.inArrayPtr, result);
        }
Пример #8
0
        public void RunBasicScenario_LoadAligned()
        {
            var result = Sse41.TestAllOnes(
                Sse2.LoadAlignedVector128((Int16 *)(_dataTable.inArrayPtr))
                );

            ValidateResult(_dataTable.inArrayPtr, result);
        }
Пример #9
0
        public void RunClsVarScenario()
        {
            var result = Sse41.TestAllOnes(
                _clsVar
                );

            ValidateResult(_clsVar, result);
        }
Пример #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);
        }
Пример #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);
        }
Пример #12
0
        public void RunStructLclFldScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario));

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

            ValidateResult(test._fld1, result);
        }
Пример #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);
        }
Пример #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);
        }
Пример #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);
        }
Пример #16
0
        public void RunClsVarScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario));

            var result = Sse41.TestAllOnes(
                _clsVar
                );

            ValidateResult(_clsVar, result);
        }
Пример #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);
        }
Пример #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);
        }
Пример #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);
                }
            }
Пример #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);
        }
Пример #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);
            }
        }
Пример #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);
            }
        }
Пример #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));
        }
Пример #26
0
        public void RunFldScenario()
        {
            var result = Sse41.TestAllOnes(_fld);

            ValidateResult(_fld, result);
        }
Пример #27
0
            public void RunStructFldScenario(BooleanUnaryOpTest__TestAllOnesByte testClass)
            {
                var result = Sse41.TestAllOnes(_fld1);

                testClass.ValidateResult(_fld1, result);
            }