Message ID | 20220519201822.465229-1-matheus.ferst@eldorado.org.br |
---|---|
Headers | show |
Series | Change helper declarations to use call flags | expand |
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(-) >
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(-)