1 package valhalla.vector;
   2 
   3 import java.lang.invoke.MethodHandle;
   4 import java.lang.invoke.MethodHandles;
   5 import java.util.Objects;
   6 
   7 import static valhalla.vector.Utils.*;
   8 
   9 @jvm.internal.value.DeriveValueType
  10 //@jvm.internal.Vector
  11 public final class Long2 {
  12     public static final int SIZE = Long.SIZE << 1;
  13 
  14     public static final int BYTES = SIZE / Byte.SIZE;
  15 
  16     public final long lo, hi; // FIXME: endianness
  17 
  18     private static final Class<?> THIS_CLASS = Long2.class;
  19 
  20     public static final MethodHandle FACTORY = VectorUtils.valueFactory(THIS_CLASS, MethodHandles.lookup());
  21 
  22     static {
  23         run(() -> assertEquals(FACTORY.invokeWithArguments(1, 2), new Long2(1, 2)));
  24     }
  25 
  26     public Long2(long lo, long hi) {
  27         this.lo = lo;
  28         this.hi = hi;
  29     }
  30 
  31     @Override
  32     public boolean equals(Object o) {
  33         if (o instanceof Long2) {
  34             Long2 v = (Long2)o;
  35             return (this.lo == v.lo) && (this.hi == v.hi);
  36         }
  37         return false;
  38     }
  39 
  40     @Override
  41     public int hashCode() {
  42         return Objects.hash(lo, hi);
  43     }
  44 
  45     @Override
  46     public String toString() {
  47         return String.format("Long2 {128: 0x%08x | 0x%08x | 0x%08x | 0x%08x :0}",
  48                 hi >>> 32, hi & 0xFFFFFFFFL,
  49                 lo >>> 32, lo & 0xFFFFFFFFL);
  50     }
  51 }