loadUB2L: SPARC vs. x86 (6797305)
Christian.Thalinger at Sun.COM
Tue Feb 3 08:46:16 PST 2009
While working on 6797305 it looked more closely at the AD files and I
saw that there is already some kind of unsigned byte load to long
(loadUBL) on SPARC:
match(Set dst (AndL (ConvI2L (LoadB mem)) bytemask));
But it's a bit different than the (commented) one on x86:
match(Set dst (ConvI2L (AndI (LoadB mem) bytemask)));
The SPARC one matches code like:
((long) ba) & 0xFF;
while the x86 one matches:
(long) (ba & 0xFF);
I wonder if the SPARC one is a common pattern and has been added
intentional. I'd guess that the x86 one is more common.
My patch will change the match to:
match(Set dst (ConvI2L (LoadUB mem)));
what is more easy to transform in the ideal graph.
So the question is, which one of the two should we optimize? Or even
both of them?
More information about the hotspot-compiler-dev