Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-jun-2…
Browse files Browse the repository at this point in the history
…1-2019' into staging

MIPS queue for June 21st, 2019

# gpg: Signature made Fri 21 Jun 2019 10:46:57 BST
# gpg:                using RSA key D4972A8967F75A65
# gpg: Good signature from "Aleksandar Markovic <amarkovic@wavecomp.com>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 8526 FBF1 5DA3 811F 4A01  DD75 D497 2A89 67F7 5A65

* remotes/amarkovic/tags/mips-queue-jun-21-2019:
  target/mips: Fix emulation of ILVR.<B|H|W> on big endian host
  target/mips: Fix emulation of ILVL.<B|H|W> on big endian host
  target/mips: Fix emulation of ILVOD.<B|H|W> on big endian host
  target/mips: Fix emulation of ILVEV.<B|H|W> on big endian host
  tests/tcg: target/mips: Amend tests for MSA pack instructions
  tests/tcg: target/mips: Include isa/ase and group name in test output
  target/mips: Fix if-else-switch-case arms checkpatch errors in translate.c
  target/mips: Fix some space checkpatch errors in translate.c
  MAINTAINERS: Consolidate MIPS disassembler-related items
  MAINTAINERS: Update file items for MIPS Malta board

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
pm215 committed Jun 21, 2019
2 parents 68d7ff0 + 14f5d87 commit 474f393
Show file tree
Hide file tree
Showing 264 changed files with 2,605 additions and 942 deletions.
6 changes: 2 additions & 4 deletions MAINTAINERS
Expand Up @@ -212,9 +212,7 @@ R: Aleksandar Rikalo <arikalo@wavecomp.com>
S: Maintained
F: target/mips/
F: default-configs/*mips*
F: disas/mips.c
F: disas/nanomips.cpp
F: disas/nanomips.h
F: disas/*mips*
F: hw/intc/mips_gic.c
F: hw/mips/
F: hw/misc/mips_*
Expand Down Expand Up @@ -930,6 +928,7 @@ M: Aurelien Jarno <aurelien@aurel32.net>
R: Aleksandar Rikalo <arikalo@wavecomp.com>
S: Maintained
F: hw/mips/mips_malta.c
F: hw/mips/gt64xxx_pci.c
F: tests/acceptance/linux_ssh_mips_malta.py

Mipssim
Expand Down Expand Up @@ -2325,7 +2324,6 @@ M: Aurelien Jarno <aurelien@aurel32.net>
R: Aleksandar Rikalo <arikalo@wavecomp.com>
S: Maintained
F: tcg/mips/
F: disas/mips.c

PPC TCG target
M: Richard Henderson <rth@twiddle.net>
Expand Down
148 changes: 148 additions & 0 deletions target/mips/msa_helper.c
Expand Up @@ -1737,6 +1737,24 @@ void helper_msa_ilvev_df(CPUMIPSState *env, uint32_t df, uint32_t wd,

switch (df) {
case DF_BYTE:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->b[8] = pws->b[9];
pwd->b[9] = pwt->b[9];
pwd->b[10] = pws->b[11];
pwd->b[11] = pwt->b[11];
pwd->b[12] = pws->b[13];
pwd->b[13] = pwt->b[13];
pwd->b[14] = pws->b[15];
pwd->b[15] = pwt->b[15];
pwd->b[0] = pws->b[1];
pwd->b[1] = pwt->b[1];
pwd->b[2] = pws->b[3];
pwd->b[3] = pwt->b[3];
pwd->b[4] = pws->b[5];
pwd->b[5] = pwt->b[5];
pwd->b[6] = pws->b[7];
pwd->b[7] = pwt->b[7];
#else
pwd->b[15] = pws->b[14];
pwd->b[14] = pwt->b[14];
pwd->b[13] = pws->b[12];
Expand All @@ -1753,8 +1771,19 @@ void helper_msa_ilvev_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->b[2] = pwt->b[2];
pwd->b[1] = pws->b[0];
pwd->b[0] = pwt->b[0];
#endif
break;
case DF_HALF:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->h[4] = pws->h[5];
pwd->h[5] = pwt->h[5];
pwd->h[6] = pws->h[7];
pwd->h[7] = pwt->h[7];
pwd->h[0] = pws->h[1];
pwd->h[1] = pwt->h[1];
pwd->h[2] = pws->h[3];
pwd->h[3] = pwt->h[3];
#else
pwd->h[7] = pws->h[6];
pwd->h[6] = pwt->h[6];
pwd->h[5] = pws->h[4];
Expand All @@ -1763,12 +1792,20 @@ void helper_msa_ilvev_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->h[2] = pwt->h[2];
pwd->h[1] = pws->h[0];
pwd->h[0] = pwt->h[0];
#endif
break;
case DF_WORD:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->w[2] = pws->w[3];
pwd->w[3] = pwt->w[3];
pwd->w[0] = pws->w[1];
pwd->w[1] = pwt->w[1];
#else
pwd->w[3] = pws->w[2];
pwd->w[2] = pwt->w[2];
pwd->w[1] = pws->w[0];
pwd->w[0] = pwt->w[0];
#endif
break;
case DF_DOUBLE:
pwd->d[1] = pws->d[0];
Expand All @@ -1788,6 +1825,24 @@ void helper_msa_ilvod_df(CPUMIPSState *env, uint32_t df, uint32_t wd,

switch (df) {
case DF_BYTE:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->b[7] = pwt->b[6];
pwd->b[6] = pws->b[6];
pwd->b[5] = pwt->b[4];
pwd->b[4] = pws->b[4];
pwd->b[3] = pwt->b[2];
pwd->b[2] = pws->b[2];
pwd->b[1] = pwt->b[0];
pwd->b[0] = pws->b[0];
pwd->b[15] = pwt->b[14];
pwd->b[14] = pws->b[14];
pwd->b[13] = pwt->b[12];
pwd->b[12] = pws->b[12];
pwd->b[11] = pwt->b[10];
pwd->b[10] = pws->b[10];
pwd->b[9] = pwt->b[8];
pwd->b[8] = pws->b[8];
#else
pwd->b[0] = pwt->b[1];
pwd->b[1] = pws->b[1];
pwd->b[2] = pwt->b[3];
Expand All @@ -1804,8 +1859,19 @@ void helper_msa_ilvod_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->b[13] = pws->b[13];
pwd->b[14] = pwt->b[15];
pwd->b[15] = pws->b[15];
#endif
break;
case DF_HALF:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->h[3] = pwt->h[2];
pwd->h[2] = pws->h[2];
pwd->h[1] = pwt->h[0];
pwd->h[0] = pws->h[0];
pwd->h[7] = pwt->h[6];
pwd->h[6] = pws->h[6];
pwd->h[5] = pwt->h[4];
pwd->h[4] = pws->h[4];
#else
pwd->h[0] = pwt->h[1];
pwd->h[1] = pws->h[1];
pwd->h[2] = pwt->h[3];
Expand All @@ -1814,12 +1880,20 @@ void helper_msa_ilvod_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->h[5] = pws->h[5];
pwd->h[6] = pwt->h[7];
pwd->h[7] = pws->h[7];
#endif
break;
case DF_WORD:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->w[1] = pwt->w[0];
pwd->w[0] = pws->w[0];
pwd->w[3] = pwt->w[2];
pwd->w[2] = pws->w[2];
#else
pwd->w[0] = pwt->w[1];
pwd->w[1] = pws->w[1];
pwd->w[2] = pwt->w[3];
pwd->w[3] = pws->w[3];
#endif
break;
case DF_DOUBLE:
pwd->d[0] = pwt->d[1];
Expand All @@ -1839,6 +1913,24 @@ void helper_msa_ilvl_df(CPUMIPSState *env, uint32_t df, uint32_t wd,

switch (df) {
case DF_BYTE:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->b[7] = pwt->b[15];
pwd->b[6] = pws->b[15];
pwd->b[5] = pwt->b[14];
pwd->b[4] = pws->b[14];
pwd->b[3] = pwt->b[13];
pwd->b[2] = pws->b[13];
pwd->b[1] = pwt->b[12];
pwd->b[0] = pws->b[12];
pwd->b[15] = pwt->b[11];
pwd->b[14] = pws->b[11];
pwd->b[13] = pwt->b[10];
pwd->b[12] = pws->b[10];
pwd->b[11] = pwt->b[9];
pwd->b[10] = pws->b[9];
pwd->b[9] = pwt->b[8];
pwd->b[8] = pws->b[8];
#else
pwd->b[0] = pwt->b[8];
pwd->b[1] = pws->b[8];
pwd->b[2] = pwt->b[9];
Expand All @@ -1855,8 +1947,19 @@ void helper_msa_ilvl_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->b[13] = pws->b[14];
pwd->b[14] = pwt->b[15];
pwd->b[15] = pws->b[15];
#endif
break;
case DF_HALF:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->h[3] = pwt->h[7];
pwd->h[2] = pws->h[7];
pwd->h[1] = pwt->h[6];
pwd->h[0] = pws->h[6];
pwd->h[7] = pwt->h[5];
pwd->h[6] = pws->h[5];
pwd->h[5] = pwt->h[4];
pwd->h[4] = pws->h[4];
#else
pwd->h[0] = pwt->h[4];
pwd->h[1] = pws->h[4];
pwd->h[2] = pwt->h[5];
Expand All @@ -1865,12 +1968,20 @@ void helper_msa_ilvl_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->h[5] = pws->h[6];
pwd->h[6] = pwt->h[7];
pwd->h[7] = pws->h[7];
#endif
break;
case DF_WORD:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->w[1] = pwt->w[3];
pwd->w[0] = pws->w[3];
pwd->w[3] = pwt->w[2];
pwd->w[2] = pws->w[2];
#else
pwd->w[0] = pwt->w[2];
pwd->w[1] = pws->w[2];
pwd->w[2] = pwt->w[3];
pwd->w[3] = pws->w[3];
#endif
break;
case DF_DOUBLE:
pwd->d[0] = pwt->d[1];
Expand All @@ -1890,6 +2001,24 @@ void helper_msa_ilvr_df(CPUMIPSState *env, uint32_t df, uint32_t wd,

switch (df) {
case DF_BYTE:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->b[8] = pws->b[0];
pwd->b[9] = pwt->b[0];
pwd->b[10] = pws->b[1];
pwd->b[11] = pwt->b[1];
pwd->b[12] = pws->b[2];
pwd->b[13] = pwt->b[2];
pwd->b[14] = pws->b[3];
pwd->b[15] = pwt->b[3];
pwd->b[0] = pws->b[4];
pwd->b[1] = pwt->b[4];
pwd->b[2] = pws->b[5];
pwd->b[3] = pwt->b[5];
pwd->b[4] = pws->b[6];
pwd->b[5] = pwt->b[6];
pwd->b[6] = pws->b[7];
pwd->b[7] = pwt->b[7];
#else
pwd->b[15] = pws->b[7];
pwd->b[14] = pwt->b[7];
pwd->b[13] = pws->b[6];
Expand All @@ -1906,8 +2035,19 @@ void helper_msa_ilvr_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->b[2] = pwt->b[1];
pwd->b[1] = pws->b[0];
pwd->b[0] = pwt->b[0];
#endif
break;
case DF_HALF:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->h[4] = pws->h[0];
pwd->h[5] = pwt->h[0];
pwd->h[6] = pws->h[1];
pwd->h[7] = pwt->h[1];
pwd->h[0] = pws->h[2];
pwd->h[1] = pwt->h[2];
pwd->h[2] = pws->h[3];
pwd->h[3] = pwt->h[3];
#else
pwd->h[7] = pws->h[3];
pwd->h[6] = pwt->h[3];
pwd->h[5] = pws->h[2];
Expand All @@ -1916,12 +2056,20 @@ void helper_msa_ilvr_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
pwd->h[2] = pwt->h[1];
pwd->h[1] = pws->h[0];
pwd->h[0] = pwt->h[0];
#endif
break;
case DF_WORD:
#if defined(TARGET_WORDS_BIGENDIAN)
pwd->w[2] = pws->w[0];
pwd->w[3] = pwt->w[0];
pwd->w[0] = pws->w[1];
pwd->w[1] = pwt->w[1];
#else
pwd->w[3] = pws->w[1];
pwd->w[2] = pwt->w[1];
pwd->w[1] = pws->w[0];
pwd->w[0] = pwt->w[0];
#endif
break;
case DF_DOUBLE:
pwd->d[1] = pws->d[0];
Expand Down

0 comments on commit 474f393

Please sign in to comment.