Class IntrinsicUtility
Provides utility methods for SIMD vector that is currently missing on common hardware instruction set.
Inheritance
Namespace: X10D.Core
Assembly: X10D.dll
Syntax
public static class IntrinsicUtility : object
Methods
| Improve this Doc View SourceHorizontalOr(Vector128<Int32>, Vector128<Int32>)
Horizontally apply OR operation on adjacent pairs of single-precision (32-bit) floating-point elements in lhs and rhs.
Operation:dest[0] = left[0] | left[1];
dest[1] = left[2] | left[3];
dest[2] = right[0] | right[1];
dest[3] = right[2] | right[3];
Declaration
public static Vector128<int> HorizontalOr(Vector128<int> left, Vector128<int> right)
Parameters
Type | Name | Description |
---|---|---|
Vector128<System.Int32> | left | Left vector. |
Vector128<System.Int32> | right | Right vector. |
Returns
Type | Description |
---|---|
Vector128<System.Int32> | A |
HorizontalOr(Vector128<UInt32>, Vector128<UInt32>)
Horizontally apply OR operation on adjacent pairs of 32-bit unsigned integer elements in lhs and rhs.
Operation:dest[0] = left[0] | left[1];
dest[1] = left[2] | left[3];
dest[2] = right[0] | right[1];
dest[3] = right[2] | right[3];
Declaration
public static Vector128<uint> HorizontalOr(Vector128<uint> left, Vector128<uint> right)
Parameters
Type | Name | Description |
---|---|---|
Vector128<System.UInt32> | left | Left vector. |
Vector128<System.UInt32> | right | Right vector. |
Returns
Type | Description |
---|---|
Vector128<System.UInt32> | A |
Multiply(Vector128<Int64>, Vector128<Int64>)
Multiply packed 64-bit signed integer elements in a and b and truncate the results to 64-bit integer.
Operation:dest[0] = left[0] * right[0];
dest[1] = left[1] * right[1];
Declaration
public static Vector128<long> Multiply(Vector128<long> lhs, Vector128<long> rhs)
Parameters
Type | Name | Description |
---|---|---|
Vector128<System.Int64> | lhs | Left vector. |
Vector128<System.Int64> | rhs | Right vector. |
Returns
Type | Description |
---|---|
Vector128<System.Int64> | A |
Multiply(Vector128<UInt64>, Vector128<UInt64>)
Multiply packed 64-bit unsigned integer elements in a and b and truncate the results to 64-bit integer.
Operation:dest[0] = left[0] * right[0];
dest[1] = left[1] * right[1];
Declaration
public static Vector128<ulong> Multiply(Vector128<ulong> left, Vector128<ulong> right)
Parameters
Type | Name | Description |
---|---|---|
Vector128<System.UInt64> | left | Left vector. |
Vector128<System.UInt64> | right | Right vector. |
Returns
Type | Description |
---|---|
Vector128<System.UInt64> | The truncated product vector. |
Multiply(Vector256<Int64>, Vector256<Int64>)
Multiply packed 64-bit signed integer elements in a and b and truncate the results to 64-bit integer.
Operation:dest[0] = left[0] * right[0];
dest[1] = left[1] * right[1];
dest[2] = left[2] * right[2];
dest[3] = left[3] * right[3];
Declaration
public static Vector256<long> Multiply(Vector256<long> lhs, Vector256<long> rhs)
Parameters
Type | Name | Description |
---|---|---|
Vector256<System.Int64> | lhs | Left vector. |
Vector256<System.Int64> | rhs | Right vector. |
Returns
Type | Description |
---|---|
Vector256<System.Int64> | A |
Multiply(Vector256<UInt64>, Vector256<UInt64>)
Multiply packed 64-bit unsigned integer elements in a and b and truncate the results to 64-bit integer.
Operation:dest[0] = left[0] * right[0];
dest[1] = left[1] * right[1];
dest[2] = left[2] * right[2];
dest[3] = left[3] * right[3];
Declaration
public static Vector256<ulong> Multiply(Vector256<ulong> lhs, Vector256<ulong> rhs)
Parameters
Type | Name | Description |
---|---|---|
Vector256<System.UInt64> | lhs | Left vector. |
Vector256<System.UInt64> | rhs | Right vector. |
Returns
Type | Description |
---|---|
Vector256<System.UInt64> | A |