Following up on the as yet unresolved thread initiated here:

http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-September/035289.html

Thanks,

Brian

On Sep 21, 2015, at 11:15 AM, Brian Burkhalter <brian.burkhal...@oracle.com> 
wrote:

> Hello, Sergey,
> 
> On Sep 19, 2015, at 12:51 PM, Sergey Bylokhov <sergey.bylok...@oracle.com> 
> wrote:
> 
>> Hello, I have a related question about the adding of methods to the Math 
>> class. Some methods **Exact methods were added to the Math class in jdk8, 
>> which throws an exceptions in case of overflow. Is it possible to add the 
>> similar saturation arithmetic? It would be quite good to realize a full 
>> range of these methods, and give the chance to hotspot to use an intrinsic.
> 
> If there are particular methods of interest and there are no corresponding 
> issues on file, then one or more issues should be filed in the Java Bug 
> System so that we may consider and track them according to the usual process. 
> As there is currently an attempt to address some of the omissions in the Math 
> area, now would be a good time to get these issues on record. So I suggest 
> that the interested parties do just that. I think that one issue containing 
> several method requests would be sufficient if it concerns the same area of 
> code.
> 
> As to the compiler intrinsics, we are looking into adding a few math-related 
> things here as well. This would be tracked by a separate issue which we would 
> file ourselves.
> 
> Regards,
> 
> Brian
> 
>> This is mostly request from the java2d team:
>> 
>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2008-December/000954.html
>> "I currently use an utility-class heavily for the XRender Java2D
>> backend, which performs saturated casts:
>> 
>> 1.) return (short) (x > Short.MAX_VALUE ? Short.MAX_VALUE : (x <
>> Short.MIN_VALUE ? Short.MIN_VALUE : x));
>> 2.) return (short) (x > 65535 ? 65535 : (x < 0) ? 0 : x);
>> 
>> I spent quite some time benchmarking/tuning the
>> protocol-generation-methods, and a lot of cycles are spent in those
>> saturated casts, even if the utility methods are static.
>> E.g. XRenderFillRectangle takes 40 cycles without clamping, but
>> already 70 cycles with on my core2duo with hotspot-server/jdk 14.0.
>> Hotspot seems to solve the problem always with conditional jumps,
>> although well predictable ones.
>> 
>> Modern processors seem to have support for this kind of operation, in
>> x86 there's packssdw in MMX/SSE2.
>> I think something like a saturated cast could be quite useful, there
>> are already cast-methods in Long/Integer/Short - what do you think
>> about adding saturated casts to that API?
>> Those could be instrified to use MMX/SSE2 if available.
>> 
>> If that would be too specific how hard would it be to add this kind of
>> optimization to hotspot?
>> How far does SIMD support in hotspot go (I read some time ago there've
>> been some optimizations), if SIMD would be supported 4 casts could be
>> done in a single cycle :)
> 

Reply via email to