28 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.COS;
29 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.EXP;
30 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.LOG;
31 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.LOG10;
32 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.SIN;
33 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.TAN;
34
35 import org.graalvm.compiler.bytecode.BytecodeProvider;
36 import org.graalvm.compiler.lir.aarch64.AArch64ArithmeticLIRGeneratorTool.RoundingMode;
37 import org.graalvm.compiler.nodes.ValueNode;
38 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
39 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;
40 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
41 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin.Receiver;
42 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
43 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration;
44 import org.graalvm.compiler.nodes.java.AtomicReadAndAddNode;
45 import org.graalvm.compiler.nodes.java.AtomicReadAndWriteNode;
46 import org.graalvm.compiler.nodes.memory.address.AddressNode;
47 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode;
48 import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode;
49 import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode;
50 import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation;
51 import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
52 import jdk.internal.vm.compiler.word.LocationIdentity;
53
54 import jdk.vm.ci.meta.JavaKind;
55 import jdk.vm.ci.meta.ResolvedJavaMethod;
56 import sun.misc.Unsafe;
57
58 public class AArch64GraphBuilderPlugins {
59
60 public static void register(Plugins plugins, BytecodeProvider bytecodeProvider, boolean explicitUnsafeNullChecks,
61 boolean registerMathPlugins) {
62 register(plugins, bytecodeProvider, explicitUnsafeNullChecks, registerMathPlugins, true);
63 }
64
65 public static void register(Plugins plugins, BytecodeProvider bytecodeProvider, boolean explicitUnsafeNullChecks,
66 boolean registerMathPlugins, boolean emitJDK9StringSubstitutions) {
67 InvocationPlugins invocationPlugins = plugins.getInvocationPlugins();
68 invocationPlugins.defer(new Runnable() {
69 @Override
70 public void run() {
71 registerIntegerLongPlugins(invocationPlugins, JavaKind.Int, bytecodeProvider);
72 registerIntegerLongPlugins(invocationPlugins, JavaKind.Long, bytecodeProvider);
73 if (registerMathPlugins) {
74 registerMathPlugins(invocationPlugins);
75 }
76 if (emitJDK9StringSubstitutions) {
77 registerStringLatin1Plugins(invocationPlugins, bytecodeProvider);
78 registerStringUTF16Plugins(invocationPlugins, bytecodeProvider);
|
28 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.COS;
29 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.EXP;
30 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.LOG;
31 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.LOG10;
32 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.SIN;
33 import static org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation.TAN;
34
35 import org.graalvm.compiler.bytecode.BytecodeProvider;
36 import org.graalvm.compiler.lir.aarch64.AArch64ArithmeticLIRGeneratorTool.RoundingMode;
37 import org.graalvm.compiler.nodes.ValueNode;
38 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
39 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;
40 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
41 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin.Receiver;
42 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
43 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration;
44 import org.graalvm.compiler.nodes.java.AtomicReadAndAddNode;
45 import org.graalvm.compiler.nodes.java.AtomicReadAndWriteNode;
46 import org.graalvm.compiler.nodes.memory.address.AddressNode;
47 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode;
48 import org.graalvm.compiler.replacements.TargetGraphBuilderPlugins;
49 import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode;
50 import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode;
51 import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode.UnaryOperation;
52 import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
53 import jdk.internal.vm.compiler.word.LocationIdentity;
54
55 import jdk.vm.ci.code.Architecture;
56 import jdk.vm.ci.meta.JavaKind;
57 import jdk.vm.ci.meta.ResolvedJavaMethod;
58 import sun.misc.Unsafe;
59
60 public class AArch64GraphBuilderPlugins implements TargetGraphBuilderPlugins {
61 @Override
62 public void register(Plugins plugins, BytecodeProvider replacementsBytecodeProvider, Architecture arch, boolean explicitUnsafeNullChecks, boolean registerMathPlugins,
63 boolean emitJDK9StringSubstitutions, boolean useFMAIntrinsics) {
64 register(plugins, replacementsBytecodeProvider, explicitUnsafeNullChecks, registerMathPlugins, emitJDK9StringSubstitutions);
65 }
66
67 public static void register(Plugins plugins, BytecodeProvider bytecodeProvider, boolean explicitUnsafeNullChecks,
68 boolean registerMathPlugins) {
69 register(plugins, bytecodeProvider, explicitUnsafeNullChecks, registerMathPlugins, true);
70 }
71
72 public static void register(Plugins plugins, BytecodeProvider bytecodeProvider, boolean explicitUnsafeNullChecks,
73 boolean registerMathPlugins, boolean emitJDK9StringSubstitutions) {
74 InvocationPlugins invocationPlugins = plugins.getInvocationPlugins();
75 invocationPlugins.defer(new Runnable() {
76 @Override
77 public void run() {
78 registerIntegerLongPlugins(invocationPlugins, JavaKind.Int, bytecodeProvider);
79 registerIntegerLongPlugins(invocationPlugins, JavaKind.Long, bytecodeProvider);
80 if (registerMathPlugins) {
81 registerMathPlugins(invocationPlugins);
82 }
83 if (emitJDK9StringSubstitutions) {
84 registerStringLatin1Plugins(invocationPlugins, bytecodeProvider);
85 registerStringUTF16Plugins(invocationPlugins, bytecodeProvider);
|