RFR: 8314124: RISC-V: implement Base64 intrinsic - decoding
Hamlin Li
mli at openjdk.org
Tue Aug 20 18:31:12 UTC 2024
## Performance
benchmarks run on CanVM-K230
data
<google-sheets-html-origin style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
Benchmark m2+m1+scalar | (addSpecial) | (errorIndex) | (lineSize) | (maxNumBytes) | Mode | Cnt | Score +intrinsic+rvv | Score -intrinsic | Error | Units | Improvement
-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
Base64Decode.testBase64Decode | 0 | 144 | 4 | 1 | avgt | 10 | 97.771 | 98.506 | 0.713 | ns/op | 1.008
Base64Decode.testBase64Decode | 0 | 144 | 4 | 3 | avgt | 10 | 117.715 | 118.422 | 0.428 | ns/op | 1.006
Base64Decode.testBase64Decode | 0 | 144 | 4 | 7 | avgt | 10 | 174.625 | 172.767 | 7.671 | ns/op | 0.989
Base64Decode.testBase64Decode | 0 | 144 | 4 | 32 | avgt | 10 | 286.391 | 317.175 | 11.443 | ns/op | 1.107
Base64Decode.testBase64Decode | 0 | 144 | 4 | 64 | avgt | 10 | 336.932 | 503.257 | 15.738 | ns/op | 1.494
Base64Decode.testBase64Decode | 0 | 144 | 4 | 80 | avgt | 10 | 418.894 | 625.485 | 7.21 | ns/op | 1.493
Base64Decode.testBase64Decode | 0 | 144 | 4 | 96 | avgt | 10 | 353.813 | 698.67 | 15.485 | ns/op | 1.975
Base64Decode.testBase64Decode | 0 | 144 | 4 | 112 | avgt | 10 | 499.243 | 866.909 | 4.427 | ns/op | 1.736
Base64Decode.testBase64Decode | 0 | 144 | 4 | 512 | avgt | 10 | 1451.277 | 3530.048 | 3.685 | ns/op | 2.432
Base64Decode.testBase64Decode | 0 | 144 | 4 | 1000 | avgt | 10 | 2258.785 | 5964.066 | 9.075 | ns/op | 2.64
Base64Decode.testBase64Decode | 0 | 144 | 4 | 20000 | avgt | 10 | 39689.204 | 122334.929 | 255.195 | ns/op | 3.082
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 1 | avgt | 10 | 187.032 | 158.558 | 7.606 | ns/op | 0.848
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 3 | avgt | 10 | 209.558 | 200.774 | 7.648 | ns/op | 0.958
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 7 | avgt | 10 | 556.696 | 505.072 | 8.748 | ns/op | 0.907
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 32 | avgt | 10 | 2139.767 | 1876.825 | 13.787 | ns/op | 0.877
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 64 | avgt | 10 | 6142.353 | 3818.199 | 35.622 | ns/op | 0.622
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 80 | avgt | 10 | 8746.205 | 4787.155 | 109.819 | ns/op | 0.547
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 96 | avgt | 10 | 11429.643 | 5225.869 | 57.408 | ns/op | 0.457
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 112 | avgt | 10 | 14586.534 | 6528.511 | 86.167 | ns/op | 0.448
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 512 | avgt | 10 | 82884.484 | 29764.031 | 1538.338 | ns/op | 0.359
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 1000 | avgt | 10 | 166154.047 | 56193.313 | 934.885 | ns/op | 0.338
Base64Decode.testBase64MIMEDecode | 0 | 144 | 4 | 20000 | avgt | 10 | 3178903.467 | 912297.825 | 10766.282 | ns/op | 0.287
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 1 | avgt | 10 | 104.456 | 97.654 | 1.042 | ns/op | 0.935
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 3 | avgt | 10 | 117.342 | 116.513 | 0.757 | ns/op | 0.993
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 7 | avgt | 10 | 176.452 | 172.904 | 2.236 | ns/op | 0.98
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 32 | avgt | 10 | 289.951 | 321.197 | 13.252 | ns/op | 1.108
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 64 | avgt | 10 | 341.196 | 504.073 | 10.689 | ns/op | 1.477
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 80 | avgt | 10 | 425.068 | 635.353 | 2.713 | ns/op | 1.495
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 96 | avgt | 10 | 355.75 | 712.835 | 30.237 | ns/op | 2.004
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 112 | avgt | 10 | 492.822 | 867.697 | 5.785 | ns/op | 1.761
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 512 | avgt | 10 | 1468.55 | 3318.803 | 2.294 | ns/op | 2.26
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 1000 | avgt | 10 | 2319.816 | 5961.423 | 12.996 | ns/op | 2.57
Base64Decode.testBase64URLDecode | 0 | 144 | 4 | 20000 | avgt | 10 | 39549.088 | 121430.165 | 69.5 | ns/op | 3.07
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 1 | avgt | 10 | 22485.102 | 21945.412 | 137.514 | ns/op | 0.976
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 3 | avgt | 10 | 22083.094 | 22710.36 | 141.745 | ns/op | 1.028
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 7 | avgt | 10 | 22330.146 | 22280.193 | 187.924 | ns/op | 0.998
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 32 | avgt | 10 | 22398.4 | 22701.438 | 166.468 | ns/op | 1.014
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 64 | avgt | 10 | 22754.157 | 22274.207 | 166.477 | ns/op | 0.979
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 80 | avgt | 10 | 21927.062 | 22913.011 | 1134.089 | ns/op | 1.045
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 96 | avgt | 10 | 22250.999 | 21675.835 | 144.776 | ns/op | 0.974
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 112 | avgt | 10 | 22470.258 | 21932.519 | 139.712 | ns/op | 0.976
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 512 | avgt | 10 | 22317.662 | 22568.852 | 151.706 | ns/op | 1.011
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 1000 | avgt | 10 | 22934.285 | 21969.27 | 52.458 | ns/op | 0.958
Base64Decode.testBase64WithErrorInputsDecode | 0 | 144 | 4 | 20000 | avgt | 10 | 23931.765 | 23779.238 | 657.466 | ns/op | 0.994
</google-sheets-html-origin>
-------------
Commit messages:
- fix length issue
- minor
- merge master
- fix misc
- fix MIME perf issue; misc
- minor
- merge master
- minor
- Initial commit
Changes: https://git.openjdk.org/jdk/pull/20026/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20026&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8314124
Stats: 284 lines in 3 files changed: 282 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/20026.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/20026/head:pull/20026
PR: https://git.openjdk.org/jdk/pull/20026
More information about the hotspot-dev
mailing list