RFR: 8156943: aarch64: string compare does not support CompactStrings

Edward Nevill edward.nevill at gmail.com
Tue May 24 08:26:37 UTC 2016

On Fri, 2016-05-20 at 17:00 +0100, Andrew Haley wrote:
> On 05/20/2016 04:56 PM, Edward Nevill wrote:
> > fcmpd(vtmpZ, 0.0) generates EQ iff the lower 64 bits of vtmpZ are 0
> > otherwise NE.
> > 
> > If it is the case that fcmpd generates EQ for some bit pattern other than
> > all 64 bits 0 then indeed it is broken.
> There are two zeroes, +0 and -0.
> Andrew.

The following webrev fixes this by instead moving the simd registers to general registers.


The different cases are handled as follows

LL: 8 chars are loaded to each of 2 general regs
UU: 4 chars are loaded to each of 2 general regs
LU/UL: 4 U chars loaded to 1 general regs, 4 L chars loaded to a simd reg, zip1 used to convert L to U and then moved to a general reg.

Tested fastdebug jtreg hotspot and langtools,

All the best,

More information about the hotspot-compiler-dev mailing list