JDK-7200233 : C2: can't use expand rules for vector instruction rules
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs24
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2012-09-21
  • Updated: 2013-06-26
  • Resolved: 2012-09-26
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 Other
7u40Fixed 8Fixed hs24Fixed
Related Reports
Relates :  
I'd like to add rules like the following:

instruct Repl2F_reg(vecD dst, regF src) %{
  match(Set dst (ReplicateF src));
  expand %{
    iRegI tmp;
    MoveF2I_reg_reg(tmp, src);

instruct vsrl4I_regI(vecX dst, vecX src, iRegI shift) %{
  match(Set dst (URShiftVI src (MoveI2F shift)));
  expand %{
    vecX tmp;
    Repl16B_reg(tmp, shift);
    vsrl4I_reg(dst, src, tmp);

but the generated expand code will crash because _bottom_type is not

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/0702f188baeb

EVALUATION I forgot to add vector arithmetic nodes to the check in MatchRule::is_vector() in adlc.