RFR: 8315612: RISC-V: intrinsic for unsignedMultiplyHigh
Vladimir Kempik
vkempik at openjdk.org
Mon Sep 4 10:03:03 UTC 2023
Hello
Please review this simple patch, it add c2 implementation of intrinsic for unsignedMultiplyHigh.
The generated code changes from:
0x0000003fbcfb12f8: mulh t4,t2,t3
2.99% 0x0000003fbcfb12fc: srai t5,t2,0x3f
0x0000003fbcfb1300: and t5,t5,t3
0x0000003fbcfb1304: srai t3,t3,0x3f
0x0000003fbcfb1308: and t2,t3,t2
0x0000003fbcfb130c: add t4,t4,t5
0x0000003fbcfb130e: add t2,t2,t4 ;*ladd {reexecute=0 rethrow=0 return_oop=0}
to
0x0000003fdcfb6668: mulhu t2,t2,t3 ;*invokestatic unsignedMultiplyHigh {reexecute=0 rethrow=0 return_oop=0}
Clear code size reduction and potentially some performance boost.
However the jmh benchmark unsignedMultiplyHighLongLong didn't show any difference as the hottest place is the fence ( getfield isDone ):
0x0000003fdcfb6660: ld t3,64(t4)
0x0000003fdcfb6664: ld t2,56(t4)
0x0000003fdcfb6668: mulhu t2,t2,t3 ;*invokestatic unsignedMultiplyHigh {reexecute=0 rethrow=0 return_oop=0}
; - org.openjdk.bench.java.lang.MathBench::unsignedMultiplyHighLongLong at 8 (line 545)
; - org.openjdk.bench.java.lang.jmh_generated.MathBench_unsignedMultiplyHighLongLong_jmhTest::unsignedMultiplyHighLongLong_thrpt_jmhStub at 17 (line 119)
3.12% 0x0000003fdcfb666c: lbu t3,148(s3) ;*invokestatic consumeCompiler {reexecute=0 rethrow=0 return_oop=0}
; - org.openjdk.jmh.infra.Blackhole::consume at 7 (line 393)
; - org.openjdk.bench.java.lang.jmh_generated.MathBench_unsignedMultiplyHighLongLong_jmhTest::unsignedMultiplyHighLongLong_thrpt_jmhStub at 20 (line 119)
0x0000003fdcfb6670: fence ir,iorw ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0}
; - org.openjdk.bench.java.lang.jmh_generated.MathBench_unsignedMultiplyHighLongLong_jmhTest::unsignedMultiplyHighLongLong_thrpt_jmhStub at 30 (line 121)
62.78% 0x0000003fdcfb6674: addi s2,s2,1 ;*ladd {reexecute=0 rethrow=0 return_oop=0}
; - org.openjdk.bench.java.lang.jmh_generated.MathBench_unsignedMultiplyHighLongLong_jmhTest::unsignedMultiplyHighLongLong_thrpt_jmhStub at 26 (line 120)
tier1/tier2 tbd
-------------
Commit messages:
- initial commit
Changes: https://git.openjdk.org/jdk/pull/15558/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15558&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8315612
Stats: 15 lines in 1 file changed: 15 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/15558.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15558/head:pull/15558
PR: https://git.openjdk.org/jdk/pull/15558
More information about the hotspot-compiler-dev
mailing list