[StructLayout(LayoutKind.Sequential, Pack = 0, Size = 16)]
public struct Vector2l
{
- private long x;
- private long y;
+ internal long x;
+ internal long y;
public long X { get { return x; } set { x = value; } }
public long Y { get { return y; } set { y = value; } }
return new Vector2l (v1.x ^ v2.x, v1.y ^ v2.y);
}
- [Acceleration (AccelMode.SSE2)]
- public static Vector2l UnpackLow (Vector2l v1, Vector2l v2)
- {
- return new Vector2l (v1.x, v2.x);
- }
-
- [Acceleration (AccelMode.SSE2)]
- public static Vector2l UnpackHigh (Vector2l v1, Vector2l v2)
- {
- return new Vector2l (v1.y, v2.y);
- }
-
- [Acceleration (AccelMode.SSE2)]
- public static unsafe Vector2l LogicalRightShift (Vector2l v1, int amount)
- {
- return new Vector2l ((long)((ulong)(v1.x) >> amount), (long)((ulong)(v1.y) >> amount));
- }
-
- [Acceleration (AccelMode.SSE41)]
- public static Vector2l CompareEqual (Vector2l v1, Vector2l v2)
- {
- return new Vector2l ((long)(v1.x == v2.x ? -1 : 0), (long)(v1.y == v2.y ? -1 : 0));
- }
-
- [Acceleration (AccelMode.SSE42)]
- public static Vector2l CompareGreaterThan (Vector2l v1, Vector2l v2)
- {
- return new Vector2l ((long)(v1.x > v2.x ? -1 : 0), (long)(v1.y > v2.y ? -1 : 0));
- }
-
[Acceleration (AccelMode.SSE1)]
public static unsafe explicit operator Vector2d (Vector2l v)
{
return res;
}
+ [Acceleration (AccelMode.SSE2)]
+ public static unsafe Vector2l LogicalRightShift (this Vector2l v1, int amount)
+ {
+ return new Vector2l ((long)((ulong)(v1.x) >> amount), (long)((ulong)(v1.y) >> amount));
+ }
+
/* ==== Math operations ==== */
[Acceleration (AccelMode.SSE1)]
return res;
}
+ [Acceleration (AccelMode.SSE41)]
+ public static Vector2l CompareEqual (this Vector2l v1, Vector2l v2)
+ {
+ return new Vector2l ((long)(v1.x == v2.x ? -1 : 0), (long)(v1.y == v2.y ? -1 : 0));
+ }
+
/*Same as a < b. */
[Acceleration (AccelMode.SSE1)]
public unsafe static Vector4f CompareLessThan (this Vector4f v1, Vector4f v2)
return res;
}
+ [Acceleration (AccelMode.SSE42)]
+ public static Vector2l CompareGreaterThan (this Vector2l v1, Vector2l v2)
+ {
+ return new Vector2l ((long)(v1.x > v2.x ? -1 : 0), (long)(v1.y > v2.y ? -1 : 0));
+ }
+
/*Same float.IsNaN (a) || float.IsNaN (b). */
[Acceleration (AccelMode.SSE1)]
public unsafe static Vector4f CompareUnordered (this Vector4f v1, Vector4f v2)
return new Vector4f (v1.y, v1.y, v1.w, v1.w);
}
+ [Acceleration (AccelMode.SSE2)]
+ public static Vector2l UnpackLow (this Vector2l v1, Vector2l v2)
+ {
+ return new Vector2l (v1.x, v2.x);
+ }
+
+ [Acceleration (AccelMode.SSE2)]
+ public static Vector2l UnpackHigh (this Vector2l v1, Vector2l v2)
+ {
+ return new Vector2l (v1.y, v2.y);
+ }
+
[Acceleration (AccelMode.SSE2)]
public static unsafe Vector4f Shuffle (this Vector4f v1, ShuffleSel sel)
{