I was fooling around with a new target last weekend, and got myself all turned around with its field extract instruction. How much more handy would it be, I told myself, if we had such a thing generically?
In addition, many hosts have this natively. So it seems a shame to not take advantage of it when we can. Lightly tested on x86_64, ppc64le, arm32, and s390x hosts. r~ Richard Henderson (15): tcg: Add field extraction primitives tcg: Minor adjustments to deposit expanders tcg/aarch64: Implement field extraction opcodes tcg/arm: Move isa detection to tcg-target.h tcg/arm: Implement field extraction opcodes tcg/i386: Implement field extraction opcodes tcg/mips: Implement field extraction opcodes tcg/ppc: Implement field extraction opcodes tcg/s390: Implement field extraction opcodes target-alpha: Use deposit and extract ops target-arm: Use tcg_gen_*extract target-i386: Use tcg_gen_extract_tl target-mips: Use tcg_gen_extract_* target-ppc: Use tcg_gen_extract_* target-s390: Use tcg_gen_extract_i64 target-alpha/translate.c | 67 +++++---- target-arm/translate-a64.c | 48 ++++--- target-arm/translate.c | 37 ++--- target-i386/translate.c | 45 +++--- target-mips/translate.c | 12 +- target-ppc/translate.c | 9 +- target-s390x/translate.c | 24 ++-- tcg/aarch64/tcg-target.h | 4 + tcg/aarch64/tcg-target.inc.c | 14 ++ tcg/arm/tcg-target.h | 38 +++++- tcg/arm/tcg-target.inc.c | 63 ++++----- tcg/i386/tcg-target.h | 7 + tcg/i386/tcg-target.inc.c | 30 ++++ tcg/ia64/tcg-target.h | 4 + tcg/mips/tcg-target.h | 2 + tcg/mips/tcg-target.inc.c | 4 + tcg/optimize.c | 29 ++++ tcg/ppc/tcg-target.h | 4 + tcg/ppc/tcg-target.inc.c | 10 ++ tcg/s390/tcg-target.h | 12 +- tcg/s390/tcg-target.inc.c | 13 +- tcg/sparc/tcg-target.h | 4 + tcg/tcg-op.c | 319 ++++++++++++++++++++++++++++++++++++++++++- tcg/tcg-op.h | 12 ++ tcg/tcg-opc.h | 4 + tcg/tcg.h | 8 ++ tcg/tci/tcg-target.h | 4 + 27 files changed, 655 insertions(+), 172 deletions(-) -- 2.7.4