public void RunBasicScenario_UnsafeRead()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_UnsafeRead));

            var result = Avx.InsertVector128(
                Unsafe.Read <Vector256 <Int32> >(_dataTable.inArray1Ptr),
                (Int32 *)_dataTable.inArray2Ptr,
                1
                );

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_dataTable.inArray1Ptr, _dataTable.inArray2Ptr, _dataTable.outArrayPtr);
        }
        public void RunBasicScenario_LoadAligned()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario_LoadAligned));

            var result = Avx.InsertVector128(
                Avx.LoadAlignedVector256((Int32 *)(_dataTable.inArray1Ptr)),
                (Int32 *)(_dataTable.inArray2Ptr),
                1
                );

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_dataTable.inArray1Ptr, _dataTable.inArray2Ptr, _dataTable.outArrayPtr);
        }
Exemplo n.º 3
0
        public void RunClsVarScenario()
        {
            TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario));

            var result = Avx.InsertVector128(
                _clsVar1,
                _clsVar2,
                1
                );

            Unsafe.Write(_dataTable.outArrayPtr, result);
            ValidateResult(_clsVar1, _clsVar2, _dataTable.outArrayPtr);
        }
Exemplo n.º 4
0
        internal static Vector256 <T> Insert128Vector256(Vector256 <T> value, Vector128 <T> data, byte index)
        {
            if (typeof(T) == typeof(sbyte))
            {
                return(Avx2.InsertVector128(value.As <T, sbyte>(), data.As <T, sbyte>(), index).As <sbyte, T>());
            }
            if (typeof(T) == typeof(byte))
            {
                return(Avx2.InsertVector128(value.As <T, byte>(), data.As <T, byte>(), index).As <byte, T>());
            }
            if (typeof(T) == typeof(short))
            {
                return(Avx2.InsertVector128(value.As <T, short>(), data.As <T, short>(), index).As <short, T>());
            }
            if (typeof(T) == typeof(ushort))
            {
                return(Avx2.InsertVector128(value.As <T, ushort>(), data.As <T, ushort>(), index).As <ushort, T>());
            }
            if (typeof(T) == typeof(int))
            {
                return(Avx2.InsertVector128(value.As <T, int>(), data.As <T, int>(), index).As <int, T>());
            }
            if (typeof(T) == typeof(uint))
            {
                return(Avx2.InsertVector128(value.As <T, uint>(), data.As <T, uint>(), index).As <uint, T>());
            }
            if (typeof(T) == typeof(long))
            {
                return(Avx2.InsertVector128(value.As <T, long>(), data.As <T, long>(), index).As <long, T>());
            }
            if (typeof(T) == typeof(ulong))
            {
                return(Avx2.InsertVector128(value.As <T, ulong>(), data.As <T, ulong>(), index).As <ulong, T>());
            }
            if (typeof(T) == typeof(float))
            {
                return(Avx.InsertVector128(value.As <T, float>(), data.As <T, float>(), index).As <float, T>());
            }
            if (typeof(T) == typeof(double))
            {
                return(Avx.InsertVector128(value.As <T, double>(), data.As <T, double>(), index).As <double, T>());
            }

            throw new NotSupportedException();
        }