Skip to content

Commit 15b0a1c

Browse files
committed
Add intrinsic for Math.unsignedMultiplyHigh.
1 parent 1bf80cf commit 15b0a1c

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerSubExactNode;
182182
import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerSubExactOverflowNode;
183183
import org.graalvm.compiler.replacements.nodes.arithmetic.IntegerSubExactSplitNode;
184+
import org.graalvm.compiler.replacements.nodes.arithmetic.UnsignedMulHighNode;
184185
import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
185186
import org.graalvm.compiler.serviceprovider.SpeculationReasonGroup;
186187
import org.graalvm.word.LocationIdentity;
@@ -1011,6 +1012,15 @@ public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Rec
10111012
return true;
10121013
}
10131014
});
1015+
if (JavaVersionUtil.JAVA_SPEC >= 18) {
1016+
r.register(new InvocationPlugin("unsignedMultiplyHigh", long.class, long.class) {
1017+
@Override
1018+
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode x, ValueNode y) {
1019+
b.addPush(JavaKind.Long, new UnsignedMulHighNode(x, y));
1020+
return true;
1021+
}
1022+
});
1023+
}
10141024
}
10151025

10161026
private static void registerRound(boolean supportsRound, Registration r, String name, RoundingMode mode) {

0 commit comments

Comments
 (0)