[aarch64-port-dev ] RFR(M): 8196402: AARCH64: create intrinsic for Math.log

Dmitrij Pochepko dmitrij.pochepko at bell-sw.com
Wed Jun 20 14:26:12 UTC 2018


Hi,


On 20.06.2018 11:31, Andrew Haley wrote:
> On 06/20/2018 12:45 AM, White, Derek wrote:
>>   - Line 68: Could align to 64 bytes. We're going to load the first 64 bytes, may as well use one cache line.
Agree. It'll be a bit better to use 64 bytes alignment. I changed it to 
64 and tested the revised patch. I could not see a difference in 
synthetic benchmark, but single invocation might gain a small difference 
in case of L1 miss.
>>
>>   - Lines 71, 77, 79. You could comment these lines with "_coeff", "_log2", and "_L_tbl", for clearer correspondence to x86 code.
Added respective comment.
>>
>> - Line 204: I believe that we should be looking for equal to 0.0:
>> 204 //      if (X = 0.0d) return -INFINITY;
> Yes.  if (X == 0.0d).
Thank you for noticing this typo. Assembly is correct. I fixed this comment.
>> - The (float)(zeroExponent(X) code was fun.
>>
>> - Are there any concerns about denormalized inputs? I didn't see any obvious problem in the code pulling aaprt and adding in exponents, but there's nothing obvious in that code to me.
> IEEE denormals don't usually require any special handling.
There is no denormals-specific code in this algorithm.
>
>> - The RETURN_MINF_OR_NAN block can generate a wide range of signaling and non-signaling NaNs. I forget how signaling Nans are treated in the Java math mode - are they just treated as quiet NaNs or are they never supposed to appear?
> Java doesn't care.  However, it is possible to use DoubleToRawLongBits to
> extract some information, and this is fine.

I also aligned comments as in sin/cos patch and fixed the copyright.

Here, the original code has table in HEX and also the article has HEX 
representation, so I kept HEX in the table.

Please take a look at updated webrev: 
http://cr.openjdk.java.net/~dpochepk/8196402/webrev.06/

Thanks,
Dmitrij


More information about the aarch64-port-dev mailing list