While reviewing a commit from Aurelien Jarno where he optimized a TCG generator for SH-4 [1] I found the same optimization done on PPC by Nikunj A Dadhania few months ago [2]. After asking on the ML about a cocci script [3] I thought it would be easier to learn about Coccinelle.
citing Aurelien Jarno: This doesn't change the generated code on x86, but optimizes it on most RISC architectures and makes the code simpler to read. I actually applied the script using the following command: $ docker run -v `pwd`:`pwd` -w `pwd` petersenna/coccinelle \ --sp-file scripts/coccinelle/tcg_gen_extract.cocci \ --macro-file scripts/cocci-macro-file.h \ --dir target \ --in-place Please review, thanks. [1] http://lists.nongnu.org/archive/html/qemu-devel/2017-05/msg01466.html [2] http://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg05211.html [3] http://lists.nongnu.org/archive/html/qemu-devel/2017-05/msg01499.html Philippe Mathieu-Daudé (8): coccinelle: add a script to optimize tcg op using tcg_gen_extract() target/arm: optimize smul_dual() and neon_trn_u8() using extract op target/arm: optimize rev16() using extract op target/cris: optimize gen_swapb() using extract op target/m68k: optimize bcd_flags() using extract op target/mips: optimize bshfl() using extract op target/ppc: using various functions using extract op target/sparc: optimize various functions using extract op scripts/coccinelle/tcg_gen_extract.cocci | 26 ++++++++++++++++++++++++++ target/arm/translate-a64.c | 6 ++---- target/arm/translate.c | 6 ++---- target/cris/translate.c | 3 +-- target/m68k/translate.c | 3 +-- target/mips/translate.c | 9 +++------ target/ppc/translate.c | 9 +++------ target/ppc/translate/vsx-impl.inc.c | 21 +++++++-------------- target/sparc/translate.c | 15 +++++---------- 9 files changed, 50 insertions(+), 48 deletions(-) create mode 100644 scripts/coccinelle/tcg_gen_extract.cocci -- 2.11.0