RFR: 8156943: aarch64: string compare does not support CompactStrings
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.
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