On Thu, 29 May 2025 18:49:28 GMT, Mohamed Issa <d...@openjdk.org> wrote:
>> test/micro/org/openjdk/bench/java/lang/CbrtPerf.java line 56: >> >>> 54: public static class CbrtPerfRanges { >>> 55: public static int cbrtInputCount = 2048; >>> 56: >> >> Please create separate CbrtPerfSpecialValues for +/- 0.0 and +/- Infinity >> and NaN values. >> I understand that handling special cases in intrinsic may impact general >> case performance but its ok to have atleast micro for it. > > Ok, I added this to the new set of micro-benchmarks. I kept them as variable > values. With Intrinsic Disabled:- Benchmark Mode Cnt Score Error Units CbrtPerf.CbrtPerfSpecialValues.cbrtDouble0 thrpt 2 1343559.770 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleInf thrpt 2 881930.283 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNaN thrpt 2 973307.409 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNegative0 thrpt 2 1342454.046 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNegativeInf thrpt 2 880169.071 ops/ms With Intrinsic Enabled:- Benchmark Mode Cnt Score Error Units CbrtPerf.CbrtPerfSpecialValues.cbrtDouble0 thrpt 2 293228.991 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleInf thrpt 2 329190.573 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNaN thrpt 2 334625.414 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNegative0 thrpt 2 270939.709 ops/ms CbrtPerf.CbrtPerfSpecialValues.cbrtDoubleNegativeInf thrpt 2 328087.618 ops/ms As expected, optimized intrinsic penalizes special case performance to optimize generic case control paths. Have you tried adding these special checks and measuring the impact on performance? Alternatively, we can create a follow up JBS to address it later. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24470#discussion_r2116295936