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

Feilong Jiang fjiang at openjdk.org
Sat Jan 28 03:14:51 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

Feilong Jiang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - Merge branch 'openjdk:master' into fix_pipeclass
 - fix pipe_class

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/12219/files
  - new: https://git.openjdk.org/jdk/pull/12219/files/252cd3c3..30a97a89

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=12219&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12219&range=00-01

  Stats: 8774 lines in 422 files changed: 1706 ins; 504 del; 6564 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