From 9ea59cb4761fb111aaa272393f9da252393dfd36 Mon Sep 17 00:00:00 2001 From: httpdigest Date: Fri, 16 Dec 2022 10:28:53 +0100 Subject: [PATCH] Refactor for latest JDK 20 --- .github/workflows/experimental.yml | 2 +- src/jmh/java/org/joml/jmh/Bench.java | 1 - src/jmh/java/org/joml/jmh/Matrix4fn.java | 2 +- src/jmh/java/org/joml/jmh/WithJvmci.java | 356 ----------------------- 4 files changed, 2 insertions(+), 359 deletions(-) delete mode 100644 src/jmh/java/org/joml/jmh/WithJvmci.java diff --git a/.github/workflows/experimental.yml b/.github/workflows/experimental.yml index 66736f8c..2444a96e 100644 --- a/.github/workflows/experimental.yml +++ b/.github/workflows/experimental.yml @@ -9,7 +9,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-java@v3 with: - java-version: '19' + java-version: '20-ea' distribution: 'temurin' cache: gradle - name: Build with Gradle diff --git a/src/jmh/java/org/joml/jmh/Bench.java b/src/jmh/java/org/joml/jmh/Bench.java index ab57abd1..df90f4e0 100644 --- a/src/jmh/java/org/joml/jmh/Bench.java +++ b/src/jmh/java/org/joml/jmh/Bench.java @@ -65,7 +65,6 @@ public class Bench { private final Matrix4fvBB m4vbb = new Matrix4fvBB(); private final Matrix4fvArr m4varr = new Matrix4fvArr(); private final ByteBuffer bb = allocateDirect(16<<2).order(nativeOrder()); - private final long bb_addr = WithJvmci.address(bb); private final FloatBuffer fb = bb.asFloatBuffer(); private final Quaternionf qa = new Quaternionf(); private final Quaternionf qb = new Quaternionf(); diff --git a/src/jmh/java/org/joml/jmh/Matrix4fn.java b/src/jmh/java/org/joml/jmh/Matrix4fn.java index 5697dc8e..fa37a143 100644 --- a/src/jmh/java/org/joml/jmh/Matrix4fn.java +++ b/src/jmh/java/org/joml/jmh/Matrix4fn.java @@ -36,7 +36,7 @@ public class Matrix4fn { public static final MethodHandle noop2ForPanama = getNoopForPanama(); private static MethodHandle getNoopForPanama() { return Linker.nativeLinker().downcallHandle( - SymbolLookup.loaderLookup().lookup("noop2ForPanama").get(), + SymbolLookup.loaderLookup().find("noop2ForPanama").get(), FunctionDescriptor.ofVoid(JAVA_LONG, JAVA_LONG) ); } diff --git a/src/jmh/java/org/joml/jmh/WithJvmci.java b/src/jmh/java/org/joml/jmh/WithJvmci.java deleted file mode 100644 index 620eca87..00000000 --- a/src/jmh/java/org/joml/jmh/WithJvmci.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * The MIT License - * - * Copyright (c) 2022 JOML - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package org.joml.jmh; - -import jdk.vm.ci.code.site.DataPatch; -import jdk.vm.ci.code.site.Site; -import jdk.vm.ci.hotspot.HotSpotCompiledCode; -import jdk.vm.ci.hotspot.HotSpotCompiledNmethod; -import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod; -import jdk.vm.ci.meta.Assumptions; -import jdk.vm.ci.meta.ResolvedJavaMethod; -import jdk.vm.ci.runtime.JVMCI; -import jdk.vm.ci.runtime.JVMCIBackend; -import jdk.vm.ci.runtime.JVMCICompiler; - -import static org.joml.jmh.Matrix4fv.A; -import static org.joml.jmh.Matrix4fv.U; - -import java.lang.reflect.Method; -import java.nio.ByteBuffer; - -public class WithJvmci { - - private static final byte[] INVERT_LINUX = { - (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x46, (byte) 0x10, (byte) 0xC5, - (byte) 0xFB, (byte) 0x10, (byte) 0x66, (byte) 0x18, (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x4E, - (byte) 0x30, (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x6E, (byte) 0x38, (byte) 0xC5, (byte) 0xF8, - (byte) 0x16, (byte) 0x56, (byte) 0x20, (byte) 0xC5, (byte) 0xF0, (byte) 0x16, (byte) 0x5E, (byte) 0x40, - (byte) 0xC5, (byte) 0xE8, (byte) 0xC6, (byte) 0xC3, (byte) 0x88, (byte) 0xC5, (byte) 0xE0, (byte) 0xC6, - (byte) 0xCA, (byte) 0xDD, (byte) 0xC5, (byte) 0xD8, (byte) 0x16, (byte) 0x76, (byte) 0x28, (byte) 0xC5, - (byte) 0x50, (byte) 0x16, (byte) 0x46, (byte) 0x48, (byte) 0xC4, (byte) 0xC1, (byte) 0x48, (byte) 0xC6, - (byte) 0xF8, (byte) 0x88, (byte) 0xC5, (byte) 0xB8, (byte) 0xC6, (byte) 0xE6, (byte) 0xDD, (byte) 0xC5, - (byte) 0xD8, (byte) 0x59, (byte) 0xEF, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x04, (byte) 0xED, - (byte) 0xB1, (byte) 0xC4, (byte) 0x63, (byte) 0x79, (byte) 0x05, (byte) 0xCD, (byte) 0x01, (byte) 0xC5, - (byte) 0xB0, (byte) 0x5C, (byte) 0xED, (byte) 0xC5, (byte) 0x50, (byte) 0x59, (byte) 0xD9, (byte) 0xC5, - (byte) 0x40, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, (byte) 0xC9, - (byte) 0xB1, (byte) 0xC5, (byte) 0x30, (byte) 0x59, (byte) 0xE4, (byte) 0xC4, (byte) 0x43, (byte) 0x79, - (byte) 0x05, (byte) 0xE9, (byte) 0x01, (byte) 0xC4, (byte) 0x41, (byte) 0x10, (byte) 0x5C, (byte) 0xC9, - (byte) 0xC5, (byte) 0x78, (byte) 0x29, (byte) 0x4C, (byte) 0x24, (byte) 0xE8, (byte) 0xC5, (byte) 0x68, - (byte) 0xC6, (byte) 0xD3, (byte) 0x77, (byte) 0xC5, (byte) 0x38, (byte) 0xC6, (byte) 0xF6, (byte) 0x77, - (byte) 0xC4, (byte) 0x41, (byte) 0x08, (byte) 0x59, (byte) 0xF2, (byte) 0xC4, (byte) 0x63, (byte) 0x79, - (byte) 0x05, (byte) 0xD7, (byte) 0x01, (byte) 0xC4, (byte) 0xC1, (byte) 0x08, (byte) 0x59, (byte) 0xFA, - (byte) 0xC5, (byte) 0x98, (byte) 0x58, (byte) 0xFF, (byte) 0xC5, (byte) 0xA0, (byte) 0x58, (byte) 0xFF, - (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xDE, (byte) 0x01, (byte) 0xC5, (byte) 0x10, - (byte) 0x59, (byte) 0xE4, (byte) 0xC4, (byte) 0x41, (byte) 0x20, (byte) 0x59, (byte) 0xEA, (byte) 0xC4, - (byte) 0x41, (byte) 0x18, (byte) 0x58, (byte) 0xE5, (byte) 0xC4, (byte) 0xC1, (byte) 0x40, (byte) 0x5C, - (byte) 0xFC, (byte) 0xC4, (byte) 0x41, (byte) 0x20, (byte) 0x5C, (byte) 0xDE, (byte) 0xC5, (byte) 0x20, - (byte) 0x59, (byte) 0xD8, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xDB, (byte) 0x01, - (byte) 0xC5, (byte) 0x70, (byte) 0x59, (byte) 0xE0, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, - (byte) 0xE4, (byte) 0xB1, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xEC, (byte) 0x01, - (byte) 0xC5, (byte) 0x58, (byte) 0x59, (byte) 0xF0, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, - (byte) 0xF6, (byte) 0xB1, (byte) 0xC4, (byte) 0x41, (byte) 0x10, (byte) 0x5C, (byte) 0xFC, (byte) 0xC5, - (byte) 0x00, (byte) 0x59, (byte) 0xFC, (byte) 0xC4, (byte) 0x41, (byte) 0x00, (byte) 0x5C, (byte) 0xDB, - (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xFE, (byte) 0x01, (byte) 0xC4, (byte) 0x41, - (byte) 0x08, (byte) 0x5C, (byte) 0xCF, (byte) 0xC5, (byte) 0x30, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, - (byte) 0x41, (byte) 0x20, (byte) 0x58, (byte) 0xC9, (byte) 0xC5, (byte) 0xE8, (byte) 0xC6, (byte) 0xD3, - (byte) 0x22, (byte) 0xC5, (byte) 0xB8, (byte) 0xC6, (byte) 0xDE, (byte) 0x22, (byte) 0xC5, (byte) 0xE0, - (byte) 0x59, (byte) 0xD2, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xDA, (byte) 0x01, - (byte) 0xC5, (byte) 0xE8, (byte) 0x5C, (byte) 0xF3, (byte) 0xC5, (byte) 0xC8, (byte) 0x59, (byte) 0xE4, - (byte) 0xC4, (byte) 0xC1, (byte) 0x00, (byte) 0x5C, (byte) 0xF6, (byte) 0xC5, (byte) 0xA8, (byte) 0x59, - (byte) 0xF6, (byte) 0xC5, (byte) 0xC8, (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xD0, (byte) 0x59, - (byte) 0xE8, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xED, (byte) 0x01, (byte) 0xC5, - (byte) 0xD0, (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x5C, (byte) 0xD2, (byte) 0xC5, - (byte) 0xE8, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, (byte) 0xC1, (byte) 0x18, (byte) 0x5C, (byte) 0xD5, - (byte) 0xC5, (byte) 0xA8, (byte) 0x59, (byte) 0xD2, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0x5C, - (byte) 0x24, (byte) 0xE8, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xDB, (byte) 0x01, - (byte) 0xC5, (byte) 0xE8, (byte) 0x5C, (byte) 0xD3, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xC9, - (byte) 0xC5, (byte) 0xC0, (byte) 0x59, (byte) 0xC0, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, - (byte) 0xD0, (byte) 0x01, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xFA, - (byte) 0x16, (byte) 0xD0, (byte) 0xC5, (byte) 0xF8, (byte) 0x58, (byte) 0xC2, (byte) 0xC5, (byte) 0xFA, - (byte) 0x53, (byte) 0xD0, (byte) 0xC5, (byte) 0xEA, (byte) 0x59, (byte) 0xDA, (byte) 0xC5, (byte) 0xE2, - (byte) 0x59, (byte) 0xC0, (byte) 0xC5, (byte) 0xEA, (byte) 0x58, (byte) 0xD2, (byte) 0xC5, (byte) 0xEA, - (byte) 0x5C, (byte) 0xC0, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x04, (byte) 0xC0, (byte) 0x00, - (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xD4, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x52, - (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xD7, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, - (byte) 0x52, (byte) 0x10, (byte) 0xC5, (byte) 0xB0, (byte) 0x59, (byte) 0xD0, (byte) 0xC5, (byte) 0xF8, - (byte) 0x59, (byte) 0xC1, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x42, (byte) 0x40, (byte) 0xC5, - (byte) 0xF8, (byte) 0x11, (byte) 0x52, (byte) 0x30, (byte) 0xC3 }; - private static final byte[] INVERT_WINDOWS = { - (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x42, (byte) 0x10, (byte) 0xC5, - (byte) 0xFB, (byte) 0x10, (byte) 0x62, (byte) 0x18, (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x4A, - (byte) 0x30, (byte) 0xC5, (byte) 0xFB, (byte) 0x10, (byte) 0x6A, (byte) 0x38, (byte) 0xC5, (byte) 0xF8, - (byte) 0x16, (byte) 0x52, (byte) 0x20, (byte) 0xC5, (byte) 0xF0, (byte) 0x16, (byte) 0x5A, (byte) 0x40, - (byte) 0xC5, (byte) 0xE8, (byte) 0xC6, (byte) 0xC3, (byte) 0x88, (byte) 0xC5, (byte) 0xE0, (byte) 0xC6, - (byte) 0xCA, (byte) 0xDD, (byte) 0xC5, (byte) 0xD8, (byte) 0x16, (byte) 0x72, (byte) 0x28, (byte) 0xC5, - (byte) 0x50, (byte) 0x16, (byte) 0x42, (byte) 0x48, (byte) 0xC4, (byte) 0xC1, (byte) 0x48, (byte) 0xC6, - (byte) 0xF8, (byte) 0x88, (byte) 0xC5, (byte) 0xB8, (byte) 0xC6, (byte) 0xE6, (byte) 0xDD, (byte) 0xC5, - (byte) 0xD8, (byte) 0x59, (byte) 0xEF, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x04, (byte) 0xED, - (byte) 0xB1, (byte) 0xC4, (byte) 0x63, (byte) 0x79, (byte) 0x05, (byte) 0xCD, (byte) 0x01, (byte) 0xC5, - (byte) 0xB0, (byte) 0x5C, (byte) 0xED, (byte) 0xC5, (byte) 0x50, (byte) 0x59, (byte) 0xD9, (byte) 0xC5, - (byte) 0x40, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, (byte) 0xC9, - (byte) 0xB1, (byte) 0xC5, (byte) 0x30, (byte) 0x59, (byte) 0xE4, (byte) 0xC4, (byte) 0x43, (byte) 0x79, - (byte) 0x05, (byte) 0xE9, (byte) 0x01, (byte) 0xC4, (byte) 0x41, (byte) 0x10, (byte) 0x5C, (byte) 0xC9, - (byte) 0xC5, (byte) 0x78, (byte) 0x29, (byte) 0x4C, (byte) 0x24, (byte) 0xE8, (byte) 0xC5, (byte) 0x68, - (byte) 0xC6, (byte) 0xD3, (byte) 0x77, (byte) 0xC5, (byte) 0x38, (byte) 0xC6, (byte) 0xF6, (byte) 0x77, - (byte) 0xC4, (byte) 0x41, (byte) 0x08, (byte) 0x59, (byte) 0xF2, (byte) 0xC4, (byte) 0x63, (byte) 0x79, - (byte) 0x05, (byte) 0xD7, (byte) 0x01, (byte) 0xC4, (byte) 0xC1, (byte) 0x08, (byte) 0x59, (byte) 0xFA, - (byte) 0xC5, (byte) 0x98, (byte) 0x58, (byte) 0xFF, (byte) 0xC5, (byte) 0xA0, (byte) 0x58, (byte) 0xFF, - (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xDE, (byte) 0x01, (byte) 0xC5, (byte) 0x10, - (byte) 0x59, (byte) 0xE4, (byte) 0xC4, (byte) 0x41, (byte) 0x20, (byte) 0x59, (byte) 0xEA, (byte) 0xC4, - (byte) 0x41, (byte) 0x18, (byte) 0x58, (byte) 0xE5, (byte) 0xC4, (byte) 0xC1, (byte) 0x40, (byte) 0x5C, - (byte) 0xFC, (byte) 0xC4, (byte) 0x41, (byte) 0x20, (byte) 0x5C, (byte) 0xDE, (byte) 0xC5, (byte) 0x20, - (byte) 0x59, (byte) 0xD8, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xDB, (byte) 0x01, - (byte) 0xC5, (byte) 0x70, (byte) 0x59, (byte) 0xE0, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, - (byte) 0xE4, (byte) 0xB1, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xEC, (byte) 0x01, - (byte) 0xC5, (byte) 0x58, (byte) 0x59, (byte) 0xF0, (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x04, - (byte) 0xF6, (byte) 0xB1, (byte) 0xC4, (byte) 0x41, (byte) 0x10, (byte) 0x5C, (byte) 0xFC, (byte) 0xC5, - (byte) 0x00, (byte) 0x59, (byte) 0xFC, (byte) 0xC4, (byte) 0x41, (byte) 0x00, (byte) 0x5C, (byte) 0xDB, - (byte) 0xC4, (byte) 0x43, (byte) 0x79, (byte) 0x05, (byte) 0xFE, (byte) 0x01, (byte) 0xC4, (byte) 0x41, - (byte) 0x08, (byte) 0x5C, (byte) 0xCF, (byte) 0xC5, (byte) 0x30, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, - (byte) 0x41, (byte) 0x20, (byte) 0x58, (byte) 0xC9, (byte) 0xC5, (byte) 0xE8, (byte) 0xC6, (byte) 0xD3, - (byte) 0x22, (byte) 0xC5, (byte) 0xB8, (byte) 0xC6, (byte) 0xDE, (byte) 0x22, (byte) 0xC5, (byte) 0xE0, - (byte) 0x59, (byte) 0xD2, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xDA, (byte) 0x01, - (byte) 0xC5, (byte) 0xE8, (byte) 0x5C, (byte) 0xF3, (byte) 0xC5, (byte) 0xC8, (byte) 0x59, (byte) 0xE4, - (byte) 0xC4, (byte) 0xC1, (byte) 0x00, (byte) 0x5C, (byte) 0xF6, (byte) 0xC5, (byte) 0xA8, (byte) 0x59, - (byte) 0xF6, (byte) 0xC5, (byte) 0xC8, (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xD0, (byte) 0x59, - (byte) 0xE8, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xED, (byte) 0x01, (byte) 0xC5, - (byte) 0xD0, (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x5C, (byte) 0xD2, (byte) 0xC5, - (byte) 0xE8, (byte) 0x59, (byte) 0xC9, (byte) 0xC4, (byte) 0xC1, (byte) 0x18, (byte) 0x5C, (byte) 0xD5, - (byte) 0xC5, (byte) 0xA8, (byte) 0x59, (byte) 0xD2, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0x5C, - (byte) 0x24, (byte) 0xE8, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, (byte) 0xDB, (byte) 0x01, - (byte) 0xC5, (byte) 0xE8, (byte) 0x5C, (byte) 0xD3, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xC9, - (byte) 0xC5, (byte) 0xC0, (byte) 0x59, (byte) 0xC0, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x05, - (byte) 0xD0, (byte) 0x01, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xFA, - (byte) 0x16, (byte) 0xD0, (byte) 0xC5, (byte) 0xF8, (byte) 0x58, (byte) 0xC2, (byte) 0xC5, (byte) 0xFA, - (byte) 0x53, (byte) 0xD0, (byte) 0xC5, (byte) 0xEA, (byte) 0x59, (byte) 0xDA, (byte) 0xC5, (byte) 0xE2, - (byte) 0x59, (byte) 0xC0, (byte) 0xC5, (byte) 0xEA, (byte) 0x58, (byte) 0xD2, (byte) 0xC5, (byte) 0xEA, - (byte) 0x5C, (byte) 0xC0, (byte) 0xC4, (byte) 0xE3, (byte) 0x79, (byte) 0x04, (byte) 0xC0, (byte) 0x00, - (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xD4, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, - (byte) 0x50, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xD7, (byte) 0xC4, (byte) 0xC1, - (byte) 0x78, (byte) 0x11, (byte) 0x50, (byte) 0x10, (byte) 0xC5, (byte) 0xB0, (byte) 0x59, (byte) 0xD0, - (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xC1, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, - (byte) 0x40, (byte) 0x40, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, (byte) 0x50, (byte) 0x30, - (byte) 0xC3 }; - - private static final byte[] MUL_LINUX = { - (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x56, (byte) 0x10, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, - (byte) 0x5E, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x46, (byte) 0x30, (byte) 0xC5, - (byte) 0xF8, (byte) 0x10, (byte) 0x4E, (byte) 0x40, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, - (byte) 0x62, (byte) 0x10, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x6A, (byte) 0x14, - (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x72, (byte) 0x18, (byte) 0xC4, (byte) 0xE2, - (byte) 0x79, (byte) 0x18, (byte) 0x7A, (byte) 0x1C, (byte) 0xC5, (byte) 0xE8, (byte) 0x59, (byte) 0xE4, - (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, - (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, (byte) 0xC5, (byte) 0xF0, (byte) 0x59, (byte) 0xF7, - (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, - (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x61, (byte) 0x10, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, - (byte) 0x18, (byte) 0x62, (byte) 0x20, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x6A, - (byte) 0x24, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x72, (byte) 0x28, (byte) 0xC4, - (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x7A, (byte) 0x2C, (byte) 0xC5, (byte) 0xE8, (byte) 0x59, - (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, - (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, (byte) 0xC5, (byte) 0xF0, (byte) 0x59, - (byte) 0xF7, (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, - (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x61, (byte) 0x20, (byte) 0xC4, (byte) 0xE2, - (byte) 0x79, (byte) 0x18, (byte) 0x62, (byte) 0x30, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, - (byte) 0x6A, (byte) 0x34, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x72, (byte) 0x38, - (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x7A, (byte) 0x3C, (byte) 0xC5, (byte) 0xE8, - (byte) 0x59, (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xD8, - (byte) 0x58, (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, (byte) 0xC5, (byte) 0xF0, - (byte) 0x59, (byte) 0xF7, (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, (byte) 0xC5, (byte) 0xD8, - (byte) 0x58, (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x61, (byte) 0x30, (byte) 0xC4, - (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x62, (byte) 0x40, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, - (byte) 0x18, (byte) 0x6A, (byte) 0x44, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x72, - (byte) 0x48, (byte) 0xC4, (byte) 0xE2, (byte) 0x79, (byte) 0x18, (byte) 0x7A, (byte) 0x4C, (byte) 0xC5, - (byte) 0xE8, (byte) 0x59, (byte) 0xD4, (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xDD, (byte) 0xC5, - (byte) 0xE8, (byte) 0x58, (byte) 0xD3, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xC6, (byte) 0xC5, - (byte) 0xF0, (byte) 0x59, (byte) 0xCF, (byte) 0xC5, (byte) 0xF8, (byte) 0x58, (byte) 0xC1, (byte) 0xC5, - (byte) 0xE8, (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x41, (byte) 0x40, - (byte) 0xC3}; - private static final byte[] MUL_WINDOWS = { - (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x52, (byte) 0x10, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, - (byte) 0x5A, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x42, (byte) 0x30, (byte) 0xC5, - (byte) 0xF8, (byte) 0x10, (byte) 0x4A, (byte) 0x40, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, - (byte) 0x60, (byte) 0x10, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x68, (byte) 0x14, - (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x70, (byte) 0x18, (byte) 0xC4, (byte) 0xC2, - (byte) 0x79, (byte) 0x18, (byte) 0x78, (byte) 0x1C, (byte) 0xC5, (byte) 0xE8, (byte) 0x59, (byte) 0xE4, - (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, - (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, (byte) 0xC5, (byte) 0xF0, (byte) 0x59, (byte) 0xF7, - (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, - (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, (byte) 0x61, (byte) 0x10, (byte) 0xC4, (byte) 0xC2, - (byte) 0x79, (byte) 0x18, (byte) 0x60, (byte) 0x20, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, - (byte) 0x68, (byte) 0x24, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x70, (byte) 0x28, - (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x78, (byte) 0x2C, (byte) 0xC5, (byte) 0xE8, - (byte) 0x59, (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xD8, - (byte) 0x58, (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, (byte) 0xC5, (byte) 0xF0, - (byte) 0x59, (byte) 0xF7, (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, (byte) 0xC5, (byte) 0xD8, - (byte) 0x58, (byte) 0xE5, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, (byte) 0x61, (byte) 0x20, - (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x60, (byte) 0x30, (byte) 0xC4, (byte) 0xC2, - (byte) 0x79, (byte) 0x18, (byte) 0x68, (byte) 0x34, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, - (byte) 0x70, (byte) 0x38, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x78, (byte) 0x3C, - (byte) 0xC5, (byte) 0xE8, (byte) 0x59, (byte) 0xE4, (byte) 0xC5, (byte) 0xE0, (byte) 0x59, (byte) 0xED, - (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, (byte) 0xC5, (byte) 0xF8, (byte) 0x59, (byte) 0xEE, - (byte) 0xC5, (byte) 0xF0, (byte) 0x59, (byte) 0xF7, (byte) 0xC5, (byte) 0xD0, (byte) 0x58, (byte) 0xEE, - (byte) 0xC5, (byte) 0xD8, (byte) 0x58, (byte) 0xE5, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, - (byte) 0x61, (byte) 0x30, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x60, (byte) 0x40, - (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, (byte) 0x68, (byte) 0x44, (byte) 0xC4, (byte) 0xC2, - (byte) 0x79, (byte) 0x18, (byte) 0x70, (byte) 0x48, (byte) 0xC4, (byte) 0xC2, (byte) 0x79, (byte) 0x18, - (byte) 0x78, (byte) 0x4C, (byte) 0xC5, (byte) 0xE8, (byte) 0x59, (byte) 0xD4, (byte) 0xC5, (byte) 0xE0, - (byte) 0x59, (byte) 0xDD, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xD3, (byte) 0xC5, (byte) 0xF8, - (byte) 0x59, (byte) 0xC6, (byte) 0xC5, (byte) 0xF0, (byte) 0x59, (byte) 0xCF, (byte) 0xC5, (byte) 0xF8, - (byte) 0x58, (byte) 0xC1, (byte) 0xC5, (byte) 0xE8, (byte) 0x58, (byte) 0xC0, (byte) 0xC4, (byte) 0xC1, - (byte) 0x78, (byte) 0x11, (byte) 0x41, (byte) 0x40, (byte) 0xC3}; - - private static final byte[] MUL_AVX2_LINUX = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x46, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4E, (byte) 0x30, (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x52, - (byte) 0x10, (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x5A, (byte) 0x30, (byte) 0xC4, (byte) 0xE3, - (byte) 0x7D, (byte) 0x04, (byte) 0xE0, (byte) 0x00, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, - (byte) 0xE9, (byte) 0x00, (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, (byte) 0xF2, (byte) 0x44, - (byte) 0xC5, (byte) 0xCC, (byte) 0x59, (byte) 0xE4, (byte) 0xC5, (byte) 0xCC, (byte) 0x59, (byte) 0xED, - (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xF0, (byte) 0x55, (byte) 0xC4, (byte) 0xE3, - (byte) 0x7D, (byte) 0x04, (byte) 0xF9, (byte) 0x55, (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, - (byte) 0xD2, (byte) 0xEE, (byte) 0xC5, (byte) 0xEC, (byte) 0x59, (byte) 0xF6, (byte) 0xC5, (byte) 0xCC, - (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xEC, (byte) 0x59, (byte) 0xD7, (byte) 0xC5, (byte) 0xEC, - (byte) 0x58, (byte) 0xD5, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xE8, (byte) 0xAA, - (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xF1, (byte) 0xAA, (byte) 0xC4, (byte) 0xE3, - (byte) 0xFD, (byte) 0x01, (byte) 0xFB, (byte) 0x44, (byte) 0xC5, (byte) 0xC4, (byte) 0x59, (byte) 0xED, - (byte) 0xC5, (byte) 0xC4, (byte) 0x59, (byte) 0xF6, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, - (byte) 0xC0, (byte) 0xFF, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xC9, (byte) 0xFF, - (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, (byte) 0xDB, (byte) 0xEE, (byte) 0xC5, (byte) 0xE4, - (byte) 0x59, (byte) 0xC0, (byte) 0xC5, (byte) 0xD4, (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xDC, - (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xE4, (byte) 0x59, (byte) 0xC9, (byte) 0xC5, (byte) 0xCC, - (byte) 0x58, (byte) 0xC9, (byte) 0xC5, (byte) 0xEC, (byte) 0x58, (byte) 0xC9, (byte) 0xC5, (byte) 0xFC, - (byte) 0x11, (byte) 0x41, (byte) 0x10, (byte) 0xC5, (byte) 0xFC, (byte) 0x11, (byte) 0x49, (byte) 0x30, - (byte) 0xC5, (byte) 0xF8, (byte) 0x77, (byte) 0xC3 }; - private static final byte[] MUL_AVX2_WINDOWS = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x42, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4A, (byte) 0x30, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x10, - (byte) 0x50, (byte) 0x10, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x10, (byte) 0x58, (byte) 0x30, - (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xE0, (byte) 0x00, (byte) 0xC4, (byte) 0xE3, - (byte) 0x7D, (byte) 0x04, (byte) 0xE9, (byte) 0x00, (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, - (byte) 0xF2, (byte) 0x44, (byte) 0xC5, (byte) 0xCC, (byte) 0x59, (byte) 0xE4, (byte) 0xC5, (byte) 0xCC, - (byte) 0x59, (byte) 0xED, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xF0, (byte) 0x55, - (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xF9, (byte) 0x55, (byte) 0xC4, (byte) 0xE3, - (byte) 0xFD, (byte) 0x01, (byte) 0xD2, (byte) 0xEE, (byte) 0xC5, (byte) 0xEC, (byte) 0x59, (byte) 0xF6, - (byte) 0xC5, (byte) 0xCC, (byte) 0x58, (byte) 0xE4, (byte) 0xC5, (byte) 0xEC, (byte) 0x59, (byte) 0xD7, - (byte) 0xC5, (byte) 0xEC, (byte) 0x58, (byte) 0xD5, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, - (byte) 0xE8, (byte) 0xAA, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, (byte) 0xF1, (byte) 0xAA, - (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, (byte) 0xFB, (byte) 0x44, (byte) 0xC5, (byte) 0xC4, - (byte) 0x59, (byte) 0xED, (byte) 0xC5, (byte) 0xC4, (byte) 0x59, (byte) 0xF6, (byte) 0xC4, (byte) 0xE3, - (byte) 0x7D, (byte) 0x04, (byte) 0xC0, (byte) 0xFF, (byte) 0xC4, (byte) 0xE3, (byte) 0x7D, (byte) 0x04, - (byte) 0xC9, (byte) 0xFF, (byte) 0xC4, (byte) 0xE3, (byte) 0xFD, (byte) 0x01, (byte) 0xDB, (byte) 0xEE, - (byte) 0xC5, (byte) 0xE4, (byte) 0x59, (byte) 0xC0, (byte) 0xC5, (byte) 0xD4, (byte) 0x58, (byte) 0xC0, - (byte) 0xC5, (byte) 0xDC, (byte) 0x58, (byte) 0xC0, (byte) 0xC5, (byte) 0xE4, (byte) 0x59, (byte) 0xC9, - (byte) 0xC5, (byte) 0xCC, (byte) 0x58, (byte) 0xC9, (byte) 0xC5, (byte) 0xEC, (byte) 0x58, (byte) 0xC9, - (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x11, (byte) 0x41, (byte) 0x10, (byte) 0xC4, (byte) 0xC1, - (byte) 0x7C, (byte) 0x11, (byte) 0x49, (byte) 0x30, (byte) 0xC5, (byte) 0xF8, (byte) 0x77, (byte) 0xC3 }; - - private static final byte[] TRANSPOSE_LINUX = { - (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x46, (byte) 0x10, (byte) 0xC5, - (byte) 0xF8, (byte) 0x10, (byte) 0x4E, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x56, - (byte) 0x30, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x5E, (byte) 0x40, (byte) 0xC5, (byte) 0xF8, - (byte) 0x14, (byte) 0xE1, (byte) 0xC5, (byte) 0xE8, (byte) 0x14, (byte) 0xEB, (byte) 0xC5, (byte) 0xF8, - (byte) 0x15, (byte) 0xC1, (byte) 0xC5, (byte) 0xE8, (byte) 0x15, (byte) 0xCB, (byte) 0xC5, (byte) 0xD8, - (byte) 0x16, (byte) 0xD5, (byte) 0xC5, (byte) 0xD9, (byte) 0x15, (byte) 0xDD, (byte) 0xC5, (byte) 0xF8, - (byte) 0x16, (byte) 0xE1, (byte) 0xC5, (byte) 0xF9, (byte) 0x15, (byte) 0xC1, (byte) 0xC5, (byte) 0xF8, - (byte) 0x11, (byte) 0x52, (byte) 0x10, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x5A, (byte) 0x20, - (byte) 0xC5, (byte) 0xF8, (byte) 0x11, (byte) 0x62, (byte) 0x30, (byte) 0xC5, (byte) 0xF8, (byte) 0x11, - (byte) 0x42, (byte) 0x40, (byte) 0xC3 }; - private static final byte[] TRANSPOSE_WINDOWS = { - (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x42, (byte) 0x10, (byte) 0xC5, - (byte) 0xF8, (byte) 0x10, (byte) 0x4A, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x52, - (byte) 0x30, (byte) 0xC5, (byte) 0xF8, (byte) 0x10, (byte) 0x5A, (byte) 0x40, (byte) 0xC5, (byte) 0xF8, - (byte) 0x14, (byte) 0xE1, (byte) 0xC5, (byte) 0xE8, (byte) 0x14, (byte) 0xEB, (byte) 0xC5, (byte) 0xF8, - (byte) 0x15, (byte) 0xC1, (byte) 0xC5, (byte) 0xE8, (byte) 0x15, (byte) 0xCB, (byte) 0xC5, (byte) 0xD8, - (byte) 0x16, (byte) 0xD5, (byte) 0xC5, (byte) 0xD9, (byte) 0x15, (byte) 0xDD, (byte) 0xC5, (byte) 0xF8, - (byte) 0x16, (byte) 0xE1, (byte) 0xC5, (byte) 0xF9, (byte) 0x15, (byte) 0xC1, (byte) 0xC4, (byte) 0xC1, - (byte) 0x78, (byte) 0x11, (byte) 0x50, (byte) 0x10, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, - (byte) 0x58, (byte) 0x20, (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, (byte) 0x60, (byte) 0x30, - (byte) 0xC4, (byte) 0xC1, (byte) 0x78, (byte) 0x11, (byte) 0x40, (byte) 0x40, (byte) 0xC3 }; - - private static final byte[] STORE_LINUX = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x46, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4E, (byte) 0x30, (byte) 0xC5, (byte) 0xFC, (byte) 0x11, (byte) 0x02, - (byte) 0xC5, (byte) 0xFC, (byte) 0x11, (byte) 0x4A, (byte) 0x20, (byte) 0xC5, (byte) 0xF8, (byte) 0x77, - (byte) 0xC3 }; - private static final byte[] STORE_WINDOWS = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x42, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4A, (byte) 0x30, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x11, - (byte) 0x00, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x11, (byte) 0x48, (byte) 0x20, (byte) 0xC5, - (byte) 0xF8, (byte) 0x77, (byte) 0xC3 }; - - private static final byte[] SET_AVX2_LINUX = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x46, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4E, (byte) 0x30, (byte) 0xC5, (byte) 0xFC, (byte) 0x11, (byte) 0x42, - (byte) 0x10, (byte) 0xC5, (byte) 0xFC, (byte) 0x11, (byte) 0x4A, (byte) 0x30, (byte) 0xC5, (byte) 0xF8, - (byte) 0x77, (byte) 0xC3 }; - private static final byte[] SET_AVX2_WINDOWS = { - (byte) 0xC5, (byte) 0xFC, (byte) 0x10, (byte) 0x42, (byte) 0x10, (byte) 0xC5, - (byte) 0xFC, (byte) 0x10, (byte) 0x4A, (byte) 0x30, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x11, - (byte) 0x40, (byte) 0x10, (byte) 0xC4, (byte) 0xC1, (byte) 0x7C, (byte) 0x11, (byte) 0x48, (byte) 0x30, - (byte) 0xC5, (byte) 0xF8, (byte) 0x77, (byte) 0xC3 }; - - private static final byte[] NOOP = { (byte) 0xC3 }; - - static { - try { - WithJvmci.link(); - } catch (Exception e) { - throw new AssertionError(e); - } - } - - public static native void mulAvx(Matrix4f a, Matrix4f b, Matrix4f r); - public static native void mulAvx2(Matrix4f a, Matrix4f b, Matrix4f r); - public static native void setAvx2(Matrix4f a, Matrix4f r); - public static native void invert(Matrix4f a, Matrix4f r); - public static native void transpose(Matrix4f a, Matrix4f r); - public static native void storeAvx2(Matrix4f a, long addr); - public static native void noop_2_args(Matrix4f a, long addr); - - public static long address(ByteBuffer bb) { - return U.getLong(bb, A); - } - - public static void link() throws Exception { - String os = System.getProperty("os.name"); - boolean isWindows = os.contains("Windows"); - JVMCIBackend jvmci = JVMCI.getRuntime().getHostJVMCIBackend(); - extracted(isWindows ? MUL_WINDOWS : MUL_LINUX, WithJvmci.class.getDeclaredMethod("mulAvx", Matrix4f.class, Matrix4f.class, Matrix4f.class), jvmci); - extracted(isWindows ? MUL_AVX2_WINDOWS : MUL_AVX2_LINUX, WithJvmci.class.getDeclaredMethod("mulAvx2", Matrix4f.class, Matrix4f.class, Matrix4f.class), jvmci); - extracted(isWindows ? INVERT_WINDOWS : INVERT_LINUX, WithJvmci.class.getDeclaredMethod("invert", Matrix4f.class, Matrix4f.class), jvmci); - extracted(isWindows ? TRANSPOSE_WINDOWS : TRANSPOSE_LINUX, WithJvmci.class.getDeclaredMethod("transpose", Matrix4f.class, Matrix4f.class), jvmci); - extracted(isWindows ? STORE_WINDOWS : STORE_LINUX, WithJvmci.class.getDeclaredMethod("storeAvx2", Matrix4f.class, long.class), jvmci); - extracted(NOOP, WithJvmci.class.getDeclaredMethod("noop_2_args", Matrix4f.class, long.class), jvmci); - extracted(isWindows ? SET_AVX2_WINDOWS : SET_AVX2_LINUX, WithJvmci.class.getDeclaredMethod("setAvx2", Matrix4f.class, Matrix4f.class), jvmci); - } - - private static void extracted(byte[] code, Method m, JVMCIBackend jvmci) { - ResolvedJavaMethod rm = jvmci.getMetaAccess().lookupJavaMethod(m); - HotSpotCompiledNmethod nm = new HotSpotCompiledNmethod(m.getName(), code, code.length, new Site[0], - new Assumptions.Assumption[0], new ResolvedJavaMethod[0], new HotSpotCompiledCode.Comment[0], new byte[0], 1, - new DataPatch[0], true, 0, null, (HotSpotResolvedJavaMethod) rm, JVMCICompiler.INVOCATION_ENTRY_BCI, 1, 0, false); - jvmci.getCodeCache().setDefaultCode(rm, nm); - } -}