[14] RFR (L): 8235719: C2: Merge AD instructions for ShiftV, AbsV, and NegV nodes

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Dec 11 02:48:40 UTC 2019


In general I don't like using switches in this changes. In most examples 
you have only 2 instructions to choose from which could be done with 
'if/else'. 'default: ShouldNotReachHere()' is big code if inlined and 
never will be hit - you should hit first checks in supported vector size 
code.

I may prefer to see 2 AD instructions as you had in previous changes.

In vabsnegF() switch cases should be 2,8,16 instead of 2,4,8.

Why you need predicate for vabsnegD ? Other length is not supported anyway.

Vladimir

On 12/10/19 2:29 PM, Vladimir Ivanov wrote:
> http://cr.openjdk.java.net/~vlivanov/jbhateja/8235719/webrev.00/all
> https://bugs.openjdk.java.net/browse/JDK-8235719
> 
> Merge AD instructions for the following vector nodes:
>    - LShiftV*, RShiftV*, URShiftV*
>    - AbsV*
>    - NegV*
> 
> Individual patches:
> 
> http://cr.openjdk.java.net/~vlivanov/jbhateja/8235719/webrev.00/individual
> 
> As Jatin described, merging is applied only to AD instructions of 
> similar shape. There are some more opportunities for reduction/merging 
> left, but they are deliberately left out for future work.
> 
> The patch is derived from the initial version of generic vector support 
> [1]. Generic vector support was reviewed earlier [2].
> 
> Testing: tier1-4, test run on different CPU flavors (KNL, SKL, etc)
> 
> Contributed-by: Jatin Bhateja <jatin.bhateja at intel.com>
> Reviewed-by: vlivanov, sviswanathan, ?
> 
> Best regards,
> Vladimir Ivanov
> 
> [1] 
> https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2019-August/034822.html 
> 
> 
> [2] 
> https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2019-November/036016.html 
> 


More information about the hotspot-compiler-dev mailing list