RFR: 8077615: AARCH64: Add C2 intrinsic for BigInteger::multiplyToLen() method

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Apr 13 19:12:36 UTC 2015


In the test you removed next line from previous test. Can you restore them?:

            System.out.println(b1);
            System.out.println(b2);

I have a little problem of mapping code from comments to assembler for 
multiply_64_x_64_loop(). Extend comments.
I think in next comments x_xstart should be used on left side instead of 
'product':

+  umulh(rscratch1, x_xstart, y_idx); // product * y_idx -> 
rscratch1:product
+  mul(product, x_xstart, y_idx);
+  adds(product, product, carry);
+  adc(carry, rscratch1, zr);   // product * y_idx + carry -> carry:product

Also why not use BytesPerLong instead of BytesPerWord?:

+  str(product, offsetted_address(z, kdx, Address::uxtw(LogBytesPerInt), 
0, BytesPerWord));


Thanks,
Vladimir

On 4/13/15 11:00 AM, Andrew Haley wrote:
> Follows x86, but changed to a more idiomatic AArch64 style for
> efficiency.
>
> I strengthened the regression test.  As far as I can see it doesn't
> robustly check a corner case for carry propagation (i.e. when there is
> a double carry.)  This is very easy to get wrong, so I added it.
>
> http://cr.openjdk.java.net/~aph/8077615/
>
> Andrew.
>


More information about the hotspot-dev mailing list