RFR: 8301153: RISC-V: pipeline class for several instructions is not set correctly

Feilong Jiang fjiang at openjdk.org
Thu Jan 26 13:53:56 UTC 2023


Witness that some c2 instructions use the inappropriate ins_pipe, e.g.:


instruct MoveI2F_stack_reg(fRegF dst, stackSlotI src) %{

  match(Set dst (MoveI2F src));

  effect(DEF dst, USE src);

  ins_cost(LOAD_COST);

  format %{ "flw $dst, $src\t#@MoveI2F_stack_reg" %}

  ins_encode %{
    __ flw(as_FloatRegister($dst$$reg), Address(sp, $src$$disp));
  %}

  ins_pipe(pipe_class_memory);

%}


We can use the more accurate pipe_class `fp_load_mem_s` instead.

This PR also fixes the side effect of the flags register for two instructions:
We should use/kill a flags register.

Testing:

- [x] Tier1~3 on Unmatched board with release build

-------------

Commit messages:
 - fix pipe_class

Changes: https://git.openjdk.org/jdk/pull/12219/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12219&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8301153
  Stats: 20 lines in 1 file changed: 1 ins; 0 del; 19 mod
  Patch: https://git.openjdk.org/jdk/pull/12219.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12219/head:pull/12219

PR: https://git.openjdk.org/jdk/pull/12219


More information about the hotspot-compiler-dev mailing list