RFR: 8327147: optimized implementation of round operation for x86_64 CPUs

Dean Long dlong at openjdk.org
Fri Mar 1 23:18:52 UTC 2024


On Fri, 1 Mar 2024 21:44:32 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:

>> The goal of this PR is to provide ~4x faster implementation of Math.ceil, Math.floor and Math.rint for x86_64 CPUs.
>> 
>> Below is the performance data on an Intel Tiger Lake machine. 
>> 
>> <html xmlns:v="urn:schemas-microsoft-com:vml"
>> xmlns:o="urn:schemas-microsoft-com:office:office"
>> xmlns:x="urn:schemas-microsoft-com:office:excel"
>> xmlns="http://www.w3.org/TR/REC-html40">
>> 
>> <head>
>> 
>> <meta name=ProgId content=Excel.Sheet>
>> <meta name=Generator content="Microsoft Excel 15">
>> <link id=Main-File rel=Main-File
>> href="file:///C:/Users/sparasa/AppData/Local/Temp/msohtmlclip1/01/clip.htm">
>> <link rel=File-List
>> href="file:///C:/Users/sparasa/AppData/Local/Temp/msohtmlclip1/01/clip_filelist.xml">
>> 
>> 
>> </head>
>> 
>> <body link="#0563C1" vlink="#954F72">
>> 
>> 
>> Benchmark | Stock JDK   (ops/ms) | This PR (ops/ms) | Speedup
>> -- | -- | -- | --
>> MathBench.ceilDouble | 547979 | 2170198 | 3.96
>> MathBench.floorDouble | 547979 | 2167459 | 3.96
>> MathBench.rintDouble | 547962 | 2130499 | 3.89
>> 
>> 
>> 
>> </body>
>> 
>> </html>
>
> src/hotspot/cpu/x86/x86.ad line 3895:
> 
>> 3893: 
>> 3894: /*
>> 3895: instruct roundD_mem(legRegD dst, memory src, immU8 rmode) %{
> 
> The roundD_mem instruct could be removed now that it is not used. Also the PR could be titled as "Improve performance of Math ceil,  floor, and rint for x86".

OK, let's remove roundD_mem to avoid confusion.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/18089#discussion_r1509660183


More information about the hotspot-compiler-dev mailing list