package valhalla.vector; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.util.Objects; import static valhalla.vector.Utils.*; @jvm.internal.value.DeriveValueType //@jvm.internal.Vector public final class Long2 { public static final int SIZE = Long.SIZE << 1; public static final int BYTES = SIZE / Byte.SIZE; public final long lo, hi; // FIXME: endianness private static final Class THIS_CLASS = Long2.class; public static final MethodHandle FACTORY = VectorUtils.valueFactory(THIS_CLASS, MethodHandles.lookup()); static { run(() -> assertEquals(FACTORY.invokeWithArguments(1, 2), new Long2(1, 2))); } public Long2(long lo, long hi) { this.lo = lo; this.hi = hi; } @Override public boolean equals(Object o) { if (o instanceof Long2) { Long2 v = (Long2)o; return (this.lo == v.lo) && (this.hi == v.hi); } return false; } @Override public int hashCode() { return Objects.hash(lo, hi); } @Override public String toString() { return String.format("Long2 {128: 0x%08x | 0x%08x | 0x%08x | 0x%08x :0}", hi >>> 32, hi & 0xFFFFFFFFL, lo >>> 32, lo & 0xFFFFFFFFL); } }