< prev index next >

test/compiler/intrinsics/montgomerymultiply/MontgomeryMultiplyTest.java

Print this page




  22 // questions.
  23 //
  24 //
  25 
  26 import java.lang.invoke.MethodHandle;
  27 import java.lang.invoke.MethodHandles;
  28 import java.lang.invoke.MethodType;
  29 import java.lang.reflect.Constructor;
  30 import java.lang.reflect.Field;
  31 import java.lang.reflect.Method;
  32 import java.math.BigInteger;
  33 import java.util.Arrays;
  34 import java.util.Random;
  35 
  36 /**
  37  * @test
  38  * @bug 8130150
  39  * @library /testlibrary
  40  * @requires (os.simpleArch == "x64") & (os.family != "windows")
  41  * @summary Verify that the Montgomery multiply intrinsic works and correctly checks its arguments.
  42  * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic
  43  *      MontgomeryMultiplyTest
  44  * @run main/othervm -XX:+UseMontgomerySquareIntrinsic -XX:-UseMontgomeryMultiplyIntrinsic
  45  *      MontgomeryMultiplyTest
  46  * @run main/othervm -XX:-UseMontgomerySquareIntrinsic -XX:+UseMontgomeryMultiplyIntrinsic
  47  *      MontgomeryMultiplyTest
  48  */
  49 
  50 public class MontgomeryMultiplyTest {
  51 
  52     static final MethodHandles.Lookup lookup = MethodHandles.lookup();
  53 
  54     static final MethodHandle montgomeryMultiplyHandle, montgomerySquareHandle;
  55     static final MethodHandle bigIntegerConstructorHandle;
  56     static final Field bigIntegerMagField;
  57 
  58     static {
  59        // Use reflection to gain access to the methods we want to test.
  60         try {
  61             Method m = BigInteger.class.getDeclaredMethod("montgomeryMultiply",
  62                 /*a*/int[].class, /*b*/int[].class, /*n*/int[].class, /*len*/int.class,
  63                 /*inv*/long.class, /*product*/int[].class);
  64             m.setAccessible(true);
  65             montgomeryMultiplyHandle = lookup.unreflect(m);
  66 
  67             m = BigInteger.class.getDeclaredMethod("montgomerySquare",




  22 // questions.
  23 //
  24 //
  25 
  26 import java.lang.invoke.MethodHandle;
  27 import java.lang.invoke.MethodHandles;
  28 import java.lang.invoke.MethodType;
  29 import java.lang.reflect.Constructor;
  30 import java.lang.reflect.Field;
  31 import java.lang.reflect.Method;
  32 import java.math.BigInteger;
  33 import java.util.Arrays;
  34 import java.util.Random;
  35 
  36 /**
  37  * @test
  38  * @bug 8130150
  39  * @library /testlibrary
  40  * @requires (os.simpleArch == "x64") & (os.family != "windows")
  41  * @summary Verify that the Montgomery multiply intrinsic works and correctly checks its arguments.
  42  * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic
  43  *      -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
  44  * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+UseMontgomerySquareIntrinsic
  45  *      -XX:-UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
  46  * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-UseMontgomerySquareIntrinsic
  47  *      -XX:+UseMontgomeryMultiplyIntrinsic MontgomeryMultiplyTest
  48  */
  49 
  50 public class MontgomeryMultiplyTest {
  51 
  52     static final MethodHandles.Lookup lookup = MethodHandles.lookup();
  53 
  54     static final MethodHandle montgomeryMultiplyHandle, montgomerySquareHandle;
  55     static final MethodHandle bigIntegerConstructorHandle;
  56     static final Field bigIntegerMagField;
  57 
  58     static {
  59        // Use reflection to gain access to the methods we want to test.
  60         try {
  61             Method m = BigInteger.class.getDeclaredMethod("montgomeryMultiply",
  62                 /*a*/int[].class, /*b*/int[].class, /*n*/int[].class, /*len*/int.class,
  63                 /*inv*/long.class, /*product*/int[].class);
  64             m.setAccessible(true);
  65             montgomeryMultiplyHandle = lookup.unreflect(m);
  66 
  67             m = BigInteger.class.getDeclaredMethod("montgomerySquare",


< prev index next >