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 :  
Description
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);
    Repl2F_regI(dst,tmp);
  %}
%}

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
set.

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

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