mbox series

[v2,00/12] Change helper declarations to use call flags

Message ID 20220519201822.465229-1-matheus.ferst@eldorado.org.br
Headers show
Series Change helper declarations to use call flags | expand

Message

Matheus K. Ferst May 19, 2022, 8:18 p.m. UTC
From: Matheus Ferst <matheus.ferst@eldorado.org.br>

In our "PowerISA Vector/VSX instruction batch" patch series, rth noted[1]
that helpers that only access vector registers should be declared with
DEF_HELPER_FLAGS_* and TCG_CALL_NO_RWG. We fixed helpers in that series,
but there are older helpers that could use the same optimization.

Guided by the presence of env as the first argument, in patches 1~4 we
change helpers that do not have access to the cpu_env pointer to modify
any globals. Then, we change other helpers that receive cpu_env but do
not use it and apply the same fix, taking the opportunity to move them
to decodetree.

[1] https://lists.gnu.org/archive/html/qemu-ppc/2022-02/msg00568.html

Patches without review: 06.

v2:
 - darn32/darn64 helpers declared with TCG_CALL_NO_RWG_SE;
 - xscvspdpn implemented with helper_todouble, dropped helper_XSCVSPDPN;
 - vmsumuhs and vmsumshs helpers declared with TCG_CALL_NO_RWG;
 - Link to v1: https://lists.gnu.org/archive/html/qemu-ppc/2022-05/msg00287.html

Matheus Ferst (12):
  target/ppc: declare darn32/darn64 helpers with TCG_CALL_NO_RWG_SE
  target/ppc: use TCG_CALL_NO_RWG in vector helpers without env
  target/ppc: use TCG_CALL_NO_RWG in BCD helpers
  target/ppc: use TCG_CALL_NO_RWG in VSX helpers without env
  target/ppc: Use TCG_CALL_NO_RWG_SE in fsel helper
  target/ppc: implement xscvspdpn with helper_todouble
  target/ppc: declare xvxsigsp helper with call flags
  target/ppc: declare xxextractuw and xxinsertw helpers with call flags
  target/ppc: introduce do_va_helper
  target/ppc: declare vmsum[um]bm helpers with call flags
  target/ppc: declare vmsumuh[ms] helper with call flags
  target/ppc: declare vmsumsh[ms] helper with call flags

 target/ppc/fpu_helper.c             |  22 +--
 target/ppc/helper.h                 | 225 ++++++++++++++--------------
 target/ppc/insn32.decode            |  28 +++-
 target/ppc/int_helper.c             |  22 +--
 target/ppc/translate/fp-impl.c.inc  |  30 +++-
 target/ppc/translate/fp-ops.c.inc   |   1 -
 target/ppc/translate/vmx-impl.c.inc |  62 ++++----
 target/ppc/translate/vmx-ops.c.inc  |   4 -
 target/ppc/translate/vsx-impl.c.inc | 107 ++++++++-----
 target/ppc/translate/vsx-ops.c.inc  |   4 -
 10 files changed, 284 insertions(+), 221 deletions(-)

Comments

Daniel Henrique Barboza May 23, 2022, 7:24 p.m. UTC | #1
Queued in gitlab.com/danielhb/qemu/tree/ppc-next. Thanks,


Daniel

On 5/19/22 17:18, matheus.ferst@eldorado.org.br wrote:
> From: Matheus Ferst <matheus.ferst@eldorado.org.br>
> 
> In our "PowerISA Vector/VSX instruction batch" patch series, rth noted[1]
> that helpers that only access vector registers should be declared with
> DEF_HELPER_FLAGS_* and TCG_CALL_NO_RWG. We fixed helpers in that series,
> but there are older helpers that could use the same optimization.
> 
> Guided by the presence of env as the first argument, in patches 1~4 we
> change helpers that do not have access to the cpu_env pointer to modify
> any globals. Then, we change other helpers that receive cpu_env but do
> not use it and apply the same fix, taking the opportunity to move them
> to decodetree.
> 
> [1] https://lists.gnu.org/archive/html/qemu-ppc/2022-02/msg00568.html
> 
> Patches without review: 06.
> 
> v2:
>   - darn32/darn64 helpers declared with TCG_CALL_NO_RWG_SE;
>   - xscvspdpn implemented with helper_todouble, dropped helper_XSCVSPDPN;
>   - vmsumuhs and vmsumshs helpers declared with TCG_CALL_NO_RWG;
>   - Link to v1: https://lists.gnu.org/archive/html/qemu-ppc/2022-05/msg00287.html
> 
> Matheus Ferst (12):
>    target/ppc: declare darn32/darn64 helpers with TCG_CALL_NO_RWG_SE
>    target/ppc: use TCG_CALL_NO_RWG in vector helpers without env
>    target/ppc: use TCG_CALL_NO_RWG in BCD helpers
>    target/ppc: use TCG_CALL_NO_RWG in VSX helpers without env
>    target/ppc: Use TCG_CALL_NO_RWG_SE in fsel helper
>    target/ppc: implement xscvspdpn with helper_todouble
>    target/ppc: declare xvxsigsp helper with call flags
>    target/ppc: declare xxextractuw and xxinsertw helpers with call flags
>    target/ppc: introduce do_va_helper
>    target/ppc: declare vmsum[um]bm helpers with call flags
>    target/ppc: declare vmsumuh[ms] helper with call flags
>    target/ppc: declare vmsumsh[ms] helper with call flags
> 
>   target/ppc/fpu_helper.c             |  22 +--
>   target/ppc/helper.h                 | 225 ++++++++++++++--------------
>   target/ppc/insn32.decode            |  28 +++-
>   target/ppc/int_helper.c             |  22 +--
>   target/ppc/translate/fp-impl.c.inc  |  30 +++-
>   target/ppc/translate/fp-ops.c.inc   |   1 -
>   target/ppc/translate/vmx-impl.c.inc |  62 ++++----
>   target/ppc/translate/vmx-ops.c.inc  |   4 -
>   target/ppc/translate/vsx-impl.c.inc | 107 ++++++++-----
>   target/ppc/translate/vsx-ops.c.inc  |   4 -
>   10 files changed, 284 insertions(+), 221 deletions(-)
>