On 01/11/14 05:28, Yongbok Kim wrote: > For 2.2 Release. > > The following patchset implements MIPS SIMD Architecture module. > MSA adds new instructions to MIPS Architecture that allow efficient > parallel processing of vector operations. > > For more information refer to: > MIPS Architecture Reference Manual > Volume IV-j: The MIPS32 SIMD Architecture Module > The document (MD00867) is available at: > http://www.imgtec.com/mips/architectures/simd.asp > > The MSA floating-point is compliant with the IEEE Standard for Floating-Point > Arithmetic 754TM-2008. However this patchset is not set up with the IEEE-2008 > option as QEMU softfloat for MIPS has not been updated yet. > > v3: > * fixes for mixed declarations and code > * remove duplicated code > * change data format for immediate values > > v2: > * fixes for Leon's and James' comments > * rebased top of R6 patchset > * Code refactored mainly for msa_helper.c > > Yongbok Kim (19): > target-mips: add MSA defines and data structure > target-mips: add MSA exceptions > target-mips: remove duplicated mips/ieee mapping function > target-mips: stop translation after ctc1 > target-mips: add MSA opcode enum > target-mips: add msa_reset(), global msa register > target-mips: add msa_helper.c > target-mips: add MSA branch instructions > target-mips: add MSA I8 format instructions > target-mips: add MSA I5 format instruction > target-mips: add MSA BIT format instructions > target-mips: add MSA 3R format instructions > target-mips: add MSA ELM format instructions > target-mips: add MSA 3RF format instructions > target-mips: add MSA VEC/2R format instructions > target-mips: add MSA 2RF format instructions > target-mips: add MSA MI10 format instructions > disas/mips.c: disassemble MSA instructions > target-mips: add MSA support to mips32r5-generic > > disas/mips.c | 716 +++++++++- > target-mips/Makefile.objs | 2 +- > target-mips/cpu.h | 56 +- > target-mips/gdbstub.c | 7 - > target-mips/helper.c | 10 + > target-mips/helper.h | 185 +++ > target-mips/mips-defs.h | 1 + > target-mips/msa_helper.c | 3437 > ++++++++++++++++++++++++++++++++++++++++++ > target-mips/op_helper.c | 89 +- > target-mips/translate.c | 1647 +++++++++++++++++++-- > target-mips/translate_init.c | 39 +- > 11 files changed, 6052 insertions(+), 137 deletions(-) > create mode 100644 target-mips/msa_helper.c >
This patchset certainly looks cleaner than previous versions - thanks! However, there are still some wrinkles to iron out, and also there is room for improvement - for example big-endian host issue, "switch (df)" present in each helper even though data format is known at translation time, missing register partitioning etc.). Having said that I think this patchset deserves to be merged as it introduces significant amount of tested MIPS SIMD instructions. In my opinion further MSA improvements and cleaning can be done as a part of separate patchset (I'll be happy to help doing that), thus I'm going to apply it to mips-next branch. Thanks, Leon