All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2
@ 2019-08-19 12:07 Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM Aleksandar Markovic
                   ` (36 more replies)
  0 siblings, 37 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

This series includes misc MIPS patches intended to be integrated after
4.1 release.

v7->v8:

  - added several more patches on CP0 cleanup
  - added a patch on translate.c cleanup
  - other minor improvements

v6->v7:

  - added four more patches on CP0 cleanup
  - other minor improvements

v5->v6:

  - added five more patches on style improvements
  - added five patches on CP0 cleanup
  - other minor improvements

v4->v5:

  - fixed more build errors
  - added five patches on style improvements
  - added a patch on updating vmstate
  - other minor improvements

v3->v4:

  - fixed build error

v2->v3:

  - corrected the patch on WatchHi to include "mi" field
  - corrected the patch on WatchHi to bump VMStateDescription version

v1->v2:

  - fixed checkpatch warnings
  - added four new patches on various topics


Aleksandar Markovic (32):
  target/mips: Style improvements in cp0_timer.c
  target/mips: Style improvements in cpu.c
  target/mips: Style improvements in internal.h
  target/mips: Style improvements in machine.c
  target/mips: Style improvements in helper.c
  target/mips: Style improvements in translate.c
  target/mips: Style improvements in cps.c
  target/mips: Style improvements in mips_fulong2e.c
  target/mips: Style improvements in mips_int.c
  target/mips: Style improvements in mips_malta.c
  target/mips: Style improvements in mips_mipssim.c
  target/mips: Clean up handling of CP0 register 0
  target/mips: Clean up handling of CP0 register 1
  target/mips: Clean up handling of CP0 register 2
  target/mips: Clean up handling of CP0 register 5
  target/mips: Clean up handling of CP0 register 6
  target/mips: Clean up handling of CP0 register 7
  target/mips: Clean up handling of CP0 register 8
  target/mips: Clean up handling of CP0 register 10
  target/mips: Clean up handling of CP0 register 11
  target/mips: Clean up handling of CP0 register 12
  target/mips: Clean up handling of CP0 register 15
  target/mips: Clean up handling of CP0 register 16
  target/mips: Clean up handling of CP0 register 17
  target/mips: Clean up handling of CP0 register 20
  target/mips: Clean up handling of CP0 register 23
  target/mips: Clean up handling of CP0 register 24
  target/mips: Clean up handling of CP0 register 26
  target/mips: Clean up handling of CP0 register 30
  target/mips: Clean up handling of CP0 register 31
  target/mips: tests/tcg: Add optional printing of more detailed failure
    info
  target/mips: tests/tcg: Fix target configurations for MSA tests

Yongbok Kim (5):
  target/mips: Add support for DSPRAM
  target/mips: Amend CP0 WatchHi register implementation
  target/mips: Amend CP0 MemoryMapID register implementation
  target/mips: Add support for emulation of GINVT instruction
  target/mips: Add support for emulation of CRC32 group of instructions

 disas/mips.c                                       |   10 +
 hw/mips/cps.c                                      |   35 +-
 hw/mips/mips_fulong2e.c                            |   96 +-
 hw/mips/mips_int.c                                 |    3 +-
 hw/mips/mips_malta.c                               |  216 +--
 hw/mips/mips_mipssim.c                             |   19 +-
 hw/misc/Makefile.objs                              |    1 +
 hw/misc/mips_dspram.c                              |  153 +++
 include/hw/mips/cps.h                              |    2 +
 include/hw/misc/mips_dspram.h                      |   46 +
 target/mips/cp0_timer.c                            |   42 +-
 target/mips/cpu.c                                  |   17 +-
 target/mips/cpu.h                                  |   62 +-
 target/mips/helper.c                               |  122 +-
 target/mips/helper.h                               |    7 +
 target/mips/internal.h                             |   61 +-
 target/mips/machine.c                              |   17 +-
 target/mips/op_helper.c                            |  185 ++-
 target/mips/translate.c                            | 1449 +++++++++++---------
 target/mips/translate_init.inc.c                   |    2 +
 tests/tcg/mips/include/test_utils_128.h            |   23 +-
 .../mips/user/ase/msa/test_msa_compile_32r5eb.sh   |  917 +++++++++++++
 .../mips/user/ase/msa/test_msa_compile_32r5el.sh   |  917 +++++++++++++
 .../mips/user/ase/msa/test_msa_compile_32r6eb.sh   |  643 ---------
 .../mips/user/ase/msa/test_msa_compile_32r6el.sh   |  643 ---------
 tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh |  371 +++++
 tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh |  371 +++++
 tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh |  371 -----
 tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh |  371 -----
 29 files changed, 4250 insertions(+), 2922 deletions(-)
 create mode 100644 hw/misc/mips_dspram.c
 create mode 100644 include/hw/misc/mips_dspram.h
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
 delete mode 100644 tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh

-- 
2.7.4



^ permalink raw reply	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-29 11:27   ` Philippe Mathieu-Daudé
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 02/37] target/mips: Amend CP0 WatchHi register implementation Aleksandar Markovic
                   ` (35 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Yongbok Kim <yongbok.kim@mips.com>

The optional Data Scratch Pad RAM (DSPRAM) block provides a general scratch pad RAM
used for temporary storage of data. The DSPRAM provides a connection to on-chip
memory or memory-mapped registers, which are accessed in parallel with the L1 data
cache to minimize access latency

Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/cps.c                    |  29 +++++++-
 hw/misc/Makefile.objs            |   1 +
 hw/misc/mips_dspram.c            | 153 +++++++++++++++++++++++++++++++++++++++
 include/hw/mips/cps.h            |   2 +
 include/hw/misc/mips_dspram.h    |  46 ++++++++++++
 target/mips/cpu.h                |   9 ++-
 target/mips/internal.h           |   3 +-
 target/mips/op_helper.c          |  18 +++++
 target/mips/translate.c          |   8 ++
 target/mips/translate_init.inc.c |   2 +
 10 files changed, 266 insertions(+), 5 deletions(-)
 create mode 100644 hw/misc/mips_dspram.c
 create mode 100644 include/hw/misc/mips_dspram.h

diff --git a/hw/mips/cps.c b/hw/mips/cps.c
index 0d459c4..c84bc64 100644
--- a/hw/mips/cps.c
+++ b/hw/mips/cps.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/mips/cps.h"
@@ -91,7 +92,8 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
 
     cpu = MIPS_CPU(first_cpu);
     env = &cpu->env;
-    saar_present = (bool)env->saarp;
+    saar_present = env->saarp;
+    bool dspram_present = env->dspramp;
 
     /* Inter-Thread Communication Unit */
     if (itu_present) {
@@ -102,7 +104,8 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
         object_property_set_bool(OBJECT(&s->itu), saar_present, "saar-present",
                                  &err);
         if (saar_present) {
-            qdev_prop_set_ptr(DEVICE(&s->itu), "saar", (void *)&env->CP0_SAAR);
+            qdev_prop_set_ptr(DEVICE(&s->itu), "saar",
+                              (void *) &env->CP0_SAAR[0]);
         }
         object_property_set_bool(OBJECT(&s->itu), true, "realized", &err);
         if (err != NULL) {
@@ -113,6 +116,28 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
         memory_region_add_subregion(&s->container, 0,
                            sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->itu), 0));
     }
+    env->dspram = g_new0(MIPSDSPRAMState, 1);
+
+    /* Data Scratch Pad RAM */
+    if (dspram_present) {
+        if (!saar_present) {
+            error_report("%s: DSPRAM requires SAAR registers", __func__);
+            return;
+        }
+        object_initialize(&s->dspram, sizeof(MIPSDSPRAMState),
+                          TYPE_MIPS_DSPRAM);
+        qdev_set_parent_bus(DEVICE(&s->dspram), sysbus_get_default());
+        qdev_prop_set_ptr(DEVICE(&s->dspram), "saar",
+                          &env->CP0_SAAR[1]);
+        object_property_set_bool(OBJECT(&s->dspram), true, "realized", &err);
+        if (err != NULL) {
+            error_report("%s: DSPRAM initialisation failed", __func__);
+            error_propagate(errp, err);
+            return;
+        }
+        memory_region_add_subregion(&s->container, 0,
+                    sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->dspram), 0));
+    }
 
     /* Cluster Power Controller */
     sysbus_init_child_obj(OBJECT(dev), "cpc", &s->cpc, sizeof(s->cpc),
diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs
index e9aab51..5fcb4db 100644
--- a/hw/misc/Makefile.objs
+++ b/hw/misc/Makefile.objs
@@ -60,6 +60,7 @@ obj-$(CONFIG_STM32F2XX_SYSCFG) += stm32f2xx_syscfg.o
 obj-$(CONFIG_MIPS_CPS) += mips_cmgcr.o
 obj-$(CONFIG_MIPS_CPS) += mips_cpc.o
 obj-$(CONFIG_MIPS_ITU) += mips_itu.o
+obj-$(CONFIG_MIPS_DSPRAM) += mips_dspram.o
 obj-$(CONFIG_MPS2_FPGAIO) += mps2-fpgaio.o
 obj-$(CONFIG_MPS2_SCC) += mps2-scc.o
 
diff --git a/hw/misc/mips_dspram.c b/hw/misc/mips_dspram.c
new file mode 100644
index 0000000..9bc155b
--- /dev/null
+++ b/hw/misc/mips_dspram.c
@@ -0,0 +1,153 @@
+/*
+ * Data Scratch Pad RAM
+ *
+ * Copyright (c) 2017 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "cpu.h"
+#include "qemu/log.h"
+#include "exec/exec-all.h"
+#include "hw/hw.h"
+#include "hw/sysbus.h"
+#include "sysemu/sysemu.h"
+#include "hw/misc/mips_dspram.h"
+
+static void raise_exception(int excp)
+{
+    current_cpu->exception_index = excp;
+    cpu_loop_exit(current_cpu);
+}
+
+static uint64_t dspram_read(void *opaque, hwaddr addr, unsigned size)
+{
+    MIPSDSPRAMState *s = (MIPSDSPRAMState *)opaque;
+
+    switch (size) {
+    case 1:
+    case 2:
+        raise_exception(EXCP_AdEL);
+        return 0;
+    case 4:
+        return *(uint32_t *) &s->ramblock[addr % (1 << s->size)];
+    case 8:
+        return *(uint64_t *) &s->ramblock[addr % (1 << s->size)];
+    }
+    return 0;
+}
+
+static void dspram_write(void *opaque, hwaddr addr, uint64_t data,
+                         unsigned size)
+{
+    MIPSDSPRAMState *s = (MIPSDSPRAMState *)opaque;
+
+    switch (size) {
+    case 1:
+    case 2:
+        raise_exception(EXCP_AdES);
+        return;
+    case 4:
+        *(uint32_t *) &s->ramblock[addr % (1 << s->size)] = (uint32_t) data;
+        break;
+    case 8:
+        *(uint64_t *) &s->ramblock[addr % (1 << s->size)] = data;
+        break;
+    }
+}
+
+void dspram_reconfigure(struct MIPSDSPRAMState *dspram)
+{
+    MemoryRegion *mr = &dspram->mr;
+    hwaddr address;
+    bool is_enabled;
+
+    address = ((*(uint64_t *) dspram->saar) & 0xFFFFFFFE000ULL) << 4;
+    is_enabled = *(uint64_t *) dspram->saar & 1;
+
+    memory_region_transaction_begin();
+    memory_region_set_size(mr, (1 << dspram->size));
+    memory_region_set_address(mr, address);
+    memory_region_set_enabled(mr, is_enabled);
+    memory_region_transaction_commit();
+}
+
+static const MemoryRegionOps dspram_ops = {
+    .read = dspram_read,
+    .write = dspram_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+    .valid = {
+        .unaligned = false,
+    }
+};
+
+static void mips_dspram_init(Object *obj)
+{
+    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
+    MIPSDSPRAMState *s = MIPS_DSPRAM(obj);
+
+    memory_region_init_io(&s->mr, OBJECT(s), &dspram_ops, s,
+                          "mips-dspram", (1 << s->size));
+    sysbus_init_mmio(sbd, &s->mr);
+}
+
+static void mips_dspram_realize(DeviceState *dev, Error **errp)
+{
+    MIPSDSPRAMState *s = MIPS_DSPRAM(dev);
+
+    /* some error handling here */
+
+    s->ramblock = g_malloc0(1 << s->size);
+}
+
+static void mips_dspram_reset(DeviceState *dev)
+{
+    MIPSDSPRAMState *s = MIPS_DSPRAM(dev);
+
+    *(uint64_t *) s->saar = s->size << 1;
+    memset(s->ramblock, 0, (1 << s->size));
+}
+
+static Property mips_dspram_properties[] = {
+    DEFINE_PROP_PTR("saar", MIPSDSPRAMState, saar),
+    /* default DSPRAM size is 64 KB */
+    DEFINE_PROP_SIZE("size", MIPSDSPRAMState, size, 0x10),
+    DEFINE_PROP_END_OF_LIST(),
+};
+
+static void mips_dspram_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+
+    dc->props = mips_dspram_properties;
+    dc->realize = mips_dspram_realize;
+    dc->reset = mips_dspram_reset;
+}
+
+static const TypeInfo mips_dspram_info = {
+    .name          = TYPE_MIPS_DSPRAM,
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(MIPSDSPRAMState),
+    .instance_init = mips_dspram_init,
+    .class_init    = mips_dspram_class_init,
+};
+
+static void mips_dspram_register_types(void)
+{
+    type_register_static(&mips_dspram_info);
+}
+
+type_init(mips_dspram_register_types);
diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h
index aab1af9..a637036 100644
--- a/include/hw/mips/cps.h
+++ b/include/hw/mips/cps.h
@@ -25,6 +25,7 @@
 #include "hw/intc/mips_gic.h"
 #include "hw/misc/mips_cpc.h"
 #include "hw/misc/mips_itu.h"
+#include "hw/misc/mips_dspram.h"
 
 #define TYPE_MIPS_CPS "mips-cps"
 #define MIPS_CPS(obj) OBJECT_CHECK(MIPSCPSState, (obj), TYPE_MIPS_CPS)
@@ -41,6 +42,7 @@ typedef struct MIPSCPSState {
     MIPSGICState gic;
     MIPSCPCState cpc;
     MIPSITUState itu;
+    MIPSDSPRAMState dspram;
 } MIPSCPSState;
 
 qemu_irq get_cps_irq(MIPSCPSState *cps, int pin_number);
diff --git a/include/hw/misc/mips_dspram.h b/include/hw/misc/mips_dspram.h
new file mode 100644
index 0000000..ee99e17
--- /dev/null
+++ b/include/hw/misc/mips_dspram.h
@@ -0,0 +1,46 @@
+/*
+ * Data Scratch Pad RAM
+ *
+ * Copyright (c) 2017 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MIPS_DSPRAM_H
+#define MIPS_DSPRAM_H
+
+#include "hw/sysbus.h"
+
+#define TYPE_MIPS_DSPRAM "mips-dspram"
+#define MIPS_DSPRAM(obj) OBJECT_CHECK(MIPSDSPRAMState, (obj), TYPE_MIPS_DSPRAM)
+
+typedef struct MIPSDSPRAMState {
+    /*< private >*/
+    SysBusDevice parent_obj;
+    /*< public >*/
+
+    /* 2 ^ SIZE */
+    uint64_t size;
+
+    MemoryRegion mr;
+
+    /* SAAR */
+    bool saar_present;
+    void *saar;
+
+    /* ramblock */
+    uint8_t *ramblock;
+} MIPSDSPRAMState;
+
+#endif /* MIPS_DSPRAM_H */
diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 21c0615..90a2ed8 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -453,6 +453,7 @@ struct TCState {
 
 };
 
+struct MIPSDSPRAMState;
 struct MIPSITUState;
 typedef struct CPUMIPSState CPUMIPSState;
 struct CPUMIPSState {
@@ -1035,8 +1036,8 @@ struct CPUMIPSState {
     uint32_t CP0_Status_rw_bitmask; /* Read/write bits in CP0_Status */
     uint32_t CP0_TCStatus_rw_bitmask; /* Read/write bits in CP0_TCStatus */
     uint64_t insn_flags; /* Supported instruction set */
-    int saarp;
-
+    bool saarp;
+    bool dspramp;
     /* Fields up to this point are cleared by a CPU reset */
     struct {} end_reset_fields;
 
@@ -1051,6 +1052,7 @@ struct CPUMIPSState {
     QEMUTimer *timer; /* Internal timer */
     struct MIPSITUState *itu;
     MemoryRegion *itc_tag; /* ITC Configuration Tags */
+    struct MIPSDSPRAMState *dspram;
     target_ulong exception_base; /* ExceptionBase input to the core */
 };
 
@@ -1192,6 +1194,9 @@ void cpu_mips_soft_irq(CPUMIPSState *env, int irq, int level);
 /* mips_itu.c */
 void itc_reconfigure(struct MIPSITUState *tag);
 
+/* mips_dspram.c */
+void dspram_reconfigure(struct MIPSDSPRAMState *dspram);
+
 /* helper.c */
 target_ulong exception_resume_pc(CPUMIPSState *env);
 
diff --git a/target/mips/internal.h b/target/mips/internal.h
index b2b41a5..f6d0d7a 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -61,7 +61,8 @@ struct mips_def_t {
     target_ulong CP0_EBaseWG_rw_bitmask;
     uint64_t insn_flags;
     enum mips_mmu_types mmu_type;
-    int32_t SAARP;
+    bool SAARP;
+    bool DSPRAMP;
 };
 
 extern const struct mips_def_t mips_defs[];
diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
index 9e2e02f..628da45 100644
--- a/target/mips/op_helper.c
+++ b/target/mips/op_helper.c
@@ -1614,7 +1614,16 @@ void helper_mtc0_saar(CPUMIPSState *env, target_ulong arg1)
                 itc_reconfigure(env->itu);
             }
             break;
+#if defined(CONFIG_MIPS_DSPRAM)
+        case 1:
+            if (env->dspram) {
+                dspram_reconfigure(env->dspram);
+            }
+            break;
+#endif
         }
+    } else {
+        helper_raise_exception(env, EXCP_RI);
     }
 }
 
@@ -1631,7 +1640,16 @@ void helper_mthc0_saar(CPUMIPSState *env, target_ulong arg1)
                 itc_reconfigure(env->itu);
             }
             break;
+#if defined(CONFIG_MIPS_DSPRAM)
+        case 1:
+            if (env->dspram) {
+                dspram_reconfigure(env->dspram);
+            }
+            break;
+#endif
         }
+    } else {
+        helper_raise_exception(env, EXCP_RI);
     }
 }
 
diff --git a/target/mips/translate.c b/target/mips/translate.c
index ca62800..4ebeabe 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -30368,6 +30368,8 @@ void cpu_state_reset(CPUMIPSState *env)
     env->active_fpu.fcr31 = env->cpu_model->CP1_fcr31;
     env->msair = env->cpu_model->MSAIR;
     env->insn_flags = env->cpu_model->insn_flags;
+    env->saarp = env->cpu_model->SAARP;
+    env->dspramp = env->cpu_model->DSPRAMP;
 
 #if defined(CONFIG_USER_ONLY)
     env->CP0_Status = (MIPS_HFLAG_UM << CP0St_KSU);
@@ -30528,6 +30530,12 @@ void cpu_state_reset(CPUMIPSState *env)
         msa_reset(env);
     }
 
+    /* DSPRAM */
+    if (env->dspramp) {
+        /* Fixed DSPRAM size with Default Value */
+        env->CP0_SAAR[1] = 0x10 << 1;
+    }
+
     compute_hflags(env);
     restore_fp_status(env);
     restore_pamask(env);
diff --git a/target/mips/translate_init.inc.c b/target/mips/translate_init.inc.c
index 6d145a9..1df0901 100644
--- a/target/mips/translate_init.inc.c
+++ b/target/mips/translate_init.inc.c
@@ -760,6 +760,8 @@ const mips_def_t mips_defs[] =
         .PABITS = 48,
         .insn_flags = CPU_MIPS64R6 | ASE_MSA,
         .mmu_type = MMU_TYPE_R4000,
+        .SAARP = 1,
+        .DSPRAMP = 1,
     },
     {
         .name = "Loongson-2E",
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 02/37] target/mips: Amend CP0 WatchHi register implementation
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID " Aleksandar Markovic
                   ` (34 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Yongbok Kim <yongbok.kim@mips.com>

WatchHi is extended by the field MemoryMapID with the GINVT instruction.
The field is accessible by MTHC0/MFHC0 in 32-bit architectures and DMTC0/
DMFC0 in 64-bit architectures.

Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  2 +-
 target/mips/helper.h    |  3 +++
 target/mips/machine.c   |  6 +++---
 target/mips/op_helper.c | 23 +++++++++++++++++++++--
 target/mips/translate.c | 42 +++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 69 insertions(+), 7 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 90a2ed8..6406ba8 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -898,7 +898,7 @@ struct CPUMIPSState {
 /*
  * CP0 Register 19
  */
-    int32_t CP0_WatchHi[8];
+    uint64_t CP0_WatchHi[8];
 #define CP0WH_ASID 16
 /*
  * CP0 Register 20
diff --git a/target/mips/helper.h b/target/mips/helper.h
index 51f0e1c..aad0951 100644
--- a/target/mips/helper.h
+++ b/target/mips/helper.h
@@ -78,6 +78,7 @@ DEF_HELPER_1(mfc0_maar, tl, env)
 DEF_HELPER_1(mfhc0_maar, tl, env)
 DEF_HELPER_2(mfc0_watchlo, tl, env, i32)
 DEF_HELPER_2(mfc0_watchhi, tl, env, i32)
+DEF_HELPER_2(mfhc0_watchhi, tl, env, i32)
 DEF_HELPER_1(mfc0_debug, tl, env)
 DEF_HELPER_1(mftc0_debug, tl, env)
 #ifdef TARGET_MIPS64
@@ -89,6 +90,7 @@ DEF_HELPER_1(dmfc0_tcschefback, tl, env)
 DEF_HELPER_1(dmfc0_lladdr, tl, env)
 DEF_HELPER_1(dmfc0_maar, tl, env)
 DEF_HELPER_2(dmfc0_watchlo, tl, env, i32)
+DEF_HELPER_2(dmfc0_watchhi, tl, env, i32)
 DEF_HELPER_1(dmfc0_saar, tl, env)
 #endif /* TARGET_MIPS64 */
 
@@ -159,6 +161,7 @@ DEF_HELPER_2(mthc0_maar, void, env, tl)
 DEF_HELPER_2(mtc0_maari, void, env, tl)
 DEF_HELPER_3(mtc0_watchlo, void, env, tl, i32)
 DEF_HELPER_3(mtc0_watchhi, void, env, tl, i32)
+DEF_HELPER_3(mthc0_watchhi, void, env, tl, i32)
 DEF_HELPER_2(mtc0_xcontext, void, env, tl)
 DEF_HELPER_2(mtc0_framemask, void, env, tl)
 DEF_HELPER_2(mtc0_debug, void, env, tl)
diff --git a/target/mips/machine.c b/target/mips/machine.c
index eb2d970..c3e52f8 100644
--- a/target/mips/machine.c
+++ b/target/mips/machine.c
@@ -213,8 +213,8 @@ const VMStateDescription vmstate_tlb = {
 
 const VMStateDescription vmstate_mips_cpu = {
     .name = "cpu",
-    .version_id = 18,
-    .minimum_version_id = 18,
+    .version_id = 19,
+    .minimum_version_id = 19,
     .post_load = cpu_post_load,
     .fields = (VMStateField[]) {
         /* Active TC */
@@ -297,7 +297,7 @@ const VMStateDescription vmstate_mips_cpu = {
         VMSTATE_INT32(env.CP0_MAARI, MIPSCPU),
         VMSTATE_UINTTL(env.lladdr, MIPSCPU),
         VMSTATE_UINTTL_ARRAY(env.CP0_WatchLo, MIPSCPU, 8),
-        VMSTATE_INT32_ARRAY(env.CP0_WatchHi, MIPSCPU, 8),
+        VMSTATE_UINT64_ARRAY(env.CP0_WatchHi, MIPSCPU, 8),
         VMSTATE_UINTTL(env.CP0_XContext, MIPSCPU),
         VMSTATE_INT32(env.CP0_Framemask, MIPSCPU),
         VMSTATE_INT32(env.CP0_Debug, MIPSCPU),
diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
index 628da45..279b800 100644
--- a/target/mips/op_helper.c
+++ b/target/mips/op_helper.c
@@ -979,7 +979,12 @@ target_ulong helper_mfc0_watchlo(CPUMIPSState *env, uint32_t sel)
 
 target_ulong helper_mfc0_watchhi(CPUMIPSState *env, uint32_t sel)
 {
-    return env->CP0_WatchHi[sel];
+    return (int32_t) env->CP0_WatchHi[sel];
+}
+
+target_ulong helper_mfhc0_watchhi(CPUMIPSState *env, uint32_t sel)
+{
+    return env->CP0_WatchHi[sel] >> 32;
 }
 
 target_ulong helper_mfc0_debug(CPUMIPSState *env)
@@ -1055,6 +1060,11 @@ target_ulong helper_dmfc0_saar(CPUMIPSState *env)
     }
     return 0;
 }
+
+target_ulong helper_dmfc0_watchhi(CPUMIPSState *env, uint32_t sel)
+{
+    return env->CP0_WatchHi[sel];
+}
 #endif /* TARGET_MIPS64 */
 
 void helper_mtc0_index(CPUMIPSState *env, target_ulong arg1)
@@ -1896,11 +1906,20 @@ void helper_mtc0_watchlo(CPUMIPSState *env, target_ulong arg1, uint32_t sel)
 
 void helper_mtc0_watchhi(CPUMIPSState *env, target_ulong arg1, uint32_t sel)
 {
-    int mask = 0x40000FF8 | (env->CP0_EntryHi_ASID_mask << CP0WH_ASID);
+    uint64_t mask = 0x40000FF8 | (env->CP0_EntryHi_ASID_mask << CP0WH_ASID);
+    if ((env->CP0_Config5 >> CP0C5_MI) & 1) {
+        mask |= 0xFFFFFFFF00000000ULL; /* MMID */
+    }
     env->CP0_WatchHi[sel] = arg1 & mask;
     env->CP0_WatchHi[sel] &= ~(env->CP0_WatchHi[sel] & arg1 & 0x7);
 }
 
+void helper_mthc0_watchhi(CPUMIPSState *env, target_ulong arg1, uint32_t sel)
+{
+    env->CP0_WatchHi[sel] = ((uint64_t) (arg1) << 32) |
+                            (env->CP0_WatchHi[sel] & 0x00000000ffffffffULL);
+}
+
 void helper_mtc0_xcontext(CPUMIPSState *env, target_ulong arg1)
 {
     target_ulong mask = (1ULL << (env->SEGBITS - 7)) - 1;
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 4ebeabe..b40468d 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -2547,6 +2547,7 @@ typedef struct DisasContext {
     bool nan2008;
     bool abs2008;
     bool saar;
+    bool mi;
 } DisasContext;
 
 #define DISAS_STOP       DISAS_TARGET_0
@@ -6680,6 +6681,25 @@ static void gen_mfhc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             goto cp0_unimplemented;
         }
         break;
+    case CP0_REGISTER_19:
+        switch (sel) {
+        case 0:
+        case 1:
+        case 2:
+        case 3:
+        case 4:
+        case 5:
+        case 6:
+        case 7:
+            /* upper 32 bits are only available when Config5MI != 0 */
+            CP0_CHECK(ctx->mi);
+            gen_mfhc0_load64(arg, offsetof(CPUMIPSState, CP0_WatchHi[sel]), 0);
+            register_name = "WatchHi";
+            break;
+        default:
+            goto cp0_unimplemented;
+        }
+        break;
     case CP0_REGISTER_28:
         switch (sel) {
         case 0:
@@ -6766,6 +6786,25 @@ static void gen_mthc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             goto cp0_unimplemented;
         }
         break;
+    case CP0_REGISTER_19:
+        switch (sel) {
+        case 0:
+        case 1:
+        case 2:
+        case 3:
+        case 4:
+        case 5:
+        case 6:
+        case 7:
+            /* upper 32 bits are only available when Config5MI != 0 */
+            CP0_CHECK(ctx->mi);
+            gen_helper_0e1i(mthc0_watchhi, arg, sel);
+            register_name = "WatchHi";
+            break;
+        default:
+            goto cp0_unimplemented;
+        }
+        break;
     case CP0_REGISTER_28:
         switch (sel) {
         case 0:
@@ -8805,7 +8844,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         case 6:
         case 7:
             CP0_CHECK(ctx->CP0_Config1 & (1 << CP0C1_WR));
-            gen_helper_1e0i(mfc0_watchhi, arg, sel);
+            gen_helper_1e0i(dmfc0_watchhi, arg, sel);
             register_name = "WatchHi";
             break;
         default:
@@ -29965,6 +30004,7 @@ static void mips_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
     ctx->mrp = (env->CP0_Config5 >> CP0C5_MRP) & 1;
     ctx->nan2008 = (env->active_fpu.fcr31 >> FCR31_NAN2008) & 1;
     ctx->abs2008 = (env->active_fpu.fcr31 >> FCR31_ABS2008) & 1;
+    ctx->mi = (env->CP0_Config5 >> CP0C5_MI) & 1;
     restore_cpu_state(env, ctx);
 #ifdef CONFIG_USER_ONLY
         ctx->mem_idx = MIPS_HFLAG_UM;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID register implementation
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 02/37] target/mips: Amend CP0 WatchHi register implementation Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:39   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 04/37] target/mips: Add support for emulation of GINVT instruction Aleksandar Markovic
                   ` (33 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Yongbok Kim <yongbok.kim@mips.com>

Add migration support and fix preprocessor constant name for
MemoryMapID register.

Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h     | 2 +-
 target/mips/machine.c | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 6406ba8..eda8350 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -290,7 +290,7 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG04__CONTEXT         0
 #define CP0_REG04__USERLOCAL       2
 #define CP0_REG04__DBGCONTEXTID    4
-#define CP0_REG00__MMID            5
+#define CP0_REG04__MEMORYMAPID     5
 /* CP0 Register 05 */
 #define CP0_REG05__PAGEMASK        0
 #define CP0_REG05__PAGEGRAIN       1
diff --git a/target/mips/machine.c b/target/mips/machine.c
index c3e52f8..e23b767 100644
--- a/target/mips/machine.c
+++ b/target/mips/machine.c
@@ -137,6 +137,7 @@ static int get_tlb(QEMUFile *f, void *pv, size_t size,
     qemu_get_betls(f, &v->VPN);
     qemu_get_be32s(f, &v->PageMask);
     qemu_get_be16s(f, &v->ASID);
+    qemu_get_be32s(f, &v->MMID);
     qemu_get_be16s(f, &flags);
     v->G = (flags >> 10) & 1;
     v->C0 = (flags >> 7) & 3;
@@ -162,6 +163,7 @@ static int put_tlb(QEMUFile *f, void *pv, size_t size,
     r4k_tlb_t *v = pv;
 
     uint16_t asid = v->ASID;
+    uint32_t mmid = v->MMID;
     uint16_t flags = ((v->EHINV << 15) |
                       (v->RI1 << 14) |
                       (v->RI0 << 13) |
@@ -178,6 +180,7 @@ static int put_tlb(QEMUFile *f, void *pv, size_t size,
     qemu_put_betls(f, &v->VPN);
     qemu_put_be32s(f, &v->PageMask);
     qemu_put_be16s(f, &asid);
+    qemu_put_be32s(f, &mmid);
     qemu_put_be16s(f, &flags);
     qemu_put_be64s(f, &v->PFN[0]);
     qemu_put_be64s(f, &v->PFN[1]);
@@ -199,8 +202,8 @@ const VMStateInfo vmstate_info_tlb = {
 
 const VMStateDescription vmstate_tlb = {
     .name = "cpu/tlb",
-    .version_id = 2,
-    .minimum_version_id = 2,
+    .version_id = 3,
+    .minimum_version_id = 3,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32(nb_tlb, CPUMIPSTLBContext),
         VMSTATE_UINT32(tlb_in_use, CPUMIPSTLBContext),
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 04/37] target/mips: Add support for emulation of GINVT instruction
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (2 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID " Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions Aleksandar Markovic
                   ` (32 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Yongbok Kim <yongbok.kim@mips.com>

Implement emulation of GINVT instruction. As QEMU doesn't support
caches and virtualization, this implementation covers only GINVT
(Global Invalidate TLB) instruction among TLB-related instructions.

Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 disas/mips.c            |   2 +
 target/mips/helper.c    |  24 ++++++++--
 target/mips/helper.h    |   2 +
 target/mips/internal.h  |   1 +
 target/mips/op_helper.c | 122 ++++++++++++++++++++++++++++++++++++++++++------
 target/mips/translate.c |  48 ++++++++++++++++++-
 6 files changed, 177 insertions(+), 22 deletions(-)

diff --git a/disas/mips.c b/disas/mips.c
index dfefe5e..c3a3059 100644
--- a/disas/mips.c
+++ b/disas/mips.c
@@ -1409,6 +1409,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"dvp",        "t",     0x41600024, 0xffe0ffff, TRAP|WR_t,            0, I32R6},
 {"evp",        "",      0x41600004, 0xffffffff, TRAP,                 0, I32R6},
 {"evp",        "t",     0x41600004, 0xffe0ffff, TRAP|WR_t,            0, I32R6},
+{"ginvi",      "v",     0x7c00003d, 0xfc1ffcff, TRAP | INSN_TLB,      0, I32R6},
+{"ginvt",      "v",     0x7c0000bd, 0xfc1ffcff, TRAP | INSN_TLB,      0, I32R6},
 
 /* MSA */
 {"sll.b",   "+d,+e,+f", 0x7800000d, 0xffe0003f, WR_VD|RD_VS|RD_VT,  0, MSA},
diff --git a/target/mips/helper.c b/target/mips/helper.c
index a2b6459..6e583d3 100644
--- a/target/mips/helper.c
+++ b/target/mips/helper.c
@@ -70,7 +70,12 @@ int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
                      target_ulong address, int rw, int access_type)
 {
     uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
     int i;
+    uint32_t tlb_mmid;
+
+    MMID = mi ? MMID : (uint32_t) ASID;
 
     for (i = 0; i < env->tlb->tlb_in_use; i++) {
         r4k_tlb_t *tlb = &env->tlb->mmu.r4k.tlb[i];
@@ -82,8 +87,9 @@ int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
         tag &= env->SEGMask;
 #endif
 
-        /* Check ASID, virtual page number & size */
-        if ((tlb->G == 1 || tlb->ASID == ASID) && VPN == tag && !tlb->EHINV) {
+        /* Check ASID/MMID, virtual page number & size */
+        tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+        if ((tlb->G == 1 || tlb_mmid == MMID) && VPN == tag && !tlb->EHINV) {
             /* TLB match */
             int n = !!(address & mask & ~(mask >> 1));
             /* Check access rights */
@@ -1397,12 +1403,20 @@ void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra)
     target_ulong addr;
     target_ulong end;
     uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
     target_ulong mask;
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
+    uint32_t tlb_mmid;
+
+    MMID = mi ? MMID : (uint32_t) ASID;
 
     tlb = &env->tlb->mmu.r4k.tlb[idx];
-    /* The qemu TLB is flushed when the ASID changes, so no need to
-       flush these entries again.  */
-    if (tlb->G == 0 && tlb->ASID != ASID) {
+    /*
+     * The qemu TLB is flushed when the ASID/MMID changes, so no need to
+     * flush these entries again.
+     */
+    tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+    if (tlb->G == 0 && tlb_mmid != MMID) {
         return;
     }
 
diff --git a/target/mips/helper.h b/target/mips/helper.h
index aad0951..c7d35bd 100644
--- a/target/mips/helper.h
+++ b/target/mips/helper.h
@@ -120,6 +120,7 @@ DEF_HELPER_2(mtc0_tcschefback, void, env, tl)
 DEF_HELPER_2(mttc0_tcschefback, void, env, tl)
 DEF_HELPER_2(mtc0_entrylo1, void, env, tl)
 DEF_HELPER_2(mtc0_context, void, env, tl)
+DEF_HELPER_2(mtc0_memorymapid, void, env, tl)
 DEF_HELPER_2(mtc0_pagemask, void, env, tl)
 DEF_HELPER_2(mtc0_pagegrain, void, env, tl)
 DEF_HELPER_2(mtc0_segctl0, void, env, tl)
@@ -376,6 +377,7 @@ DEF_HELPER_1(ei, tl, env)
 DEF_HELPER_1(eret, void, env)
 DEF_HELPER_1(eretnc, void, env)
 DEF_HELPER_1(deret, void, env)
+DEF_HELPER_3(ginvt, void, env, tl, i32)
 #endif /* !CONFIG_USER_ONLY */
 DEF_HELPER_1(rdhwr_cpunum, tl, env)
 DEF_HELPER_1(rdhwr_synci_step, tl, env)
diff --git a/target/mips/internal.h b/target/mips/internal.h
index f6d0d7a..d9216fb 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -92,6 +92,7 @@ struct r4k_tlb_t {
     target_ulong VPN;
     uint32_t PageMask;
     uint16_t ASID;
+    uint32_t MMID;
     unsigned int G:1;
     unsigned int C0:3;
     unsigned int C1:3;
diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
index 279b800..3104904 100644
--- a/target/mips/op_helper.c
+++ b/target/mips/op_helper.c
@@ -1409,6 +1409,17 @@ void helper_mtc0_context(CPUMIPSState *env, target_ulong arg1)
     env->CP0_Context = (env->CP0_Context & 0x007FFFFF) | (arg1 & ~0x007FFFFF);
 }
 
+void helper_mtc0_memorymapid(CPUMIPSState *env, target_ulong arg1)
+{
+    int32_t old;
+    old = env->CP0_MemoryMapID;
+    env->CP0_MemoryMapID = (int32_t) arg1;
+    /* If the MemoryMapID changes, flush qemu's TLB.  */
+    if (old != env->CP0_MemoryMapID) {
+        cpu_mips_tlb_flush(env);
+    }
+}
+
 void update_pagemask(CPUMIPSState *env, target_ulong arg1, int32_t *pagemask)
 {
     uint64_t mask = arg1 >> (TARGET_PAGE_BITS + 1);
@@ -1857,6 +1868,8 @@ void helper_mtc0_config5(CPUMIPSState *env, target_ulong arg1)
 {
     env->CP0_Config5 = (env->CP0_Config5 & (~env->CP0_Config5_rw_bitmask)) |
                        (arg1 & env->CP0_Config5_rw_bitmask);
+    env->CP0_EntryHi_ASID_mask = (env->CP0_Config5 & (1 << CP0C5_MI)) ? 0x0 :
+                        (env->CP0_Config4 & (1 << CP0C4_AE)) ? 0x3ff : 0xff;
     compute_hflags(env);
 }
 
@@ -2276,6 +2289,7 @@ static void r4k_fill_tlb(CPUMIPSState *env, int idx)
     tlb->VPN &= env->SEGMask;
 #endif
     tlb->ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    tlb->MMID = env->CP0_MemoryMapID;
     tlb->PageMask = env->CP0_PageMask;
     tlb->G = env->CP0_EntryLo0 & env->CP0_EntryLo1 & 1;
     tlb->V0 = (env->CP0_EntryLo0 & 2) != 0;
@@ -2294,13 +2308,18 @@ static void r4k_fill_tlb(CPUMIPSState *env, int idx)
 
 void r4k_helper_tlbinv(CPUMIPSState *env)
 {
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
     int idx;
     r4k_tlb_t *tlb;
     uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
+    uint32_t tlb_mmid;
 
+    MMID = mi ? MMID : (uint32_t) ASID;
     for (idx = 0; idx < env->tlb->nb_tlb; idx++) {
         tlb = &env->tlb->mmu.r4k.tlb[idx];
-        if (!tlb->G && tlb->ASID == ASID) {
+        tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+        if (!tlb->G && tlb_mmid == MMID) {
             tlb->EHINV = 1;
         }
     }
@@ -2319,11 +2338,16 @@ void r4k_helper_tlbinvf(CPUMIPSState *env)
 
 void r4k_helper_tlbwi(CPUMIPSState *env)
 {
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
     r4k_tlb_t *tlb;
     int idx;
     target_ulong VPN;
-    uint16_t ASID;
     bool EHINV, G, V0, D0, V1, D1, XI0, XI1, RI0, RI1;
+    uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
+    uint32_t tlb_mmid;
+
+    MMID = mi ? MMID : (uint32_t) ASID;
 
     idx = (env->CP0_Index & ~0x80000000) % env->tlb->nb_tlb;
     tlb = &env->tlb->mmu.r4k.tlb[idx];
@@ -2331,7 +2355,6 @@ void r4k_helper_tlbwi(CPUMIPSState *env)
 #if defined(TARGET_MIPS64)
     VPN &= env->SEGMask;
 #endif
-    ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
     EHINV = (env->CP0_EntryHi & (1 << CP0EnHi_EHINV)) != 0;
     G = env->CP0_EntryLo0 & env->CP0_EntryLo1 & 1;
     V0 = (env->CP0_EntryLo0 & 2) != 0;
@@ -2343,9 +2366,10 @@ void r4k_helper_tlbwi(CPUMIPSState *env)
     XI1 = (env->CP0_EntryLo1 >> CP0EnLo_XI) &1;
     RI1 = (env->CP0_EntryLo1 >> CP0EnLo_RI) &1;
 
+    tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
     /* Discard cached TLB entries, unless tlbwi is just upgrading access
        permissions on the current entry. */
-    if (tlb->VPN != VPN || tlb->ASID != ASID || tlb->G != G ||
+    if (tlb->VPN != VPN || tlb_mmid != MMID || tlb->G != G ||
         (!tlb->EHINV && EHINV) ||
         (tlb->V0 && !V0) || (tlb->D0 && !D0) ||
         (!tlb->XI0 && XI0) || (!tlb->RI0 && RI0) ||
@@ -2368,14 +2392,17 @@ void r4k_helper_tlbwr(CPUMIPSState *env)
 
 void r4k_helper_tlbp(CPUMIPSState *env)
 {
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
     r4k_tlb_t *tlb;
     target_ulong mask;
     target_ulong tag;
     target_ulong VPN;
-    uint16_t ASID;
     int i;
+    uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
+    uint32_t tlb_mmid;
 
-    ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    MMID = mi ? MMID : (uint32_t) ASID;
     for (i = 0; i < env->tlb->nb_tlb; i++) {
         tlb = &env->tlb->mmu.r4k.tlb[i];
         /* 1k pages are not supported. */
@@ -2385,8 +2412,9 @@ void r4k_helper_tlbp(CPUMIPSState *env)
 #if defined(TARGET_MIPS64)
         tag &= env->SEGMask;
 #endif
-        /* Check ASID, virtual page number & size */
-        if ((tlb->G == 1 || tlb->ASID == ASID) && VPN == tag && !tlb->EHINV) {
+        tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+        /* Check ASID/MMID, virtual page number & size */
+        if ((tlb->G == 1 || tlb_mmid == MMID) && VPN == tag && !tlb->EHINV) {
             /* TLB match */
             env->CP0_Index = i;
             break;
@@ -2403,8 +2431,9 @@ void r4k_helper_tlbp(CPUMIPSState *env)
 #if defined(TARGET_MIPS64)
             tag &= env->SEGMask;
 #endif
-            /* Check ASID, virtual page number & size */
-            if ((tlb->G == 1 || tlb->ASID == ASID) && VPN == tag) {
+            tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+            /* Check ASID/MMID, virtual page number & size */
+            if ((tlb->G == 1 || tlb_mmid == MMID) && VPN == tag) {
                 r4k_mips_tlb_flush_extra (env, i);
                 break;
             }
@@ -2426,17 +2455,22 @@ static inline uint64_t get_entrylo_pfn_from_tlb(uint64_t tlb_pfn)
 
 void r4k_helper_tlbr(CPUMIPSState *env)
 {
+    bool mi = !!((env->CP0_Config5 >> CP0C5_MI) & 1);
     r4k_tlb_t *tlb;
-    uint16_t ASID;
     int idx;
+    uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    uint32_t MMID = env->CP0_MemoryMapID;
+    uint32_t tlb_mmid;
 
-    ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
+    MMID = mi ? MMID : (uint32_t) ASID;
     idx = (env->CP0_Index & ~0x80000000) % env->tlb->nb_tlb;
     tlb = &env->tlb->mmu.r4k.tlb[idx];
 
-    /* If this will change the current ASID, flush qemu's TLB.  */
-    if (ASID != tlb->ASID)
+    tlb_mmid = mi ? tlb->MMID : (uint32_t) tlb->ASID;
+    /* If this will change the current ASID/MMID, flush qemu's TLB.  */
+    if (MMID != tlb_mmid) {
         cpu_mips_tlb_flush(env);
+    }
 
     r4k_mips_tlb_flush_extra(env, env->tlb->nb_tlb);
 
@@ -2446,7 +2480,8 @@ void r4k_helper_tlbr(CPUMIPSState *env)
         env->CP0_EntryLo0 = 0;
         env->CP0_EntryLo1 = 0;
     } else {
-        env->CP0_EntryHi = tlb->VPN | tlb->ASID;
+        env->CP0_EntryHi = mi ? tlb->VPN : tlb->VPN | tlb->ASID;
+        env->CP0_MemoryMapID = tlb->MMID;
         env->CP0_PageMask = tlb->PageMask;
         env->CP0_EntryLo0 = tlb->G | (tlb->V0 << 1) | (tlb->D0 << 2) |
                         ((uint64_t)tlb->RI0 << CP0EnLo_RI) |
@@ -2489,6 +2524,63 @@ void helper_tlbinvf(CPUMIPSState *env)
     env->tlb->helper_tlbinvf(env);
 }
 
+static void global_invalidate_tlb(CPUMIPSState *env,
+                           uint32_t invMsgVPN2,
+                           uint8_t invMsgR,
+                           uint32_t invMsgMMid,
+                           bool invAll,
+                           bool invVAMMid,
+                           bool invMMid,
+                           bool invVA)
+{
+
+    int idx;
+    r4k_tlb_t *tlb;
+    bool VAMatch;
+    bool MMidMatch;
+
+    for (idx = 0; idx < env->tlb->nb_tlb; idx++) {
+        tlb = &env->tlb->mmu.r4k.tlb[idx];
+        VAMatch =
+            (((tlb->VPN & ~tlb->PageMask) == (invMsgVPN2 & ~tlb->PageMask))
+#ifdef TARGET_MIPS64
+            &&
+            (extract64(env->CP0_EntryHi, 62, 2) == invMsgR)
+#endif
+            );
+        MMidMatch = tlb->MMID == invMsgMMid;
+        if ((invAll && (idx > env->CP0_Wired)) ||
+            (VAMatch && invVAMMid && (tlb->G || MMidMatch)) ||
+            (VAMatch && invVA) ||
+            (MMidMatch && !(tlb->G) && invMMid)) {
+            tlb->EHINV = 1;
+        }
+    }
+    cpu_mips_tlb_flush(env);
+}
+
+void helper_ginvt(CPUMIPSState *env, target_ulong arg, uint32_t type)
+{
+    bool invAll = type == 0;
+    bool invVA = type == 1;
+    bool invMMid = type == 2;
+    bool invVAMMid = type == 3;
+    uint32_t invMsgVPN2 = arg & (TARGET_PAGE_MASK << 1);
+    uint8_t invMsgR = 0;
+    uint32_t invMsgMMid = env->CP0_MemoryMapID;
+    CPUState *other_cs = first_cpu;
+
+#ifdef TARGET_MIPS64
+    invMsgR = extract64(arg, 62, 2);
+#endif
+
+    CPU_FOREACH(other_cs) {
+        MIPSCPU *other_cpu = MIPS_CPU(other_cs);
+        global_invalidate_tlb(&other_cpu->env, invMsgVPN2, invMsgR, invMsgMMid,
+                              invAll, invVAMMid, invMMid, invVA);
+    }
+}
+
 /* Specials */
 target_ulong helper_di(CPUMIPSState *env)
 {
diff --git a/target/mips/translate.c b/target/mips/translate.c
index b40468d..3f73be0 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -388,6 +388,7 @@ enum {
     OPC_BSHFL    = 0x20 | OPC_SPECIAL3,
     OPC_DBSHFL   = 0x24 | OPC_SPECIAL3,
     OPC_RDHWR    = 0x3B | OPC_SPECIAL3,
+    OPC_GINV     = 0x3D | OPC_SPECIAL3,
 
     /* Loongson 2E */
     OPC_MULT_G_2E   = 0x18 | OPC_SPECIAL3,
@@ -2548,6 +2549,7 @@ typedef struct DisasContext {
     bool abs2008;
     bool saar;
     bool mi;
+    int gi;
 } DisasContext;
 
 #define DISAS_STOP       DISAS_TARGET_0
@@ -7027,6 +7029,11 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "UserLocal";
             break;
+        case 5:
+            CP0_CHECK(ctx->mi);
+            gen_helper_mtc0_memorymapid(cpu_env, arg);
+            register_name = "MemoryMapID";
+            break;
         default:
             goto cp0_unimplemented;
         }
@@ -7763,6 +7770,11 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
                           offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
             register_name = "UserLocal";
             break;
+        case 5:
+            CP0_CHECK(ctx->mi);
+            gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_MemoryMapID));
+            register_name = "MemoryMapID";
+            break;
         default:
             goto cp0_unimplemented;
         }
@@ -8509,6 +8521,11 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
                           offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
             register_name = "UserLocal";
             break;
+        case 5:
+            CP0_CHECK(ctx->mi);
+            gen_helper_mtc0_memorymapid(cpu_env, arg);
+            register_name = "MemoryMapID";
+            break;
         default:
             goto cp0_unimplemented;
         }
@@ -9225,6 +9242,11 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
                           offsetof(CPUMIPSState, active_tc.CP0_UserLocal));
             register_name = "UserLocal";
             break;
+        case 5:
+            CP0_CHECK(ctx->mi);
+            gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_MemoryMapID));
+            register_name = "MemoryMapID";
+            break;
         default:
             goto cp0_unimplemented;
         }
@@ -27072,6 +27094,27 @@ static void decode_opc_special3_r6(CPUMIPSState *env, DisasContext *ctx)
             }
         }
         break;
+#ifndef CONFIG_USER_ONLY
+    case OPC_GINV:
+        if (unlikely(ctx->gi <= 1)) {
+            generate_exception_end(ctx, EXCP_RI);
+        }
+        check_cp0_enabled(ctx);
+        switch ((ctx->opcode >> 6) & 3) {
+        case 0:
+            /* GINVI */
+            /* Treat as NOP. */
+            break;
+        case 2:
+            /* GINVT */
+            gen_helper_0e1i(ginvt, cpu_gpr[rs], extract32(ctx->opcode, 8, 2));
+            break;
+        default:
+            generate_exception_end(ctx, EXCP_RI);
+            break;
+        }
+        break;
+#endif
 #if defined(TARGET_MIPS64)
     case R6_OPC_SCD:
         gen_st_cond(ctx, rt, rs, imm, MO_TEQ, false);
@@ -30005,6 +30048,7 @@ static void mips_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
     ctx->nan2008 = (env->active_fpu.fcr31 >> FCR31_NAN2008) & 1;
     ctx->abs2008 = (env->active_fpu.fcr31 >> FCR31_ABS2008) & 1;
     ctx->mi = (env->CP0_Config5 >> CP0C5_MI) & 1;
+    ctx->gi = (env->CP0_Config5 >> CP0C5_GI) & 3;
     restore_cpu_state(env, ctx);
 #ifdef CONFIG_USER_ONLY
         ctx->mem_idx = MIPS_HFLAG_UM;
@@ -30464,8 +30508,8 @@ void cpu_state_reset(CPUMIPSState *env)
     if (env->CP0_Config3 & (1 << CP0C3_CMGCR)) {
         env->CP0_CMGCRBase = 0x1fbf8000 >> 4;
     }
-    env->CP0_EntryHi_ASID_mask = (env->CP0_Config4 & (1 << CP0C4_AE)) ?
-                                 0x3ff : 0xff;
+    env->CP0_EntryHi_ASID_mask = (env->CP0_Config5 & (1 << CP0C5_MI)) ? 0x0 :
+                        (env->CP0_Config4 & (1 << CP0C4_AE)) ? 0x3ff : 0xff;
     env->CP0_Status = (1 << CP0St_BEV) | (1 << CP0St_ERL);
     /*
      * Vectored interrupts not implemented, timer on int 7,
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (3 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 04/37] target/mips: Add support for emulation of GINVT instruction Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-10-22  9:16   ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 06/37] target/mips: Style improvements in cp0_timer.c Aleksandar Markovic
                   ` (31 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Yongbok Kim <yongbok.kim@mips.com>

Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
Reuse zlib crc32() and Linux crc32c(). Note that, at the time being,
there is no MIPS CPU that supports CRC32 instructions (they are an
optional part of MIPS64/32 R6 anf nanoMIPS ISAs).

Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 disas/mips.c            |  8 ++++++++
 target/mips/helper.h    |  2 ++
 target/mips/op_helper.c | 22 ++++++++++++++++++++++
 target/mips/translate.c | 41 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 73 insertions(+)

diff --git a/disas/mips.c b/disas/mips.c
index c3a3059..b9a5204 100644
--- a/disas/mips.c
+++ b/disas/mips.c
@@ -1411,6 +1411,14 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"evp",        "t",     0x41600004, 0xffe0ffff, TRAP|WR_t,            0, I32R6},
 {"ginvi",      "v",     0x7c00003d, 0xfc1ffcff, TRAP | INSN_TLB,      0, I32R6},
 {"ginvt",      "v",     0x7c0000bd, 0xfc1ffcff, TRAP | INSN_TLB,      0, I32R6},
+{"crc32b",     "t,v,t", 0x7c00000f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32h",     "t,v,t", 0x7c00004f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32w",     "t,v,t", 0x7c00008f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32d",     "t,v,t", 0x7c0000cf, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I64R6},
+{"crc32cb",    "t,v,t", 0x7c00010f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32ch",    "t,v,t", 0x7c00014f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32cw",    "t,v,t", 0x7c00018f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I32R6},
+{"crc32cd",    "t,v,t", 0x7c0001cf, 0xfc00ff3f, WR_d | RD_s | RD_t,   0, I64R6},
 
 /* MSA */
 {"sll.b",   "+d,+e,+f", 0x7800000d, 0xffe0003f, WR_VD|RD_VS|RD_VT,  0, MSA},
diff --git a/target/mips/helper.h b/target/mips/helper.h
index c7d35bd..0e61043 100644
--- a/target/mips/helper.h
+++ b/target/mips/helper.h
@@ -40,6 +40,8 @@ DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
 DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl)
 #endif
 
+DEF_HELPER_3(crc32, tl, tl, tl, i32)
+DEF_HELPER_3(crc32c, tl, tl, tl, i32)
 DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32)
 
 #ifndef CONFIG_USER_ONLY
diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
index 3104904..5874029 100644
--- a/target/mips/op_helper.c
+++ b/target/mips/op_helper.c
@@ -25,6 +25,8 @@
 #include "exec/exec-all.h"
 #include "exec/cpu_ldst.h"
 #include "sysemu/kvm.h"
+#include "qemu/crc32c.h"
+#include <zlib.h>
 
 /*****************************************************************************/
 /* Exceptions processing helpers */
@@ -343,6 +345,26 @@ target_ulong helper_rotx(target_ulong rs, uint32_t shift, uint32_t shiftx,
     return (int64_t)(int32_t)(uint32_t)tmp5;
 }
 
+/* these crc32 functions are based on target/arm/helper-a64.c */
+target_ulong helper_crc32(target_ulong val, target_ulong m, uint32_t sz)
+{
+    uint8_t buf[8];
+    target_ulong mask = ((sz * 8) == 64) ? -1ULL : ((1ULL << (sz * 8)) - 1);
+
+    m &= mask;
+    stq_le_p(buf, m);
+    return (int32_t) (crc32(val ^ 0xffffffff, buf, sz) ^ 0xffffffff);
+}
+
+target_ulong helper_crc32c(target_ulong val, target_ulong m, uint32_t sz)
+{
+    uint8_t buf[8];
+    target_ulong mask = ((sz * 8) == 64) ? -1ULL : ((1ULL << (sz * 8)) - 1);
+    m &= mask;
+    stq_le_p(buf, m);
+    return (int32_t) (crc32c(val, buf, sz) ^ 0xffffffff);
+}
+
 #ifndef CONFIG_USER_ONLY
 
 static inline hwaddr do_translate_address(CPUMIPSState *env,
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 3f73be0..3f9f113 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -452,6 +452,7 @@ enum {
     OPC_LWE            = 0x2F | OPC_SPECIAL3,
 
     /* R6 */
+    OPC_CRC32          = 0x0F | OPC_SPECIAL3,
     R6_OPC_PREF        = 0x35 | OPC_SPECIAL3,
     R6_OPC_CACHE       = 0x25 | OPC_SPECIAL3,
     R6_OPC_LL          = 0x36 | OPC_SPECIAL3,
@@ -2550,6 +2551,7 @@ typedef struct DisasContext {
     bool saar;
     bool mi;
     int gi;
+    bool crcp;
 } DisasContext;
 
 #define DISAS_STOP       DISAS_TARGET_0
@@ -27041,6 +27043,33 @@ static void decode_opc_special2_legacy(CPUMIPSState *env, DisasContext *ctx)
     }
 }
 
+static void gen_crc32(DisasContext *ctx, int rd, int rs, int rt, int sz,
+                      int crc32c)
+{
+    TCGv t0;
+    TCGv t1;
+    TCGv_i32 tsz = tcg_const_i32(1 << sz);
+    if (rd == 0) {
+        /* Treat as NOP. */
+        return;
+    }
+    t0 = tcg_temp_new();
+    t1 = tcg_temp_new();
+
+    gen_load_gpr(t0, rt);
+    gen_load_gpr(t1, rs);
+
+    if (crc32c) {
+        gen_helper_crc32c(cpu_gpr[rd], t0, t1, tsz);
+    } else {
+        gen_helper_crc32(cpu_gpr[rd], t0, t1, tsz);
+    }
+
+    tcg_temp_free(t0);
+    tcg_temp_free(t1);
+    tcg_temp_free_i32(tsz);
+}
+
 static void decode_opc_special3_r6(CPUMIPSState *env, DisasContext *ctx)
 {
     int rs, rt, rd, sa;
@@ -27055,6 +27084,17 @@ static void decode_opc_special3_r6(CPUMIPSState *env, DisasContext *ctx)
 
     op1 = MASK_SPECIAL3(ctx->opcode);
     switch (op1) {
+    case OPC_CRC32:
+        if (unlikely(!ctx->crcp) ||
+            unlikely((extract32(ctx->opcode, 6, 2) == 3) &&
+                     (!(ctx->hflags & MIPS_HFLAG_64))) ||
+            unlikely((extract32(ctx->opcode, 8, 3) >= 2))) {
+            generate_exception_end(ctx, EXCP_RI);
+        }
+        gen_crc32(ctx, rt, rs, rt,
+                  extract32(ctx->opcode, 6, 2),
+                  extract32(ctx->opcode, 8, 3));
+        break;
     case R6_OPC_PREF:
         if (rt >= 24) {
             /* hint codes 24-31 are reserved and signal RI */
@@ -30049,6 +30089,7 @@ static void mips_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
     ctx->abs2008 = (env->active_fpu.fcr31 >> FCR31_ABS2008) & 1;
     ctx->mi = (env->CP0_Config5 >> CP0C5_MI) & 1;
     ctx->gi = (env->CP0_Config5 >> CP0C5_GI) & 3;
+    ctx->crcp = (env->CP0_Config5 >> CP0C5_CRCP) & 1;
     restore_cpu_state(env, ctx);
 #ifdef CONFIG_USER_ONLY
         ctx->mem_idx = MIPS_HFLAG_UM;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 06/37] target/mips: Style improvements in cp0_timer.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (4 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 07/37] target/mips: Style improvements in cpu.c Aleksandar Markovic
                   ` (30 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/mips/cp0_timer.c | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/target/mips/cp0_timer.c b/target/mips/cp0_timer.c
index f471639..b5f3560 100644
--- a/target/mips/cp0_timer.c
+++ b/target/mips/cp0_timer.c
@@ -29,7 +29,7 @@
 #define TIMER_PERIOD 10 /* 10 ns period for 100 Mhz frequency */
 
 /* XXX: do not use a global */
-uint32_t cpu_mips_get_random (CPUMIPSState *env)
+uint32_t cpu_mips_get_random(CPUMIPSState *env)
 {
     static uint32_t seed = 1;
     static uint32_t prev_idx = 0;
@@ -42,8 +42,10 @@ uint32_t cpu_mips_get_random (CPUMIPSState *env)
 
     /* Don't return same value twice, so get another value */
     do {
-        /* Use a simple algorithm of Linear Congruential Generator
-         * from ISO/IEC 9899 standard. */
+        /*
+         * Use a simple algorithm of Linear Congruential Generator
+         * from ISO/IEC 9899 standard.
+         */
         seed = 1103515245 * seed + 12345;
         idx = (seed >> 16) % nb_rand_tlb + env->CP0_Wired;
     } while (idx == prev_idx);
@@ -73,7 +75,7 @@ static void cpu_mips_timer_expire(CPUMIPSState *env)
     qemu_irq_raise(env->irq[(env->CP0_IntCtl >> CP0IntCtl_IPTI) & 0x7]);
 }
 
-uint32_t cpu_mips_get_count (CPUMIPSState *env)
+uint32_t cpu_mips_get_count(CPUMIPSState *env)
 {
     if (env->CP0_Cause & (1 << CP0Ca_DC)) {
         return env->CP0_Count;
@@ -91,16 +93,16 @@ uint32_t cpu_mips_get_count (CPUMIPSState *env)
     }
 }
 
-void cpu_mips_store_count (CPUMIPSState *env, uint32_t count)
+void cpu_mips_store_count(CPUMIPSState *env, uint32_t count)
 {
     /*
      * This gets called from cpu_state_reset(), potentially before timer init.
      * So env->timer may be NULL, which is also the case with KVM enabled so
      * treat timer as disabled in that case.
      */
-    if (env->CP0_Cause & (1 << CP0Ca_DC) || !env->timer)
+    if (env->CP0_Cause & (1 << CP0Ca_DC) || !env->timer) {
         env->CP0_Count = count;
-    else {
+    } else {
         /* Store new count register */
         env->CP0_Count = count -
                (uint32_t)(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / TIMER_PERIOD);
@@ -109,13 +111,15 @@ void cpu_mips_store_count (CPUMIPSState *env, uint32_t count)
     }
 }
 
-void cpu_mips_store_compare (CPUMIPSState *env, uint32_t value)
+void cpu_mips_store_compare(CPUMIPSState *env, uint32_t value)
 {
     env->CP0_Compare = value;
-    if (!(env->CP0_Cause & (1 << CP0Ca_DC)))
+    if (!(env->CP0_Cause & (1 << CP0Ca_DC))) {
         cpu_mips_timer_update(env);
-    if (env->insn_flags & ISA_MIPS32R2)
+    }
+    if (env->insn_flags & ISA_MIPS32R2) {
         env->CP0_Cause &= ~(1 << CP0Ca_TI);
+    }
     qemu_irq_lower(env->irq[(env->CP0_IntCtl >> CP0IntCtl_IPTI) & 0x7]);
 }
 
@@ -131,27 +135,27 @@ void cpu_mips_stop_count(CPUMIPSState *env)
                                  TIMER_PERIOD);
 }
 
-static void mips_timer_cb (void *opaque)
+static void mips_timer_cb(void *opaque)
 {
     CPUMIPSState *env;
 
     env = opaque;
-#if 0
-    qemu_log("%s\n", __func__);
-#endif
 
-    if (env->CP0_Cause & (1 << CP0Ca_DC))
+    if (env->CP0_Cause & (1 << CP0Ca_DC)) {
         return;
+    }
 
-    /* ??? This callback should occur when the counter is exactly equal to
-       the comparator value.  Offset the count by one to avoid immediately
-       retriggering the callback before any virtual time has passed.  */
+    /*
+     * ??? This callback should occur when the counter is exactly equal to
+     * the comparator value.  Offset the count by one to avoid immediately
+     * retriggering the callback before any virtual time has passed.
+     */
     env->CP0_Count++;
     cpu_mips_timer_expire(env);
     env->CP0_Count--;
 }
 
-void cpu_mips_clock_init (MIPSCPU *cpu)
+void cpu_mips_clock_init(MIPSCPU *cpu)
 {
     CPUMIPSState *env = &cpu->env;
 
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 07/37] target/mips: Style improvements in cpu.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (5 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 06/37] target/mips: Style improvements in cp0_timer.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 08/37] target/mips: Style improvements in internal.h Aleksandar Markovic
                   ` (29 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/mips/cpu.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index 39eafaf..3ffa342 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -57,9 +57,11 @@ static bool mips_cpu_has_work(CPUState *cs)
     CPUMIPSState *env = &cpu->env;
     bool has_work = false;
 
-    /* Prior to MIPS Release 6 it is implementation dependent if non-enabled
-       interrupts wake-up the CPU, however most of the implementations only
-       check for interrupts that can be taken. */
+    /*
+     * Prior to MIPS Release 6 it is implementation dependent if non-enabled
+     * interrupts wake-up the CPU, however most of the implementations only
+     * check for interrupts that can be taken.
+     */
     if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
         cpu_mips_hw_interrupts_pending(env)) {
         if (cpu_mips_hw_interrupts_enabled(env) ||
@@ -70,8 +72,10 @@ static bool mips_cpu_has_work(CPUState *cs)
 
     /* MIPS-MT has the ability to halt the CPU.  */
     if (env->CP0_Config3 & (1 << CP0C3_MT)) {
-        /* The QEMU model will issue an _WAKE request whenever the CPUs
-           should be woken up.  */
+        /*
+         * The QEMU model will issue an _WAKE request whenever the CPUs
+         * should be woken up.
+         */
         if (cs->interrupt_request & CPU_INTERRUPT_WAKE) {
             has_work = true;
         }
@@ -112,7 +116,8 @@ static void mips_cpu_reset(CPUState *s)
 #endif
 }
 
-static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info) {
+static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info)
+{
     MIPSCPU *cpu = MIPS_CPU(s);
     CPUMIPSState *env = &cpu->env;
 
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 08/37] target/mips: Style improvements in internal.h
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (6 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 07/37] target/mips: Style improvements in cpu.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 09/37] target/mips: Style improvements in machine.c Aleksandar Markovic
                   ` (28 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/mips/internal.h | 57 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 35 insertions(+), 22 deletions(-)

diff --git a/target/mips/internal.h b/target/mips/internal.h
index d9216fb..836de7a 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -1,4 +1,5 @@
-/* mips internal definitions and helpers
+/*
+ * MIPS internal definitions and helpers
  *
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
@@ -8,8 +9,10 @@
 #define MIPS_INTERNAL_H
 
 
-/* MMU types, the first four entries have the same layout as the
-   CP0C0_MT field.  */
+/*
+ * MMU types, the first four entries have the same layout as the
+ * CP0C0_MT field.
+ */
 enum mips_mmu_types {
     MMU_TYPE_NONE,
     MMU_TYPE_R4000,
@@ -159,9 +162,11 @@ static inline bool cpu_mips_hw_interrupts_enabled(CPUMIPSState *env)
         !(env->CP0_Status & (1 << CP0St_EXL)) &&
         !(env->CP0_Status & (1 << CP0St_ERL)) &&
         !(env->hflags & MIPS_HFLAG_DM) &&
-        /* Note that the TCStatus IXMT field is initialized to zero,
-           and only MT capable cores can set it to one. So we don't
-           need to check for MT capabilities here.  */
+        /*
+         * Note that the TCStatus IXMT field is initialized to zero,
+         * and only MT capable cores can set it to one. So we don't
+         * need to check for MT capabilities here.
+         */
         !(env->active_tc.CP0_TCStatus & (1 << CP0TCSt_IXMT));
 }
 
@@ -176,14 +181,18 @@ static inline bool cpu_mips_hw_interrupts_pending(CPUMIPSState *env)
     status = env->CP0_Status & CP0Ca_IP_mask;
 
     if (env->CP0_Config3 & (1 << CP0C3_VEIC)) {
-        /* A MIPS configured with a vectorizing external interrupt controller
-           will feed a vector into the Cause pending lines. The core treats
-           the status lines as a vector level, not as indiviual masks.  */
+        /*
+         * A MIPS configured with a vectorizing external interrupt controller
+         * will feed a vector into the Cause pending lines. The core treats
+         * the status lines as a vector level, not as indiviual masks.
+         */
         r = pending > status;
     } else {
-        /* A MIPS configured with compatibility or VInt (Vectored Interrupts)
-           treats the pending lines as individual interrupt lines, the status
-           lines are individual masks.  */
+        /*
+         * A MIPS configured with compatibility or VInt (Vectored Interrupts)
+         * treats the pending lines as individual interrupt lines, the status
+         * lines are individual masks.
+         */
         r = (pending & status) != 0;
     }
     return r;
@@ -268,12 +277,14 @@ static inline int mips_vpe_active(CPUMIPSState *env)
         active = 0;
     }
 
-    /* Now verify that there are active thread contexts in the VPE.
-
-       This assumes the CPU model will internally reschedule threads
-       if the active one goes to sleep. If there are no threads available
-       the active one will be in a sleeping state, and we can turn off
-       the entire VPE.  */
+    /*
+     * Now verify that there are active thread contexts in the VPE.
+     *
+     * This assumes the CPU model will internally reschedule threads
+     * if the active one goes to sleep. If there are no threads available
+     * the active one will be in a sleeping state, and we can turn off
+     * the entire VPE.
+     */
     if (!(env->active_tc.CP0_TCStatus & (1 << CP0TCSt_A))) {
         /* TC is not activated.  */
         active = 0;
@@ -396,10 +407,12 @@ static inline void compute_hflags(CPUMIPSState *env)
             env->hflags |= MIPS_HFLAG_COP1X;
         }
     } else if (env->insn_flags & ISA_MIPS4) {
-        /* All supported MIPS IV CPUs use the XX (CU3) to enable
-           and disable the MIPS IV extensions to the MIPS III ISA.
-           Some other MIPS IV CPUs ignore the bit, so the check here
-           would be too restrictive for them.  */
+        /*
+         * All supported MIPS IV CPUs use the XX (CU3) to enable
+         * and disable the MIPS IV extensions to the MIPS III ISA.
+         * Some other MIPS IV CPUs ignore the bit, so the check here
+         * would be too restrictive for them.
+         */
         if (env->CP0_Status & (1U << CP0St_CU3)) {
             env->hflags |= MIPS_HFLAG_COP1X;
         }
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 09/37] target/mips: Style improvements in machine.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (7 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 08/37] target/mips: Style improvements in internal.h Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c Aleksandar Markovic
                   ` (27 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/mips/machine.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/mips/machine.c b/target/mips/machine.c
index e23b767..06887d8 100644
--- a/target/mips/machine.c
+++ b/target/mips/machine.c
@@ -25,7 +25,7 @@ static int get_fpr(QEMUFile *f, void *pv, size_t size,
     int i;
     fpr_t *v = pv;
     /* Restore entire MSA vector register */
-    for (i = 0; i < MSA_WRLEN/64; i++) {
+    for (i = 0; i < MSA_WRLEN / 64; i++) {
         qemu_get_sbe64s(f, &v->wr.d[i]);
     }
     return 0;
@@ -37,7 +37,7 @@ static int put_fpr(QEMUFile *f, void *pv, size_t size,
     int i;
     fpr_t *v = pv;
     /* Save entire MSA vector register */
-    for (i = 0; i < MSA_WRLEN/64; i++) {
+    for (i = 0; i < MSA_WRLEN / 64; i++) {
         qemu_put_sbe64s(f, &v->wr.d[i]);
     }
 
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (8 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 09/37] target/mips: Style improvements in machine.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 13:33   ` Thomas Huth
  2019-08-19 14:40   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 11/37] target/mips: Style improvements in translate.c Aleksandar Markovic
                   ` (26 subsequent siblings)
  36 siblings, 2 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/helper.c | 98 ++++++++++++++++++++++++++++++++--------------------
 1 file changed, 60 insertions(+), 38 deletions(-)

diff --git a/target/mips/helper.c b/target/mips/helper.c
index 6e583d3..d7a2c77 100644
--- a/target/mips/helper.c
+++ b/target/mips/helper.c
@@ -39,8 +39,8 @@ enum {
 #if !defined(CONFIG_USER_ONLY)
 
 /* no MMU emulation */
-int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
-                        target_ulong address, int rw, int access_type)
+int no_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
+                       target_ulong address, int rw, int access_type)
 {
     *physical = address;
     *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
@@ -48,26 +48,28 @@ int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
 }
 
 /* fixed mapping MMU emulation */
-int fixed_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
-                           target_ulong address, int rw, int access_type)
+int fixed_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
+                          target_ulong address, int rw, int access_type)
 {
     if (address <= (int32_t)0x7FFFFFFFUL) {
-        if (!(env->CP0_Status & (1 << CP0St_ERL)))
+        if (!(env->CP0_Status & (1 << CP0St_ERL))) {
             *physical = address + 0x40000000UL;
-        else
+        } else {
             *physical = address;
-    } else if (address <= (int32_t)0xBFFFFFFFUL)
+        }
+    } else if (address <= (int32_t)0xBFFFFFFFUL) {
         *physical = address & 0x1FFFFFFF;
-    else
+    } else {
         *physical = address;
+    }
 
     *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
     return TLBRET_MATCH;
 }
 
 /* MIPS32/MIPS64 R4000-style MMU emulation */
-int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
-                     target_ulong address, int rw, int access_type)
+int r4k_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
+                    target_ulong address, int rw, int access_type)
 {
     uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
     uint32_t MMID = env->CP0_MemoryMapID;
@@ -105,8 +107,9 @@ int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
             if (rw != MMU_DATA_STORE || (n ? tlb->D1 : tlb->D0)) {
                 *physical = tlb->PFN[n] | (address & (mask >> 1));
                 *prot = PAGE_READ;
-                if (n ? tlb->D1 : tlb->D0)
+                if (n ? tlb->D1 : tlb->D0) {
                     *prot |= PAGE_WRITE;
+                }
                 if (!(n ? tlb->XI1 : tlb->XI0)) {
                     *prot |= PAGE_EXEC;
                 }
@@ -136,9 +139,10 @@ static int is_seg_am_mapped(unsigned int am, bool eu, int mmu_idx)
     int32_t adetlb_mask;
 
     switch (mmu_idx) {
-    case 3 /* ERL */:
-        /* If EU is set, always unmapped */
+    case 3:
+        /* ERL */
         if (eu) {
+            /* If EU is set, always unmapped */
             return 0;
         }
         /* fall through */
@@ -210,7 +214,7 @@ static int get_segctl_physical_address(CPUMIPSState *env, hwaddr *physical,
                                     pa & ~(hwaddr)segmask);
 }
 
-static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
+static int get_physical_address(CPUMIPSState *env, hwaddr *physical,
                                 int *prot, target_ulong real_address,
                                 int rw, int access_type, int mmu_idx)
 {
@@ -265,7 +269,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
     } else if (address < 0x4000000000000000ULL) {
         /* xuseg */
         if (UX && address <= (0x3FFFFFFFFFFFFFFFULL & env->SEGMask)) {
-            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
+            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
+                                        access_type);
         } else {
             ret = TLBRET_BADADDR;
         }
@@ -273,7 +278,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
         /* xsseg */
         if ((supervisor_mode || kernel_mode) &&
             SX && address <= (0x7FFFFFFFFFFFFFFFULL & env->SEGMask)) {
-            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
+            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
+                                        access_type);
         } else {
             ret = TLBRET_BADADDR;
         }
@@ -313,7 +319,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
         /* xkseg */
         if (kernel_mode && KX &&
             address <= (0xFFFFFFFF7FFFFFFFULL & env->SEGMask)) {
-            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
+            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
+                                        access_type);
         } else {
             ret = TLBRET_BADADDR;
         }
@@ -669,7 +676,7 @@ static int walk_directory(CPUMIPSState *env, uint64_t *vaddr,
 }
 
 static bool page_table_walk_refill(CPUMIPSState *env, vaddr address, int rw,
-        int mmu_idx)
+                                   int mmu_idx)
 {
     int gdw = (env->CP0_PWSize >> CP0PS_GDW) & 0x3F;
     int udw = (env->CP0_PWSize >> CP0PS_UDW) & 0x3F;
@@ -951,7 +958,8 @@ bool mips_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
 }
 
 #ifndef CONFIG_USER_ONLY
-hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address, int rw)
+hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address,
+                                  int rw)
 {
     hwaddr physical;
     int prot;
@@ -1011,7 +1019,7 @@ static const char * const excp_names[EXCP_LAST + 1] = {
 };
 #endif
 
-target_ulong exception_resume_pc (CPUMIPSState *env)
+target_ulong exception_resume_pc(CPUMIPSState *env)
 {
     target_ulong bad_pc;
     target_ulong isa_mode;
@@ -1019,8 +1027,10 @@ target_ulong exception_resume_pc (CPUMIPSState *env)
     isa_mode = !!(env->hflags & MIPS_HFLAG_M16);
     bad_pc = env->active_tc.PC | isa_mode;
     if (env->hflags & MIPS_HFLAG_BMASK) {
-        /* If the exception was raised from a delay slot, come back to
-           the jump.  */
+        /*
+         * If the exception was raised from a delay slot, come back to
+         * the jump.
+         */
         bad_pc -= (env->hflags & MIPS_HFLAG_B16 ? 2 : 4);
     }
 
@@ -1102,10 +1112,12 @@ void mips_cpu_do_interrupt(CPUState *cs)
     switch (cs->exception_index) {
     case EXCP_DSS:
         env->CP0_Debug |= 1 << CP0DB_DSS;
-        /* Debug single step cannot be raised inside a delay slot and
-           resume will always occur on the next instruction
-           (but we assume the pc has always been updated during
-           code translation). */
+        /*
+         * Debug single step cannot be raised inside a delay slot and
+         * resume will always occur on the next instruction
+         * (but we assume the pc has always been updated during
+         * code translation).
+         */
         env->CP0_DEPC = env->active_tc.PC | !!(env->hflags & MIPS_HFLAG_M16);
         goto enter_debug_mode;
     case EXCP_DINT:
@@ -1117,7 +1129,8 @@ void mips_cpu_do_interrupt(CPUState *cs)
     case EXCP_DBp:
         env->CP0_Debug |= 1 << CP0DB_DBp;
         /* Setup DExcCode - SDBBP instruction */
-        env->CP0_Debug = (env->CP0_Debug & ~(0x1fULL << CP0DB_DEC)) | 9 << CP0DB_DEC;
+        env->CP0_Debug = (env->CP0_Debug & ~(0x1fULL << CP0DB_DEC)) |
+                         (9 << CP0DB_DEC);
         goto set_DEPC;
     case EXCP_DDBS:
         env->CP0_Debug |= 1 << CP0DB_DDBS;
@@ -1138,8 +1151,9 @@ void mips_cpu_do_interrupt(CPUState *cs)
         env->hflags |= MIPS_HFLAG_DM | MIPS_HFLAG_CP0;
         env->hflags &= ~(MIPS_HFLAG_KSU);
         /* EJTAG probe trap enable is not implemented... */
-        if (!(env->CP0_Status & (1 << CP0St_EXL)))
+        if (!(env->CP0_Status & (1 << CP0St_EXL))) {
             env->CP0_Cause &= ~(1U << CP0Ca_BD);
+        }
         env->active_tc.PC = env->exception_base + 0x480;
         set_hflags_for_handler(env);
         break;
@@ -1165,8 +1179,9 @@ void mips_cpu_do_interrupt(CPUState *cs)
         }
         env->hflags |= MIPS_HFLAG_CP0;
         env->hflags &= ~(MIPS_HFLAG_KSU);
-        if (!(env->CP0_Status & (1 << CP0St_EXL)))
+        if (!(env->CP0_Status & (1 << CP0St_EXL))) {
             env->CP0_Cause &= ~(1U << CP0Ca_BD);
+        }
         env->active_tc.PC = env->exception_base;
         set_hflags_for_handler(env);
         break;
@@ -1182,12 +1197,16 @@ void mips_cpu_do_interrupt(CPUState *cs)
                 uint32_t pending = (env->CP0_Cause & CP0Ca_IP_mask) >> CP0Ca_IP;
 
                 if (env->CP0_Config3 & (1 << CP0C3_VEIC)) {
-                    /* For VEIC mode, the external interrupt controller feeds
-                     * the vector through the CP0Cause IP lines.  */
+                    /*
+                     * For VEIC mode, the external interrupt controller feeds
+                     * the vector through the CP0Cause IP lines.
+                     */
                     vector = pending;
                 } else {
-                    /* Vectored Interrupts
-                     * Mask with Status.IM7-IM0 to get enabled interrupts. */
+                    /*
+                     * Vectored Interrupts
+                     * Mask with Status.IM7-IM0 to get enabled interrupts.
+                     */
                     pending &= (env->CP0_Status >> CP0St_IM) & 0xff;
                     /* Find the highest-priority interrupt. */
                     while (pending >>= 1) {
@@ -1360,7 +1379,8 @@ void mips_cpu_do_interrupt(CPUState *cs)
 
         env->active_tc.PC += offset;
         set_hflags_for_handler(env);
-        env->CP0_Cause = (env->CP0_Cause & ~(0x1f << CP0Ca_EC)) | (cause << CP0Ca_EC);
+        env->CP0_Cause = (env->CP0_Cause & ~(0x1f << CP0Ca_EC)) |
+                         (cause << CP0Ca_EC);
         break;
     default:
         abort();
@@ -1396,7 +1416,7 @@ bool mips_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 }
 
 #if !defined(CONFIG_USER_ONLY)
-void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra)
+void r4k_invalidate_tlb(CPUMIPSState *env, int idx, int use_extra)
 {
     CPUState *cs = env_cpu(env);
     r4k_tlb_t *tlb;
@@ -1421,9 +1441,11 @@ void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra)
     }
 
     if (use_extra && env->tlb->tlb_in_use < MIPS_TLB_MAX) {
-        /* For tlbwr, we can shadow the discarded entry into
-           a new (fake) TLB entry, as long as the guest can not
-           tell that it's there.  */
+        /*
+         * For tlbwr, we can shadow the discarded entry into
+         * a new (fake) TLB entry, as long as the guest can not
+         * tell that it's there.
+         */
         env->tlb->mmu.r4k.tlb[env->tlb->tlb_in_use] = *tlb;
         env->tlb->tlb_in_use++;
         return;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 11/37] target/mips: Style improvements in translate.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (9 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:41   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 12/37] target/mips: Style improvements in cps.c Aleksandar Markovic
                   ` (25 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 608 ++++++++++++++++++++++++------------------------
 1 file changed, 309 insertions(+), 299 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index 3f9f113..fe4a05c 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -43,7 +43,7 @@
 #define MIPS_DEBUG_DISAS 0
 
 /* MIPS major opcodes */
-#define MASK_OP_MAJOR(op)  (op & (0x3F << 26))
+#define MASK_OP_MAJOR(op)       (op & (0x3F << 26))
 
 enum {
     /* indirect opcode tables */
@@ -153,8 +153,8 @@ enum {
 };
 
 /* PC-relative address computation / loads  */
-#define MASK_OPC_PCREL_TOP2BITS(op)  (MASK_OP_MAJOR(op) | (op & (3 << 19)))
-#define MASK_OPC_PCREL_TOP5BITS(op)  (MASK_OP_MAJOR(op) | (op & (0x1f << 16)))
+#define MASK_OPC_PCREL_TOP2BITS(op) (MASK_OP_MAJOR(op) | (op & (3 << 19)))
+#define MASK_OPC_PCREL_TOP5BITS(op) (MASK_OP_MAJOR(op) | (op & (0x1f << 16)))
 enum {
     /* Instructions determined by bits 19 and 20 */
     OPC_ADDIUPC = OPC_PCREL | (0 << 19),
@@ -170,7 +170,7 @@ enum {
 };
 
 /* MIPS special opcodes */
-#define MASK_SPECIAL(op)   MASK_OP_MAJOR(op) | (op & 0x3F)
+#define MASK_SPECIAL(op)            (MASK_OP_MAJOR(op) | (op & 0x3F))
 
 enum {
     /* Shifts */
@@ -263,7 +263,7 @@ enum {
  * R6 Multiply and Divide instructions have the same opcode
  * and function field as legacy OPC_MULT[U]/OPC_DIV[U]
  */
-#define MASK_R6_MULDIV(op)   (MASK_SPECIAL(op) | (op & (0x7ff)))
+#define MASK_R6_MULDIV(op)          (MASK_SPECIAL(op) | (op & (0x7ff)))
 
 enum {
     R6_OPC_MUL   = OPC_MULT  | (2 << 6),
@@ -295,7 +295,7 @@ enum {
 };
 
 /* Multiplication variants of the vr54xx. */
-#define MASK_MUL_VR54XX(op)   MASK_SPECIAL(op) | (op & (0x1F << 6))
+#define MASK_MUL_VR54XX(op)         (MASK_SPECIAL(op) | (op & (0x1F << 6)))
 
 enum {
     OPC_VR54XX_MULS    = (0x03 << 6) | OPC_MULT,
@@ -315,7 +315,7 @@ enum {
 };
 
 /* REGIMM (rt field) opcodes */
-#define MASK_REGIMM(op)    MASK_OP_MAJOR(op) | (op & (0x1F << 16))
+#define MASK_REGIMM(op)             (MASK_OP_MAJOR(op) | (op & (0x1F << 16)))
 
 enum {
     OPC_BLTZ     = (0x00 << 16) | OPC_REGIMM,
@@ -340,7 +340,7 @@ enum {
 };
 
 /* Special2 opcodes */
-#define MASK_SPECIAL2(op)  MASK_OP_MAJOR(op) | (op & 0x3F)
+#define MASK_SPECIAL2(op)           (MASK_OP_MAJOR(op) | (op & 0x3F))
 
 enum {
     /* Multiply & xxx operations */
@@ -372,7 +372,7 @@ enum {
 };
 
 /* Special3 opcodes */
-#define MASK_SPECIAL3(op)  MASK_OP_MAJOR(op) | (op & 0x3F)
+#define MASK_SPECIAL3(op)           (MASK_OP_MAJOR(op) | (op & 0x3F))
 
 enum {
     OPC_EXT      = 0x00 | OPC_SPECIAL3,
@@ -462,7 +462,7 @@ enum {
 };
 
 /* BSHFL opcodes */
-#define MASK_BSHFL(op)     MASK_SPECIAL3(op) | (op & (0x1F << 6))
+#define MASK_BSHFL(op)              (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 
 enum {
     OPC_WSBH      = (0x02 << 6) | OPC_BSHFL,
@@ -476,7 +476,7 @@ enum {
 };
 
 /* DBSHFL opcodes */
-#define MASK_DBSHFL(op)    MASK_SPECIAL3(op) | (op & (0x1F << 6))
+#define MASK_DBSHFL(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 
 enum {
     OPC_DSBH       = (0x02 << 6) | OPC_DBSHFL,
@@ -498,7 +498,7 @@ enum {
     OPC_BPOSGE64 = (0x1D << 16) | OPC_REGIMM,
 };
 
-#define MASK_LX(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_LX(op)                 (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 /* MIPS DSP Load */
 enum {
     OPC_LBUX = (0x06 << 6) | OPC_LX_DSP,
@@ -507,7 +507,7 @@ enum {
     OPC_LDX = (0x08 << 6) | OPC_LX_DSP,
 };
 
-#define MASK_ADDU_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_ADDU_QB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Arithmetic Sub-class */
     OPC_ADDQ_PH        = (0x0A << 6) | OPC_ADDU_QB_DSP,
@@ -538,7 +538,7 @@ enum {
 };
 
 #define OPC_ADDUH_QB_DSP OPC_MULT_G_2E
-#define MASK_ADDUH_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_ADDUH_QB(op)           (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Arithmetic Sub-class */
     OPC_ADDUH_QB   = (0x00 << 6) | OPC_ADDUH_QB_DSP,
@@ -560,7 +560,7 @@ enum {
     OPC_MULQ_RS_W  = (0x17 << 6) | OPC_ADDUH_QB_DSP,
 };
 
-#define MASK_ABSQ_S_PH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_ABSQ_S_PH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Arithmetic Sub-class */
     OPC_ABSQ_S_QB       = (0x01 << 6) | OPC_ABSQ_S_PH_DSP,
@@ -584,7 +584,7 @@ enum {
     OPC_REPLV_PH        = (0x0B << 6) | OPC_ABSQ_S_PH_DSP,
 };
 
-#define MASK_CMPU_EQ_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_CMPU_EQ_QB(op)         (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Arithmetic Sub-class */
     OPC_PRECR_QB_PH      = (0x0D << 6) | OPC_CMPU_EQ_QB_DSP,
@@ -612,7 +612,7 @@ enum {
     OPC_PACKRL_PH        = (0x0E << 6) | OPC_CMPU_EQ_QB_DSP,
 };
 
-#define MASK_SHLL_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_SHLL_QB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP GPR-Based Shift Sub-class */
     OPC_SHLL_QB    = (0x00 << 6) | OPC_SHLL_QB_DSP,
@@ -639,7 +639,7 @@ enum {
     OPC_SHRAV_R_W  = (0x17 << 6) | OPC_SHLL_QB_DSP,
 };
 
-#define MASK_DPA_W_PH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_DPA_W_PH(op)           (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Multiply Sub-class insns */
     OPC_DPAU_H_QBL    = (0x03 << 6) | OPC_DPA_W_PH_DSP,
@@ -666,13 +666,13 @@ enum {
     OPC_MULSA_W_PH    = (0x02 << 6) | OPC_DPA_W_PH_DSP,
 };
 
-#define MASK_INSV(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_INSV(op)               (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* DSP Bit/Manipulation Sub-class */
     OPC_INSV = (0x00 << 6) | OPC_INSV_DSP,
 };
 
-#define MASK_APPEND(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_APPEND(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Append Sub-class */
     OPC_APPEND  = (0x00 << 6) | OPC_APPEND_DSP,
@@ -680,7 +680,7 @@ enum {
     OPC_BALIGN  = (0x10 << 6) | OPC_APPEND_DSP,
 };
 
-#define MASK_EXTR_W(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_EXTR_W(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Accumulator and DSPControl Access Sub-class */
     OPC_EXTR_W     = (0x00 << 6) | OPC_EXTR_W_DSP,
@@ -702,7 +702,7 @@ enum {
     OPC_RDDSP      = (0x12 << 6) | OPC_EXTR_W_DSP,
 };
 
-#define MASK_ABSQ_S_QH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_ABSQ_S_QH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Arithmetic Sub-class */
     OPC_PRECEQ_L_PWL    = (0x14 << 6) | OPC_ABSQ_S_QH_DSP,
@@ -731,7 +731,7 @@ enum {
     OPC_REPLV_QH        = (0x0B << 6) | OPC_ABSQ_S_QH_DSP,
 };
 
-#define MASK_ADDU_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_ADDU_OB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Multiply Sub-class insns */
     OPC_MULEQ_S_PW_QHL = (0x1C << 6) | OPC_ADDU_OB_DSP,
@@ -763,7 +763,7 @@ enum {
     OPC_ADDUH_R_OB     = (0x1A << 6) | OPC_ADDU_OB_DSP,
 };
 
-#define MASK_CMPU_EQ_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_CMPU_EQ_OB(op)         (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* DSP Compare-Pick Sub-class */
     OPC_CMP_EQ_PW         = (0x10 << 6) | OPC_CMPU_EQ_OB_DSP,
@@ -796,7 +796,7 @@ enum {
     OPC_PRECRQU_S_OB_QH   = (0x0F << 6) | OPC_CMPU_EQ_OB_DSP,
 };
 
-#define MASK_DAPPEND(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_DAPPEND(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* DSP Append Sub-class */
     OPC_DAPPEND  = (0x00 << 6) | OPC_DAPPEND_DSP,
@@ -805,7 +805,7 @@ enum {
     OPC_DBALIGN  = (0x10 << 6) | OPC_DAPPEND_DSP,
 };
 
-#define MASK_DEXTR_W(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_DEXTR_W(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Accumulator and DSPControl Access Sub-class */
     OPC_DMTHLIP     = (0x1F << 6) | OPC_DEXTR_W_DSP,
@@ -831,13 +831,13 @@ enum {
     OPC_DSHILOV     = (0x1B << 6) | OPC_DEXTR_W_DSP,
 };
 
-#define MASK_DINSV(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_DINSV(op)              (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* DSP Bit/Manipulation Sub-class */
     OPC_DINSV = (0x00 << 6) | OPC_DINSV_DSP,
 };
 
-#define MASK_DPAQ_W_QH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_DPAQ_W_QH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP Multiply Sub-class insns */
     OPC_DMADD         = (0x19 << 6) | OPC_DPAQ_W_QH_DSP,
@@ -868,7 +868,7 @@ enum {
     OPC_MULSAQ_S_W_QH = (0x06 << 6) | OPC_DPAQ_W_QH_DSP,
 };
 
-#define MASK_SHLL_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
+#define MASK_SHLL_OB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
 enum {
     /* MIPS DSP GPR-Based Shift Sub-class */
     OPC_SHLL_PW    = (0x10 << 6) | OPC_SHLL_OB_DSP,
@@ -900,7 +900,7 @@ enum {
 };
 
 /* Coprocessor 0 (rs field) */
-#define MASK_CP0(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
+#define MASK_CP0(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
 
 enum {
     OPC_MFC0     = (0x00 << 21) | OPC_CP0,
@@ -933,7 +933,7 @@ enum {
 };
 
 /* MFMC0 opcodes */
-#define MASK_MFMC0(op)     MASK_CP0(op) | (op & 0xFFFF)
+#define MASK_MFMC0(op)              (MASK_CP0(op) | (op & 0xFFFF))
 
 enum {
     OPC_DMT      = 0x01 | (0 << 5) | (0x0F << 6) | (0x01 << 11) | OPC_MFMC0,
@@ -947,7 +947,7 @@ enum {
 };
 
 /* Coprocessor 0 (with rs == C0) */
-#define MASK_C0(op)        MASK_CP0(op) | (op & 0x3F)
+#define MASK_C0(op)                 (MASK_CP0(op) | (op & 0x3F))
 
 enum {
     OPC_TLBR     = 0x01 | OPC_C0,
@@ -963,7 +963,7 @@ enum {
 };
 
 /* Coprocessor 1 (rs field) */
-#define MASK_CP1(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
+#define MASK_CP1(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
 
 /* Values for the fmt field in FP instructions */
 enum {
@@ -1011,8 +1011,8 @@ enum {
     OPC_BNZ_D    = (0x1F << 21) | OPC_CP1,
 };
 
-#define MASK_CP1_FUNC(op)       MASK_CP1(op) | (op & 0x3F)
-#define MASK_BC1(op)            MASK_CP1(op) | (op & (0x3 << 16))
+#define MASK_CP1_FUNC(op)           (MASK_CP1(op) | (op & 0x3F))
+#define MASK_BC1(op)                (MASK_CP1(op) | (op & (0x3 << 16)))
 
 enum {
     OPC_BC1F     = (0x00 << 16) | OPC_BC1,
@@ -1031,7 +1031,7 @@ enum {
     OPC_BC1TANY4     = (0x01 << 16) | OPC_BC1ANY4,
 };
 
-#define MASK_CP2(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
+#define MASK_CP2(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
 
 enum {
     OPC_MFC2    = (0x00 << 21) | OPC_CP2,
@@ -1047,35 +1047,35 @@ enum {
     OPC_BC2NEZ  = (0x0D << 21) | OPC_CP2,
 };
 
-#define MASK_LMI(op)  (MASK_OP_MAJOR(op) | (op & (0x1F << 21)) | (op & 0x1F))
+#define MASK_LMI(op)    (MASK_OP_MAJOR(op) | (op & (0x1F << 21)) | (op & 0x1F))
 
 enum {
-    OPC_PADDSH  = (24 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDUSH = (25 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDH   = (26 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDW   = (27 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDSB  = (28 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDUSB = (29 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDB   = (30 << 21) | (0x00) | OPC_CP2,
-    OPC_PADDD   = (31 << 21) | (0x00) | OPC_CP2,
-
-    OPC_PSUBSH  = (24 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBUSH = (25 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBH   = (26 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBW   = (27 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBSB  = (28 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBUSB = (29 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBB   = (30 << 21) | (0x01) | OPC_CP2,
-    OPC_PSUBD   = (31 << 21) | (0x01) | OPC_CP2,
-
-    OPC_PSHUFH   = (24 << 21) | (0x02) | OPC_CP2,
-    OPC_PACKSSWH = (25 << 21) | (0x02) | OPC_CP2,
-    OPC_PACKSSHB = (26 << 21) | (0x02) | OPC_CP2,
-    OPC_PACKUSHB = (27 << 21) | (0x02) | OPC_CP2,
-    OPC_XOR_CP2  = (28 << 21) | (0x02) | OPC_CP2,
-    OPC_NOR_CP2  = (29 << 21) | (0x02) | OPC_CP2,
-    OPC_AND_CP2  = (30 << 21) | (0x02) | OPC_CP2,
-    OPC_PANDN    = (31 << 21) | (0x02) | OPC_CP2,
+    OPC_PADDSH      = (24 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDUSH     = (25 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDH       = (26 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDW       = (27 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDSB      = (28 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDUSB     = (29 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDB       = (30 << 21) | (0x00) | OPC_CP2,
+    OPC_PADDD       = (31 << 21) | (0x00) | OPC_CP2,
+
+    OPC_PSUBSH      = (24 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBUSH     = (25 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBH       = (26 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBW       = (27 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBSB      = (28 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBUSB     = (29 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBB       = (30 << 21) | (0x01) | OPC_CP2,
+    OPC_PSUBD       = (31 << 21) | (0x01) | OPC_CP2,
+
+    OPC_PSHUFH      = (24 << 21) | (0x02) | OPC_CP2,
+    OPC_PACKSSWH    = (25 << 21) | (0x02) | OPC_CP2,
+    OPC_PACKSSHB    = (26 << 21) | (0x02) | OPC_CP2,
+    OPC_PACKUSHB    = (27 << 21) | (0x02) | OPC_CP2,
+    OPC_XOR_CP2     = (28 << 21) | (0x02) | OPC_CP2,
+    OPC_NOR_CP2     = (29 << 21) | (0x02) | OPC_CP2,
+    OPC_AND_CP2     = (30 << 21) | (0x02) | OPC_CP2,
+    OPC_PANDN       = (31 << 21) | (0x02) | OPC_CP2,
 
     OPC_PUNPCKLHW = (24 << 21) | (0x03) | OPC_CP2,
     OPC_PUNPCKHHW = (25 << 21) | (0x03) | OPC_CP2,
@@ -1144,33 +1144,33 @@ enum {
 };
 
 
-#define MASK_CP3(op)       MASK_OP_MAJOR(op) | (op & 0x3F)
+#define MASK_CP3(op)                (MASK_OP_MAJOR(op) | (op & 0x3F))
 
 enum {
-    OPC_LWXC1   = 0x00 | OPC_CP3,
-    OPC_LDXC1   = 0x01 | OPC_CP3,
-    OPC_LUXC1   = 0x05 | OPC_CP3,
-    OPC_SWXC1   = 0x08 | OPC_CP3,
-    OPC_SDXC1   = 0x09 | OPC_CP3,
-    OPC_SUXC1   = 0x0D | OPC_CP3,
-    OPC_PREFX   = 0x0F | OPC_CP3,
-    OPC_ALNV_PS = 0x1E | OPC_CP3,
-    OPC_MADD_S  = 0x20 | OPC_CP3,
-    OPC_MADD_D  = 0x21 | OPC_CP3,
-    OPC_MADD_PS = 0x26 | OPC_CP3,
-    OPC_MSUB_S  = 0x28 | OPC_CP3,
-    OPC_MSUB_D  = 0x29 | OPC_CP3,
-    OPC_MSUB_PS = 0x2E | OPC_CP3,
-    OPC_NMADD_S = 0x30 | OPC_CP3,
-    OPC_NMADD_D = 0x31 | OPC_CP3,
-    OPC_NMADD_PS= 0x36 | OPC_CP3,
-    OPC_NMSUB_S = 0x38 | OPC_CP3,
-    OPC_NMSUB_D = 0x39 | OPC_CP3,
-    OPC_NMSUB_PS= 0x3E | OPC_CP3,
+    OPC_LWXC1       = 0x00 | OPC_CP3,
+    OPC_LDXC1       = 0x01 | OPC_CP3,
+    OPC_LUXC1       = 0x05 | OPC_CP3,
+    OPC_SWXC1       = 0x08 | OPC_CP3,
+    OPC_SDXC1       = 0x09 | OPC_CP3,
+    OPC_SUXC1       = 0x0D | OPC_CP3,
+    OPC_PREFX       = 0x0F | OPC_CP3,
+    OPC_ALNV_PS     = 0x1E | OPC_CP3,
+    OPC_MADD_S      = 0x20 | OPC_CP3,
+    OPC_MADD_D      = 0x21 | OPC_CP3,
+    OPC_MADD_PS     = 0x26 | OPC_CP3,
+    OPC_MSUB_S      = 0x28 | OPC_CP3,
+    OPC_MSUB_D      = 0x29 | OPC_CP3,
+    OPC_MSUB_PS     = 0x2E | OPC_CP3,
+    OPC_NMADD_S     = 0x30 | OPC_CP3,
+    OPC_NMADD_D     = 0x31 | OPC_CP3,
+    OPC_NMADD_PS    = 0x36 | OPC_CP3,
+    OPC_NMSUB_S     = 0x38 | OPC_CP3,
+    OPC_NMSUB_D     = 0x39 | OPC_CP3,
+    OPC_NMSUB_PS    = 0x3E | OPC_CP3,
 };
 
 /* MSA Opcodes */
-#define MASK_MSA_MINOR(op)    (MASK_OP_MAJOR(op) | (op & 0x3F))
+#define MASK_MSA_MINOR(op)          (MASK_OP_MAJOR(op) | (op & 0x3F))
 enum {
     OPC_MSA_I8_00   = 0x00 | OPC_MSA,
     OPC_MSA_I8_01   = 0x01 | OPC_MSA,
@@ -1195,14 +1195,14 @@ enum {
     OPC_MSA_VEC     = 0x1E | OPC_MSA,
 
     /* MI10 instruction */
-    OPC_LD_B    = (0x20) | OPC_MSA,
-    OPC_LD_H    = (0x21) | OPC_MSA,
-    OPC_LD_W    = (0x22) | OPC_MSA,
-    OPC_LD_D    = (0x23) | OPC_MSA,
-    OPC_ST_B    = (0x24) | OPC_MSA,
-    OPC_ST_H    = (0x25) | OPC_MSA,
-    OPC_ST_W    = (0x26) | OPC_MSA,
-    OPC_ST_D    = (0x27) | OPC_MSA,
+    OPC_LD_B        = (0x20) | OPC_MSA,
+    OPC_LD_H        = (0x21) | OPC_MSA,
+    OPC_LD_W        = (0x22) | OPC_MSA,
+    OPC_LD_D        = (0x23) | OPC_MSA,
+    OPC_ST_B        = (0x24) | OPC_MSA,
+    OPC_ST_H        = (0x25) | OPC_MSA,
+    OPC_ST_W        = (0x26) | OPC_MSA,
+    OPC_ST_D        = (0x27) | OPC_MSA,
 };
 
 enum {
@@ -1221,34 +1221,34 @@ enum {
     OPC_LDI_df      = (0x6 << 23) | OPC_MSA_I5_07,
 
     /* I8 instruction */
-    OPC_ANDI_B  = (0x0 << 24) | OPC_MSA_I8_00,
-    OPC_BMNZI_B = (0x0 << 24) | OPC_MSA_I8_01,
-    OPC_SHF_B   = (0x0 << 24) | OPC_MSA_I8_02,
-    OPC_ORI_B   = (0x1 << 24) | OPC_MSA_I8_00,
-    OPC_BMZI_B  = (0x1 << 24) | OPC_MSA_I8_01,
-    OPC_SHF_H   = (0x1 << 24) | OPC_MSA_I8_02,
-    OPC_NORI_B  = (0x2 << 24) | OPC_MSA_I8_00,
-    OPC_BSELI_B = (0x2 << 24) | OPC_MSA_I8_01,
-    OPC_SHF_W   = (0x2 << 24) | OPC_MSA_I8_02,
-    OPC_XORI_B  = (0x3 << 24) | OPC_MSA_I8_00,
+    OPC_ANDI_B      = (0x0 << 24) | OPC_MSA_I8_00,
+    OPC_BMNZI_B     = (0x0 << 24) | OPC_MSA_I8_01,
+    OPC_SHF_B       = (0x0 << 24) | OPC_MSA_I8_02,
+    OPC_ORI_B       = (0x1 << 24) | OPC_MSA_I8_00,
+    OPC_BMZI_B      = (0x1 << 24) | OPC_MSA_I8_01,
+    OPC_SHF_H       = (0x1 << 24) | OPC_MSA_I8_02,
+    OPC_NORI_B      = (0x2 << 24) | OPC_MSA_I8_00,
+    OPC_BSELI_B     = (0x2 << 24) | OPC_MSA_I8_01,
+    OPC_SHF_W       = (0x2 << 24) | OPC_MSA_I8_02,
+    OPC_XORI_B      = (0x3 << 24) | OPC_MSA_I8_00,
 
     /* VEC/2R/2RF instruction */
-    OPC_AND_V   = (0x00 << 21) | OPC_MSA_VEC,
-    OPC_OR_V    = (0x01 << 21) | OPC_MSA_VEC,
-    OPC_NOR_V   = (0x02 << 21) | OPC_MSA_VEC,
-    OPC_XOR_V   = (0x03 << 21) | OPC_MSA_VEC,
-    OPC_BMNZ_V  = (0x04 << 21) | OPC_MSA_VEC,
-    OPC_BMZ_V   = (0x05 << 21) | OPC_MSA_VEC,
-    OPC_BSEL_V  = (0x06 << 21) | OPC_MSA_VEC,
+    OPC_AND_V       = (0x00 << 21) | OPC_MSA_VEC,
+    OPC_OR_V        = (0x01 << 21) | OPC_MSA_VEC,
+    OPC_NOR_V       = (0x02 << 21) | OPC_MSA_VEC,
+    OPC_XOR_V       = (0x03 << 21) | OPC_MSA_VEC,
+    OPC_BMNZ_V      = (0x04 << 21) | OPC_MSA_VEC,
+    OPC_BMZ_V       = (0x05 << 21) | OPC_MSA_VEC,
+    OPC_BSEL_V      = (0x06 << 21) | OPC_MSA_VEC,
 
     OPC_MSA_2R      = (0x18 << 21) | OPC_MSA_VEC,
     OPC_MSA_2RF     = (0x19 << 21) | OPC_MSA_VEC,
 
     /* 2R instruction df(bits 17..16) = _b, _h, _w, _d */
-    OPC_FILL_df = (0x00 << 18) | OPC_MSA_2R,
-    OPC_PCNT_df = (0x01 << 18) | OPC_MSA_2R,
-    OPC_NLOC_df = (0x02 << 18) | OPC_MSA_2R,
-    OPC_NLZC_df = (0x03 << 18) | OPC_MSA_2R,
+    OPC_FILL_df     = (0x00 << 18) | OPC_MSA_2R,
+    OPC_PCNT_df     = (0x01 << 18) | OPC_MSA_2R,
+    OPC_NLOC_df     = (0x02 << 18) | OPC_MSA_2R,
+    OPC_NLZC_df     = (0x03 << 18) | OPC_MSA_2R,
 
     /* 2RF instruction df(bit 16) = _w, _d */
     OPC_FCLASS_df   = (0x00 << 17) | OPC_MSA_2RF,
@@ -2478,43 +2478,43 @@ static TCGv mxu_CR;
     TCGv_i32 helper_tmp = tcg_const_i32(arg);                     \
     gen_helper_##name(cpu_env, helper_tmp);                       \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_0e1i(name, arg1, arg2) do {                    \
     TCGv_i32 helper_tmp = tcg_const_i32(arg2);                    \
     gen_helper_##name(cpu_env, arg1, helper_tmp);                 \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_1e0i(name, ret, arg1) do {                     \
     TCGv_i32 helper_tmp = tcg_const_i32(arg1);                    \
     gen_helper_##name(ret, cpu_env, helper_tmp);                  \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_1e1i(name, ret, arg1, arg2) do {               \
     TCGv_i32 helper_tmp = tcg_const_i32(arg2);                    \
     gen_helper_##name(ret, cpu_env, arg1, helper_tmp);            \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_0e2i(name, arg1, arg2, arg3) do {              \
     TCGv_i32 helper_tmp = tcg_const_i32(arg3);                    \
     gen_helper_##name(cpu_env, arg1, arg2, helper_tmp);           \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_1e2i(name, ret, arg1, arg2, arg3) do {         \
     TCGv_i32 helper_tmp = tcg_const_i32(arg3);                    \
     gen_helper_##name(ret, cpu_env, arg1, arg2, helper_tmp);      \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 #define gen_helper_0e3i(name, arg1, arg2, arg3, arg4) do {        \
     TCGv_i32 helper_tmp = tcg_const_i32(arg4);                    \
     gen_helper_##name(cpu_env, arg1, arg2, arg3, helper_tmp);     \
     tcg_temp_free_i32(helper_tmp);                                \
-    } while(0)
+    } while (0)
 
 typedef struct DisasContext {
     DisasContextBase base;
@@ -2666,7 +2666,7 @@ static inline void gen_load_srsgpr(int from, int to)
     tcg_temp_free(t0);
 }
 
-static inline void gen_store_srsgpr (int from, int to)
+static inline void gen_store_srsgpr(int from, int to)
 {
     if (to != 0) {
         TCGv t0 = tcg_temp_new();
@@ -3364,28 +3364,28 @@ FOP_CONDNS(s, FMT_S, 32, gen_store_fpr32(ctx, fp0, fd))
 
 /* load/store instructions. */
 #ifdef CONFIG_USER_ONLY
-#define OP_LD_ATOMIC(insn,fname)                                           \
+#define OP_LD_ATOMIC(insn, fname)                                          \
 static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx,          \
                                 DisasContext *ctx)                         \
 {                                                                          \
     TCGv t0 = tcg_temp_new();                                              \
     tcg_gen_mov_tl(t0, arg1);                                              \
     tcg_gen_qemu_##fname(ret, arg1, ctx->mem_idx);                         \
-    tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr));                \
-    tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval));                \
+    tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr));            \
+    tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval));            \
     tcg_temp_free(t0);                                                     \
 }
 #else
-#define OP_LD_ATOMIC(insn,fname)                                           \
+#define OP_LD_ATOMIC(insn, fname)                                          \
 static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx,          \
                                 DisasContext *ctx)                         \
 {                                                                          \
     gen_helper_1e1i(insn, ret, arg1, mem_idx);                             \
 }
 #endif
-OP_LD_ATOMIC(ll,ld32s);
+OP_LD_ATOMIC(ll, ld32s);
 #if defined(TARGET_MIPS64)
-OP_LD_ATOMIC(lld,ld64);
+OP_LD_ATOMIC(lld, ld64);
 #endif
 #undef OP_LD_ATOMIC
 
@@ -9794,7 +9794,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         case 7:
             CP0_CHECK(ctx->kscrexist & (1 << sel));
             tcg_gen_st_tl(arg, cpu_env,
-                          offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
+                          offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
             register_name = "KScratch";
             break;
         default:
@@ -9960,84 +9960,86 @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
         default:
             gen_mfc0(ctx, t0, rt, sel);
         }
-    } else switch (sel) {
-    /* GPR registers. */
-    case 0:
-        gen_helper_1e0i(mftgpr, t0, rt);
-        break;
-    /* Auxiliary CPU registers */
-    case 1:
-        switch (rt) {
+    } else {
+        switch (sel) {
+        /* GPR registers. */
         case 0:
-            gen_helper_1e0i(mftlo, t0, 0);
+            gen_helper_1e0i(mftgpr, t0, rt);
             break;
+        /* Auxiliary CPU registers */
         case 1:
-            gen_helper_1e0i(mfthi, t0, 0);
+            switch (rt) {
+            case 0:
+                gen_helper_1e0i(mftlo, t0, 0);
+                break;
+            case 1:
+                gen_helper_1e0i(mfthi, t0, 0);
+                break;
+            case 2:
+                gen_helper_1e0i(mftacx, t0, 0);
+                break;
+            case 4:
+                gen_helper_1e0i(mftlo, t0, 1);
+                break;
+            case 5:
+                gen_helper_1e0i(mfthi, t0, 1);
+                break;
+            case 6:
+                gen_helper_1e0i(mftacx, t0, 1);
+                break;
+            case 8:
+                gen_helper_1e0i(mftlo, t0, 2);
+                break;
+            case 9:
+                gen_helper_1e0i(mfthi, t0, 2);
+                break;
+            case 10:
+                gen_helper_1e0i(mftacx, t0, 2);
+                break;
+            case 12:
+                gen_helper_1e0i(mftlo, t0, 3);
+                break;
+            case 13:
+                gen_helper_1e0i(mfthi, t0, 3);
+                break;
+            case 14:
+                gen_helper_1e0i(mftacx, t0, 3);
+                break;
+            case 16:
+                gen_helper_mftdsp(t0, cpu_env);
+                break;
+            default:
+                goto die;
+            }
             break;
+        /* Floating point (COP1). */
         case 2:
-            gen_helper_1e0i(mftacx, t0, 0);
+            /* XXX: For now we support only a single FPU context. */
+            if (h == 0) {
+                TCGv_i32 fp0 = tcg_temp_new_i32();
+
+                gen_load_fpr32(ctx, fp0, rt);
+                tcg_gen_ext_i32_tl(t0, fp0);
+                tcg_temp_free_i32(fp0);
+            } else {
+                TCGv_i32 fp0 = tcg_temp_new_i32();
+
+                gen_load_fpr32h(ctx, fp0, rt);
+                tcg_gen_ext_i32_tl(t0, fp0);
+                tcg_temp_free_i32(fp0);
+            }
             break;
-        case 4:
-            gen_helper_1e0i(mftlo, t0, 1);
+        case 3:
+            /* XXX: For now we support only a single FPU context. */
+            gen_helper_1e0i(cfc1, t0, rt);
             break;
+        /* COP2: Not implemented. */
+        case 4:
         case 5:
-            gen_helper_1e0i(mfthi, t0, 1);
-            break;
-        case 6:
-            gen_helper_1e0i(mftacx, t0, 1);
-            break;
-        case 8:
-            gen_helper_1e0i(mftlo, t0, 2);
-            break;
-        case 9:
-            gen_helper_1e0i(mfthi, t0, 2);
-            break;
-        case 10:
-            gen_helper_1e0i(mftacx, t0, 2);
-            break;
-        case 12:
-            gen_helper_1e0i(mftlo, t0, 3);
-            break;
-        case 13:
-            gen_helper_1e0i(mfthi, t0, 3);
-            break;
-        case 14:
-            gen_helper_1e0i(mftacx, t0, 3);
-            break;
-        case 16:
-            gen_helper_mftdsp(t0, cpu_env);
-            break;
+            /* fall through */
         default:
             goto die;
         }
-        break;
-    /* Floating point (COP1). */
-    case 2:
-        /* XXX: For now we support only a single FPU context. */
-        if (h == 0) {
-            TCGv_i32 fp0 = tcg_temp_new_i32();
-
-            gen_load_fpr32(ctx, fp0, rt);
-            tcg_gen_ext_i32_tl(t0, fp0);
-            tcg_temp_free_i32(fp0);
-        } else {
-            TCGv_i32 fp0 = tcg_temp_new_i32();
-
-            gen_load_fpr32h(ctx, fp0, rt);
-            tcg_gen_ext_i32_tl(t0, fp0);
-            tcg_temp_free_i32(fp0);
-        }
-        break;
-    case 3:
-        /* XXX: For now we support only a single FPU context. */
-        gen_helper_1e0i(cfc1, t0, rt);
-        break;
-    /* COP2: Not implemented. */
-    case 4:
-    case 5:
-        /* fall through */
-    default:
-        goto die;
     }
     trace_mips_translate_tr("mftr", rt, u, sel, h);
     gen_store_gpr(t0, rd);
@@ -10162,91 +10164,93 @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
         default:
             gen_mtc0(ctx, t0, rd, sel);
         }
-    } else switch (sel) {
-    /* GPR registers. */
-    case 0:
-        gen_helper_0e1i(mttgpr, t0, rd);
-        break;
-    /* Auxiliary CPU registers */
-    case 1:
-        switch (rd) {
+    } else {
+        switch (sel) {
+        /* GPR registers. */
         case 0:
-            gen_helper_0e1i(mttlo, t0, 0);
+            gen_helper_0e1i(mttgpr, t0, rd);
             break;
+        /* Auxiliary CPU registers */
         case 1:
-            gen_helper_0e1i(mtthi, t0, 0);
+            switch (rd) {
+            case 0:
+                gen_helper_0e1i(mttlo, t0, 0);
+                break;
+            case 1:
+                gen_helper_0e1i(mtthi, t0, 0);
+                break;
+            case 2:
+                gen_helper_0e1i(mttacx, t0, 0);
+                break;
+            case 4:
+                gen_helper_0e1i(mttlo, t0, 1);
+                break;
+            case 5:
+                gen_helper_0e1i(mtthi, t0, 1);
+                break;
+            case 6:
+                gen_helper_0e1i(mttacx, t0, 1);
+                break;
+            case 8:
+                gen_helper_0e1i(mttlo, t0, 2);
+                break;
+            case 9:
+                gen_helper_0e1i(mtthi, t0, 2);
+                break;
+            case 10:
+                gen_helper_0e1i(mttacx, t0, 2);
+                break;
+            case 12:
+                gen_helper_0e1i(mttlo, t0, 3);
+                break;
+            case 13:
+                gen_helper_0e1i(mtthi, t0, 3);
+                break;
+            case 14:
+                gen_helper_0e1i(mttacx, t0, 3);
+                break;
+            case 16:
+                gen_helper_mttdsp(cpu_env, t0);
+                break;
+            default:
+                goto die;
+            }
             break;
+        /* Floating point (COP1). */
         case 2:
-            gen_helper_0e1i(mttacx, t0, 0);
+            /* XXX: For now we support only a single FPU context. */
+            if (h == 0) {
+                TCGv_i32 fp0 = tcg_temp_new_i32();
+
+                tcg_gen_trunc_tl_i32(fp0, t0);
+                gen_store_fpr32(ctx, fp0, rd);
+                tcg_temp_free_i32(fp0);
+            } else {
+                TCGv_i32 fp0 = tcg_temp_new_i32();
+
+                tcg_gen_trunc_tl_i32(fp0, t0);
+                gen_store_fpr32h(ctx, fp0, rd);
+                tcg_temp_free_i32(fp0);
+            }
             break;
-        case 4:
-            gen_helper_0e1i(mttlo, t0, 1);
+        case 3:
+            /* XXX: For now we support only a single FPU context. */
+            {
+                TCGv_i32 fs_tmp = tcg_const_i32(rd);
+
+                gen_helper_0e2i(ctc1, t0, fs_tmp, rt);
+                tcg_temp_free_i32(fs_tmp);
+            }
+            /* Stop translation as we may have changed hflags */
+            ctx->base.is_jmp = DISAS_STOP;
             break;
+        /* COP2: Not implemented. */
+        case 4:
         case 5:
-            gen_helper_0e1i(mtthi, t0, 1);
-            break;
-        case 6:
-            gen_helper_0e1i(mttacx, t0, 1);
-            break;
-        case 8:
-            gen_helper_0e1i(mttlo, t0, 2);
-            break;
-        case 9:
-            gen_helper_0e1i(mtthi, t0, 2);
-            break;
-        case 10:
-            gen_helper_0e1i(mttacx, t0, 2);
-            break;
-        case 12:
-            gen_helper_0e1i(mttlo, t0, 3);
-            break;
-        case 13:
-            gen_helper_0e1i(mtthi, t0, 3);
-            break;
-        case 14:
-            gen_helper_0e1i(mttacx, t0, 3);
-            break;
-        case 16:
-            gen_helper_mttdsp(cpu_env, t0);
-            break;
+            /* fall through */
         default:
             goto die;
         }
-        break;
-    /* Floating point (COP1). */
-    case 2:
-        /* XXX: For now we support only a single FPU context. */
-        if (h == 0) {
-            TCGv_i32 fp0 = tcg_temp_new_i32();
-
-            tcg_gen_trunc_tl_i32(fp0, t0);
-            gen_store_fpr32(ctx, fp0, rd);
-            tcg_temp_free_i32(fp0);
-        } else {
-            TCGv_i32 fp0 = tcg_temp_new_i32();
-
-            tcg_gen_trunc_tl_i32(fp0, t0);
-            gen_store_fpr32h(ctx, fp0, rd);
-            tcg_temp_free_i32(fp0);
-        }
-        break;
-    case 3:
-        /* XXX: For now we support only a single FPU context. */
-        {
-            TCGv_i32 fs_tmp = tcg_const_i32(rd);
-
-            gen_helper_0e2i(ctc1, t0, fs_tmp, rt);
-            tcg_temp_free_i32(fs_tmp);
-        }
-        /* Stop translation as we may have changed hflags */
-        ctx->base.is_jmp = DISAS_STOP;
-        break;
-    /* COP2: Not implemented. */
-    case 4:
-    case 5:
-        /* fall through */
-    default:
-        goto die;
     }
     trace_mips_translate_tr("mttr", rd, u, sel, h);
     tcg_temp_free(t0);
@@ -10492,7 +10496,7 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
         {
             TCGv_i32 t1 = tcg_temp_new_i32();
             tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
             tcg_gen_nand_i32(t0, t0, t1);
             tcg_temp_free_i32(t1);
             tcg_gen_andi_i32(t0, t0, 1);
@@ -10503,7 +10507,7 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
         {
             TCGv_i32 t1 = tcg_temp_new_i32();
             tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
             tcg_gen_or_i32(t0, t0, t1);
             tcg_temp_free_i32(t1);
             tcg_gen_andi_i32(t0, t0, 1);
@@ -10514,11 +10518,11 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
         {
             TCGv_i32 t1 = tcg_temp_new_i32();
             tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
             tcg_gen_and_i32(t0, t0, t1);
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+2));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 2));
             tcg_gen_and_i32(t0, t0, t1);
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+3));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
             tcg_gen_nand_i32(t0, t0, t1);
             tcg_temp_free_i32(t1);
             tcg_gen_andi_i32(t0, t0, 1);
@@ -10529,11 +10533,11 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
         {
             TCGv_i32 t1 = tcg_temp_new_i32();
             tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
             tcg_gen_or_i32(t0, t0, t1);
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+2));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 2));
             tcg_gen_or_i32(t0, t0, t1);
-            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+3));
+            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
             tcg_gen_or_i32(t0, t0, t1);
             tcg_temp_free_i32(t1);
             tcg_gen_andi_i32(t0, t0, 1);
@@ -10997,7 +11001,7 @@ static inline void gen_movcf_ps(DisasContext *ctx, int fs, int fd,
     gen_store_fpr32(ctx, t0, fd);
     gen_set_label(l1);
 
-    tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc+1));
+    tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc + 1));
     tcg_gen_brcondi_i32(cond, t0, 0, l2);
     gen_load_fpr32h(ctx, t0, fs);
     gen_store_fpr32h(ctx, t0, fd);
@@ -11611,9 +11615,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
     case OPC_CMP_NGT_S:
         check_insn_opc_removed(ctx, ISA_MIPS32R6);
         if (ctx->opcode & (1 << 6)) {
-            gen_cmpabs_s(ctx, func-48, ft, fs, cc);
+            gen_cmpabs_s(ctx, func - 48, ft, fs, cc);
         } else {
-            gen_cmp_s(ctx, func-48, ft, fs, cc);
+            gen_cmp_s(ctx, func - 48, ft, fs, cc);
         }
         break;
     case OPC_ADD_D:
@@ -12093,9 +12097,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
     case OPC_CMP_NGT_D:
         check_insn_opc_removed(ctx, ISA_MIPS32R6);
         if (ctx->opcode & (1 << 6)) {
-            gen_cmpabs_d(ctx, func-48, ft, fs, cc);
+            gen_cmpabs_d(ctx, func - 48, ft, fs, cc);
         } else {
-            gen_cmp_d(ctx, func-48, ft, fs, cc);
+            gen_cmp_d(ctx, func - 48, ft, fs, cc);
         }
         break;
     case OPC_CVT_S_D:
@@ -12495,9 +12499,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
     case OPC_CMP_LE_PS:
     case OPC_CMP_NGT_PS:
         if (ctx->opcode & (1 << 6)) {
-            gen_cmpabs_ps(ctx, func-48, ft, fs, cc);
+            gen_cmpabs_ps(ctx, func - 48, ft, fs, cc);
         } else {
-            gen_cmp_ps(ctx, func-48, ft, fs, cc);
+            gen_cmp_ps(ctx, func - 48, ft, fs, cc);
         }
         break;
     default:
@@ -14310,7 +14314,7 @@ static int decode_mips16_opc(CPUMIPSState *env, DisasContext *ctx)
             case RR_RY_CNVT_SEH:
                 tcg_gen_ext16s_tl(cpu_gpr[rx], cpu_gpr[rx]);
                 break;
-#if defined (TARGET_MIPS64)
+#if defined(TARGET_MIPS64)
             case RR_RY_CNVT_ZEW:
                 check_insn(ctx, ISA_MIPS64);
                 check_mips_64(ctx);
@@ -15034,11 +15038,11 @@ static int mmreg2(int r)
 
 /* Signed immediate */
 #define SIMM(op, start, width)                                          \
-    ((int32_t)(((op >> start) & ((~0U) >> (32-width)))                 \
-               << (32-width))                                           \
-     >> (32-width))
+    ((int32_t)(((op >> start) & ((~0U) >> (32 - width)))                \
+               << (32 - width))                                         \
+     >> (32 - width))
 /* Zero-extended immediate */
-#define ZIMM(op, start, width) ((op >> start) & ((~0U) >> (32-width)))
+#define ZIMM(op, start, width) ((op >> start) & ((~0U) >> (32 - width)))
 
 static void gen_addiur1sp(DisasContext *ctx)
 {
@@ -15732,7 +15736,10 @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
                 save_cpu_state(ctx, 1);
                 gen_helper_di(t0, cpu_env);
                 gen_store_gpr(t0, rs);
-                /* Stop translation as we may have switched the execution mode */
+                /*
+                 * Stop translation as we may have switched the execution
+                 * mode.
+                 */
                 ctx->base.is_jmp = DISAS_STOP;
                 tcg_temp_free(t0);
             }
@@ -15854,9 +15861,9 @@ static void gen_pool32fxf(DisasContext *ctx, int rt, int rs)
     int extension = (ctx->opcode >> 6) & 0x3ff;
     uint32_t mips32_op;
 
-#define FLOAT_1BIT_FMT(opc, fmt) (fmt << 8) | opc
-#define FLOAT_2BIT_FMT(opc, fmt) (fmt << 7) | opc
-#define COND_FLOAT_MOV(opc, cond) (cond << 7) | opc
+#define FLOAT_1BIT_FMT(opc, fmt)    ((fmt << 8) | opc)
+#define FLOAT_2BIT_FMT(opc, fmt)    ((fmt << 7) | opc)
+#define COND_FLOAT_MOV(opc, cond)   ((cond << 7) | opc)
 
     switch (extension) {
     case FLOAT_1BIT_FMT(CFC1, 0):
@@ -30253,7 +30260,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
     translator_loop(&mips_tr_ops, &ctx.base, cs, tb, max_insns);
 }
 
-static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
+static void fpu_dump_state(CPUMIPSState *env, FILE * f, int flags)
 {
     int i;
     int is_fpu64 = !!(env->hflags & MIPS_HFLAG_F64);
@@ -30278,7 +30285,7 @@ static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
                          (double)tmp.fs[FP_ENDIAN_IDX],                 \
                          (double)tmp.fs[!FP_ENDIAN_IDX]);               \
         }                                                               \
-    } while(0)
+    } while (0)
 
 
     qemu_fprintf(f,
@@ -30315,7 +30322,8 @@ void mips_cpu_dump_state(CPUState *cs, FILE *f, int flags)
         }
     }
 
-    qemu_fprintf(f, "CP0 Status  0x%08x Cause   0x%08x EPC    0x" TARGET_FMT_lx "\n",
+    qemu_fprintf(f, "CP0 Status  0x%08x Cause   0x%08x EPC    0x"
+                 TARGET_FMT_lx "\n",
                  env->CP0_Status, env->CP0_Cause, env->CP0_EPC);
     qemu_fprintf(f, "    Config0 0x%08x Config1 0x%08x LLAddr 0x%016"
                  PRIx64 "\n",
@@ -30336,7 +30344,8 @@ void mips_tcg_init(void)
     cpu_gpr[0] = NULL;
     for (i = 1; i < 32; i++)
         cpu_gpr[i] = tcg_global_mem_new(cpu_env,
-                                        offsetof(CPUMIPSState, active_tc.gpr[i]),
+                                        offsetof(CPUMIPSState,
+                                                 active_tc.gpr[i]),
                                         regnames[i]);
 
     for (i = 0; i < 32; i++) {
@@ -30364,7 +30373,8 @@ void mips_tcg_init(void)
                                        regnames_LO[i]);
     }
     cpu_dspctrl = tcg_global_mem_new(cpu_env,
-                                     offsetof(CPUMIPSState, active_tc.DSPControl),
+                                     offsetof(CPUMIPSState,
+                                              active_tc.DSPControl),
                                      "DSPControl");
     bcond = tcg_global_mem_new(cpu_env,
                                offsetof(CPUMIPSState, bcond), "bcond");
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 12/37] target/mips: Style improvements in cps.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (10 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 11/37] target/mips: Style improvements in translate.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:44   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c Aleksandar Markovic
                   ` (24 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/cps.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/mips/cps.c b/hw/mips/cps.c
index c84bc64..8fe2f47 100644
--- a/hw/mips/cps.c
+++ b/hw/mips/cps.c
@@ -37,8 +37,10 @@ static void mips_cps_init(Object *obj)
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
     MIPSCPSState *s = MIPS_CPS(obj);
 
-    /* Cover entire address space as there do not seem to be any
-     * constraints for the base address of CPC and GIC. */
+    /*
+     * Cover entire address space as there do not seem to be any
+     * constraints for the base address of CPC and GIC.
+     */
     memory_region_init(&s->container, obj, "mips-cps-container", UINT64_MAX);
     sysbus_init_mmio(sbd, &s->container);
 }
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (11 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 12/37] target/mips: Style improvements in cps.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:45   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 14/37] target/mips: Style improvements in mips_int.c Aleksandar Markovic
                   ` (23 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/mips_fulong2e.c | 96 +++++++++++++++++++++++++++++--------------------
 1 file changed, 58 insertions(+), 38 deletions(-)

diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 5dbaa3b..0c3d947 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -48,13 +48,13 @@
 
 #define DEBUG_FULONG2E_INIT
 
-#define ENVP_ADDR       0x80002000l
-#define ENVP_NB_ENTRIES	 	16
-#define ENVP_ENTRY_SIZE	 	256
+#define ENVP_ADDR               0x80002000l
+#define ENVP_NB_ENTRIES         16
+#define ENVP_ENTRY_SIZE         256
 
 /* fulong 2e has a 512k flash: Winbond W39L040AP70Z */
-#define BIOS_SIZE (512 * KiB)
-#define MAX_IDE_BUS 2
+#define BIOS_SIZE               (512 * KiB)
+#define MAX_IDE_BUS             2
 
 /*
  * PMON is not part of qemu and released with BSD license, anyone
@@ -83,14 +83,15 @@ static struct _loaderparams {
     const char *initrd_filename;
 } loaderparams;
 
-static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
+static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index,
                                         const char *string, ...)
 {
     va_list ap;
     int32_t table_addr;
 
-    if (index >= ENVP_NB_ENTRIES)
+    if (index >= ENVP_NB_ENTRIES) {
         return;
+    }
 
     if (string == NULL) {
         prom_buf[index] = 0;
@@ -105,7 +106,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
     va_end(ap);
 }
 
-static int64_t load_kernel (CPUMIPSState *env)
+static int64_t load_kernel(CPUMIPSState *env)
 {
     int64_t kernel_entry, kernel_low, kernel_high, initrd_size;
     int index = 0;
@@ -130,16 +131,18 @@ static int64_t load_kernel (CPUMIPSState *env)
     initrd_size = 0;
     initrd_offset = 0;
     if (loaderparams.initrd_filename) {
-        initrd_size = get_image_size (loaderparams.initrd_filename);
+        initrd_size = get_image_size(loaderparams.initrd_filename);
         if (initrd_size > 0) {
-            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
+            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) &
+                            INITRD_PAGE_MASK;
             if (initrd_offset + initrd_size > ram_size) {
                 error_report("memory too small for initial ram disk '%s'",
                              loaderparams.initrd_filename);
                 exit(1);
             }
             initrd_size = load_image_targphys(loaderparams.initrd_filename,
-                                     initrd_offset, ram_size - initrd_offset);
+                                              initrd_offset,
+                                              ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
             error_report("could not load initial ram disk '%s'",
@@ -154,9 +157,10 @@ static int64_t load_kernel (CPUMIPSState *env)
 
     prom_set(prom_buf, index++, "%s", loaderparams.kernel_filename);
     if (initrd_size > 0) {
-        prom_set(prom_buf, index++, "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
-                 cpu_mips_phys_to_kseg0(NULL, initrd_offset), initrd_size,
-                 loaderparams.kernel_cmdline);
+        prom_set(prom_buf, index++,
+                 "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
+                 cpu_mips_phys_to_kseg0(NULL, initrd_offset),
+                 initrd_size, loaderparams.kernel_cmdline);
     } else {
         prom_set(prom_buf, index++, "%s", loaderparams.kernel_cmdline);
     }
@@ -175,34 +179,48 @@ static int64_t load_kernel (CPUMIPSState *env)
     return kernel_entry;
 }
 
-static void write_bootloader (CPUMIPSState *env, uint8_t *base, int64_t kernel_addr)
+static void write_bootloader(CPUMIPSState *env, uint8_t *base,
+                             int64_t kernel_addr)
 {
     uint32_t *p;
 
     /* Small bootloader */
-    p = (uint32_t *) base;
+    p = (uint32_t *)base;
 
-    stl_p(p++, 0x0bf00010);                                      /* j 0x1fc00040 */
-    stl_p(p++, 0x00000000);                                      /* nop */
+    /* j 0x1fc00040 */
+    stl_p(p++, 0x0bf00010);
+    /* nop */
+    stl_p(p++, 0x00000000);
 
     /* Second part of the bootloader */
-    p = (uint32_t *) (base + 0x040);
-
-    stl_p(p++, 0x3c040000);                                      /* lui a0, 0 */
-    stl_p(p++, 0x34840002);                                      /* ori a0, a0, 2 */
-    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));       /* lui a1, high(ENVP_ADDR) */
-    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));               /* ori a1, a0, low(ENVP_ADDR) */
-    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */
-    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));         /* ori a2, a2, low(ENVP_ADDR + 8) */
-    stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16));      /* lui a3, high(env->ram_size) */
-    stl_p(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff));   /* ori a3, a3, low(env->ram_size) */
-    stl_p(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff));     /* lui ra, high(kernel_addr) */;
-    stl_p(p++, 0x37ff0000 | (kernel_addr & 0xffff));             /* ori ra, ra, low(kernel_addr) */
-    stl_p(p++, 0x03e00008);                                      /* jr ra */
-    stl_p(p++, 0x00000000);                                      /* nop */
+    p = (uint32_t *)(base + 0x040);
+
+    /* lui a0, 0 */
+    stl_p(p++, 0x3c040000);
+    /* ori a0, a0, 2 */
+    stl_p(p++, 0x34840002);
+    /* lui a1, high(ENVP_ADDR) */
+    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));
+    /* ori a1, a0, low(ENVP_ADDR) */
+    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));
+    /* lui a2, high(ENVP_ADDR + 8) */
+    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff));
+    /* ori a2, a2, low(ENVP_ADDR + 8) */
+    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));
+    /* lui a3, high(env->ram_size) */
+    stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16));
+    /* ori a3, a3, low(env->ram_size) */
+    stl_p(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff));
+    /* lui ra, high(kernel_addr) */
+    stl_p(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff));
+    /* ori ra, ra, low(kernel_addr) */
+    stl_p(p++, 0x37ff0000 | (kernel_addr & 0xffff));
+    /* jr ra */
+    stl_p(p++, 0x03e00008);
+    /* nop */
+    stl_p(p++, 0x00000000);
 }
 
-
 static void main_cpu_reset(void *opaque)
 {
     MIPSCPU *cpu = opaque;
@@ -252,11 +270,11 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
 }
 
 /* Network support */
-static void network_init (PCIBus *pci_bus)
+static void network_init(PCIBus *pci_bus)
 {
     int i;
 
-    for(i = 0; i < nb_nics; i++) {
+    for (i = 0; i < nb_nics; i++) {
         NICInfo *nd = &nd_table[i];
         const char *default_devaddr = NULL;
 
@@ -308,15 +326,17 @@ static void mips_fulong2e_init(MachineState *machine)
     memory_region_add_subregion(address_space_mem, 0, ram);
     memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
 
-    /* We do not support flash operation, just loading pmon.bin as raw BIOS.
-     * Please use -L to set the BIOS path and -bios to set bios name. */
+    /*
+     * We do not support flash operation, just loading pmon.bin as raw BIOS.
+     * Please use -L to set the BIOS path and -bios to set bios name.
+     */
 
     if (kernel_filename) {
         loaderparams.ram_size = ram_size;
         loaderparams.kernel_filename = kernel_filename;
         loaderparams.kernel_cmdline = kernel_cmdline;
         loaderparams.initrd_filename = initrd_filename;
-        kernel_entry = load_kernel (env);
+        kernel_entry = load_kernel(env);
         write_bootloader(env, memory_region_get_ram_ptr(bios), kernel_entry);
     } else {
         if (bios_name == NULL) {
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 14/37] target/mips: Style improvements in mips_int.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (12 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:46   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c Aleksandar Markovic
                   ` (22 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/mips_int.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
index f899f6c..4c731ab 100644
--- a/hw/mips/mips_int.c
+++ b/hw/mips/mips_int.c
@@ -35,8 +35,9 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
     CPUState *cs = CPU(cpu);
     bool locked = false;
 
-    if (irq < 0 || irq > 7)
+    if (irq < 0 || irq > 7) {
         return;
+    }
 
     /* Make sure locking works even if BQL is already held by the caller */
     if (!qemu_mutex_iothread_locked()) {
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (13 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 14/37] target/mips: Style improvements in mips_int.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:47   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c Aleksandar Markovic
                   ` (21 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/mips_malta.c | 216 ++++++++++++++++++++++++++++++---------------------
 1 file changed, 128 insertions(+), 88 deletions(-)

diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 20e019b..0b5ee37 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -58,18 +58,18 @@
 #include "hw/semihosting/semihost.h"
 #include "hw/mips/cps.h"
 
-#define ENVP_ADDR		0x80002000l
-#define ENVP_NB_ENTRIES	 	16
-#define ENVP_ENTRY_SIZE	 	256
+#define ENVP_ADDR           0x80002000l
+#define ENVP_NB_ENTRIES     16
+#define ENVP_ENTRY_SIZE     256
 
 /* Hardware addresses */
-#define FLASH_ADDRESS 0x1e000000ULL
-#define FPGA_ADDRESS  0x1f000000ULL
-#define RESET_ADDRESS 0x1fc00000ULL
+#define FLASH_ADDRESS       0x1e000000ULL
+#define FPGA_ADDRESS        0x1f000000ULL
+#define RESET_ADDRESS       0x1fc00000ULL
 
-#define FLASH_SIZE    0x400000
+#define FLASH_SIZE          0x400000
 
-#define MAX_IDE_BUS 2
+#define MAX_IDE_BUS         2
 
 typedef struct {
     MemoryRegion iomem;
@@ -115,10 +115,11 @@ static void malta_fpga_update_display(void *opaque)
     MaltaFPGAState *s = opaque;
 
     for (i = 7 ; i >= 0 ; i--) {
-        if (s->leds & (1 << i))
+        if (s->leds & (1 << i)) {
             leds_text[i] = '#';
-        else
+        } else {
             leds_text[i] = ' ';
+        }
     }
     leds_text[8] = '\0';
 
@@ -138,8 +139,6 @@ static void malta_fpga_update_display(void *opaque)
  * Typical device names include Microchip 24C02SC or SGS Thomson ST24C02.
  */
 
-//~ #define DEBUG
-
 #if defined(DEBUG)
 #  define logout(fmt, ...) fprintf(stderr, "MALTA\t%-24s" fmt, __func__, ## __VA_ARGS__)
 #else
@@ -154,7 +153,7 @@ struct _eeprom24c0x_t {
   uint8_t scl;
   uint8_t sda;
   uint8_t data;
-  //~ uint16_t size;
+  /* uint16_t size; */
   uint8_t contents[256];
 };
 
@@ -162,22 +161,38 @@ typedef struct _eeprom24c0x_t eeprom24c0x_t;
 
 static eeprom24c0x_t spd_eeprom = {
     .contents = {
-        /* 00000000: */ 0x80,0x08,0xFF,0x0D,0x0A,0xFF,0x40,0x00,
-        /* 00000008: */ 0x01,0x75,0x54,0x00,0x82,0x08,0x00,0x01,
-        /* 00000010: */ 0x8F,0x04,0x02,0x01,0x01,0x00,0x00,0x00,
-        /* 00000018: */ 0x00,0x00,0x00,0x14,0x0F,0x14,0x2D,0xFF,
-        /* 00000020: */ 0x15,0x08,0x15,0x08,0x00,0x00,0x00,0x00,
-        /* 00000028: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000030: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000038: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0xD0,
-        /* 00000040: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000048: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000050: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000058: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000060: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000068: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000070: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-        /* 00000078: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xF4,
+        /* 00000000: */
+        0x80, 0x08, 0xFF, 0x0D, 0x0A, 0xFF, 0x40, 0x00,
+        /* 00000008: */
+        0x01, 0x75, 0x54, 0x00, 0x82, 0x08, 0x00, 0x01,
+        /* 00000010: */
+        0x8F, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
+        /* 00000018: */
+        0x00, 0x00, 0x00, 0x14, 0x0F, 0x14, 0x2D, 0xFF,
+        /* 00000020: */
+        0x15, 0x08, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00,
+        /* 00000028: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000030: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000038: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xD0,
+        /* 00000040: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000048: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000050: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000058: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000060: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000068: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000070: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+        /* 00000078: */
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4,
     },
 };
 
@@ -347,7 +362,8 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
 
     /* SWITCH Register */
     case 0x00200:
-        val = 0x00000000;		/* All switches closed */
+        /* ori a3, a3, low(ram_low_size) */
+        val = 0x00000000;
         break;
 
     /* STATUS Register */
@@ -386,10 +402,11 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
     /* GPINP Register */
     case 0x00a08:
         /* IN = OUT until a real I2C control is implemented */
-        if (s->i2csel)
+        if (s->i2csel) {
             val = s->i2cout;
-        else
+        } else {
             val = 0x00;
+        }
         break;
 
     /* I2CINP Register */
@@ -414,8 +431,8 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
 
     default:
 #if 0
-        printf ("malta_fpga_read: Bad register offset 0x" TARGET_FMT_lx "\n",
-                addr);
+        printf("malta_fpga_read: Bad register offset 0x" TARGET_FMT_lx "\n",
+               addr);
 #endif
         break;
     }
@@ -467,8 +484,9 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
 
     /* SOFTRES Register */
     case 0x00500:
-        if (val == 0x42)
+        if (val == 0x42) {
             qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
+        }
         break;
 
     /* BRKRES Register */
@@ -501,8 +519,8 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
 
     default:
 #if 0
-        printf ("malta_fpga_write: Bad register offset 0x" TARGET_FMT_lx "\n",
-                addr);
+        printf("malta_fpga_write: Bad register offset 0x" TARGET_FMT_lx "\n",
+               addr);
 #endif
         break;
     }
@@ -561,7 +579,7 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
     memory_region_init_alias(&s->iomem_lo, NULL, "malta-fpga",
                              &s->iomem, 0, 0x900);
     memory_region_init_alias(&s->iomem_hi, NULL, "malta-fpga",
-                             &s->iomem, 0xa00, 0x10000-0xa00);
+                             &s->iomem, 0xa00, 0x10000 - 0xa00);
 
     memory_region_add_subregion(address_space, base, &s->iomem_lo);
     memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi);
@@ -585,7 +603,7 @@ static void network_init(PCIBus *pci_bus)
 {
     int i;
 
-    for(i = 0; i < nb_nics; i++) {
+    for (i = 0; i < nb_nics; i++) {
         NICInfo *nd = &nd_table[i];
         const char *default_devaddr = NULL;
 
@@ -799,27 +817,28 @@ static void write_bootloader_nanomips(uint8_t *base, int64_t run_addr,
                                 /* jalrc   t8                   */
 }
 
-/* ROM and pseudo bootloader
-
-   The following code implements a very very simple bootloader. It first
-   loads the registers a0 to a3 to the values expected by the OS, and
-   then jump at the kernel address.
-
-   The bootloader should pass the locations of the kernel arguments and
-   environment variables tables. Those tables contain the 32-bit address
-   of NULL terminated strings. The environment variables table should be
-   terminated by a NULL address.
-
-   For a simpler implementation, the number of kernel arguments is fixed
-   to two (the name of the kernel and the command line), and the two
-   tables are actually the same one.
-
-   The registers a0 to a3 should contain the following values:
-     a0 - number of kernel arguments
-     a1 - 32-bit address of the kernel arguments table
-     a2 - 32-bit address of the environment variables table
-     a3 - RAM size in bytes
-*/
+/*
+ * ROM and pseudo bootloader
+ *
+ * The following code implements a very very simple bootloader. It first
+ * loads the registers a0 to a3 to the values expected by the OS, and
+ * then jump at the kernel address.
+ *
+ * The bootloader should pass the locations of the kernel arguments and
+ * environment variables tables. Those tables contain the 32-bit address
+ * of NULL terminated strings. The environment variables table should be
+ * terminated by a NULL address.
+ *
+ * For a simpler implementation, the number of kernel arguments is fixed
+ * to two (the name of the kernel and the command line), and the two
+ * tables are actually the same one.
+ *
+ * The registers a0 to a3 should contain the following values:
+ *   a0 - number of kernel arguments
+ *   a1 - 32-bit address of the kernel arguments table
+ *   a2 - 32-bit address of the environment variables table
+ *   a3 - RAM size in bytes
+ */
 static void write_bootloader(uint8_t *base, int64_t run_addr,
                              int64_t kernel_entry)
 {
@@ -857,14 +876,23 @@ static void write_bootloader(uint8_t *base, int64_t run_addr,
     } else {
         stl_p(p++, 0x24040002);                         /* addiu a0, zero, 2 */
     }
-    stl_p(p++, 0x3c1d0000 | (((ENVP_ADDR - 64) >> 16) & 0xffff)); /* lui sp, high(ENVP_ADDR) */
-    stl_p(p++, 0x37bd0000 | ((ENVP_ADDR - 64) & 0xffff));        /* ori sp, sp, low(ENVP_ADDR) */
-    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));       /* lui a1, high(ENVP_ADDR) */
-    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));               /* ori a1, a1, low(ENVP_ADDR) */
-    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */
-    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));         /* ori a2, a2, low(ENVP_ADDR + 8) */
-    stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16));     /* lui a3, high(ram_low_size) */
-    stl_p(p++, 0x34e70000 | (loaderparams.ram_low_size & 0xffff));  /* ori a3, a3, low(ram_low_size) */
+
+    /* lui sp, high(ENVP_ADDR) */
+    stl_p(p++, 0x3c1d0000 | (((ENVP_ADDR - 64) >> 16) & 0xffff));
+    /* ori sp, sp, low(ENVP_ADDR) */
+    stl_p(p++, 0x37bd0000 | ((ENVP_ADDR - 64) & 0xffff));
+    /* lui a1, high(ENVP_ADDR) */
+    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));
+    /* ori a1, a1, low(ENVP_ADDR) */
+    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));
+    /* lui a2, high(ENVP_ADDR + 8) */
+    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff));
+    /* ori a2, a2, low(ENVP_ADDR + 8) */
+    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));
+    /* lui a3, high(ram_low_size) */
+    stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16));
+    /* ori a3, a3, low(ram_low_size) */
+    stl_p(p++, 0x34e70000 | (loaderparams.ram_low_size & 0xffff));
 
     /* Load BAR registers as done by YAMON */
     stl_p(p++, 0x3c09b400);                                      /* lui t1, 0xb400 */
@@ -968,14 +996,15 @@ static void write_bootloader(uint8_t *base, int64_t run_addr,
 
 }
 
-static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
+static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index,
                                         const char *string, ...)
 {
     va_list ap;
     int32_t table_addr;
 
-    if (index >= ENVP_NB_ENTRIES)
+    if (index >= ENVP_NB_ENTRIES) {
         return;
+    }
 
     if (string == NULL) {
         prom_buf[index] = 0;
@@ -991,7 +1020,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
 }
 
 /* Kernel */
-static int64_t load_kernel (void)
+static int64_t load_kernel(void)
 {
     int64_t kernel_entry, kernel_high, initrd_size;
     long kernel_size;
@@ -1039,11 +1068,13 @@ static int64_t load_kernel (void)
     initrd_size = 0;
     initrd_offset = 0;
     if (loaderparams.initrd_filename) {
-        initrd_size = get_image_size (loaderparams.initrd_filename);
+        initrd_size = get_image_size(loaderparams.initrd_filename);
         if (initrd_size > 0) {
-            /* The kernel allocates the bootmap memory in the low memory after
-               the initrd.  It takes at most 128kiB for 2GB RAM and 4kiB
-               pages.  */
+            /*
+             * The kernel allocates the bootmap memory in the low memory after
+             * the initrd.  It takes at most 128kiB for 2GB RAM and 4kiB
+             * pages.
+             */
             initrd_offset = (loaderparams.ram_low_size - initrd_size
                              - (128 * KiB)
                              - ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
@@ -1069,9 +1100,10 @@ static int64_t load_kernel (void)
 
     prom_set(prom_buf, prom_index++, "%s", loaderparams.kernel_filename);
     if (initrd_size > 0) {
-        prom_set(prom_buf, prom_index++, "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
-                 xlate_to_kseg0(NULL, initrd_offset), initrd_size,
-                 loaderparams.kernel_cmdline);
+        prom_set(prom_buf, prom_index++,
+                 "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
+                 xlate_to_kseg0(NULL, initrd_offset),
+                 initrd_size, loaderparams.kernel_cmdline);
     } else {
         prom_set(prom_buf, prom_index++, "%s", loaderparams.kernel_cmdline);
     }
@@ -1111,9 +1143,11 @@ static void main_cpu_reset(void *opaque)
 
     cpu_reset(CPU(cpu));
 
-    /* The bootloader does not need to be rewritten as it is located in a
-       read only location. The kernel location and the arguments table
-       location does not change. */
+    /*
+     * The bootloader does not need to be rewritten as it is located in a
+     * read only location. The kernel location and the arguments table
+     * location does not change.
+     */
     if (loaderparams.kernel_filename) {
         env->CP0_Status &= ~(1 << CP0St_ERL);
     }
@@ -1211,9 +1245,11 @@ void mips_malta_init(MachineState *machine)
     DeviceState *dev = qdev_create(NULL, TYPE_MIPS_MALTA);
     MaltaState *s = MIPS_MALTA(dev);
 
-    /* The whole address space decoded by the GT-64120A doesn't generate
-       exception when accessing invalid memory. Create an empty slot to
-       emulate this feature. */
+    /*
+     * The whole address space decoded by the GT-64120A doesn't generate
+     * exception when accessing invalid memory. Create an empty slot to
+     * emulate this feature.\
+     */
     empty_slot_init(0, 0x20000000);
 
     qdev_init_nofail(dev);
@@ -1329,8 +1365,10 @@ void mips_malta_init(MachineState *machine)
                 exit(1);
             }
         }
-        /* In little endian mode the 32bit words in the bios are swapped,
-           a neat trick which allows bi-endian firmware. */
+        /*
+         * In little endian mode the 32bit words in the bios are swapped,
+         * a neat trick which allows bi-endian firmware.
+         */
 #ifndef TARGET_WORDS_BIGENDIAN
         {
             uint32_t *end, *addr;
@@ -1384,8 +1422,10 @@ void mips_malta_init(MachineState *machine)
 
     piix4_devfn = piix4_init(pci_bus, &isa_bus, 80);
 
-    /* Interrupt controller */
-    /* The 8259 is attached to the MIPS CPU INT0 pin, ie interrupt 2 */
+    /*
+     * Interrupt controller
+     * The 8259 is attached to the MIPS CPU INT0 pin, ie interrupt 2
+     */
     s->i8259 = i8259_init(isa_bus, i8259_irq);
 
     isa_bus_irqs(isa_bus, s->i8259);
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (14 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 14:48   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 17/37] target/mips: Clean up handling of CP0 register 0 Aleksandar Markovic
                   ` (20 subsequent siblings)
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 hw/mips/mips_mipssim.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index 824abda..b3155e17 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -3,7 +3,7 @@
  *
  * Emulates a very simple machine model similar to the one used by the
  * proprietary MIPS emulator.
- * 
+ *
  * Copyright (c) 2007 Thiemo Seufer
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -75,8 +75,9 @@ static int64_t load_kernel(void)
                            (uint64_t *)&kernel_high, big_endian,
                            EM_MIPS, 1, 0);
     if (kernel_size >= 0) {
-        if ((entry & ~0x7fffffffULL) == 0x80000000)
+        if ((entry & ~0x7fffffffULL) == 0x80000000) {
             entry = (int32_t)entry;
+        }
     } else {
         error_report("could not load kernel '%s': %s",
                      loaderparams.kernel_filename,
@@ -88,9 +89,10 @@ static int64_t load_kernel(void)
     initrd_size = 0;
     initrd_offset = 0;
     if (loaderparams.initrd_filename) {
-        initrd_size = get_image_size (loaderparams.initrd_filename);
+        initrd_size = get_image_size(loaderparams.initrd_filename);
         if (initrd_size > 0) {
-            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
+            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) &
+                            INITRD_PAGE_MASK;
             if (initrd_offset + initrd_size > loaderparams.ram_size) {
                 error_report("memory too small for initial ram disk '%s'",
                              loaderparams.initrd_filename);
@@ -174,8 +176,9 @@ mips_mipssim_init(MachineState *machine)
     /* Map the BIOS / boot exception handler. */
     memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
     /* Load a BIOS / boot exception handler image. */
-    if (bios_name == NULL)
+    if (bios_name == NULL) {
         bios_name = BIOS_FILENAME;
+    }
     filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
     if (filename) {
         bios_size = load_image_targphys(filename, 0x1fc00000LL, BIOS_SIZE);
@@ -211,8 +214,10 @@ mips_mipssim_init(MachineState *machine)
                              get_system_io(), 0, 0x00010000);
     memory_region_add_subregion(get_system_memory(), 0x1fd00000, isa);
 
-    /* A single 16450 sits at offset 0x3f8. It is attached to
-       MIPS CPU INT2, which is interrupt 4. */
+    /*
+     * A single 16450 sits at offset 0x3f8. It is attached to
+     * MIPS CPU INT2, which is interrupt 4.
+     */
     if (serial_hd(0))
         serial_init(0x3f8, env->irq[4], 115200, serial_hd(0),
                     get_system_io());
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 17/37] target/mips: Clean up handling of CP0 register 0
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (15 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 18/37] target/mips: Clean up handling of CP0 register 1 Aleksandar Markovic
                   ` (19 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 0.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  3 +++
 target/mips/translate.c | 40 ++++++++++++++++++++--------------------
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index eda8350..e2f6844 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -279,6 +279,9 @@ typedef struct mips_def_t mips_def_t;
 
 /* CP0 Register 00 */
 #define CP0_REG00__INDEX           0
+#define CP0_REG00__MVPCONTROL      1
+#define CP0_REG00__MVPCONF0        2
+#define CP0_REG00__MVPCONF1        3
 #define CP0_REG00__VPCONTROL       4
 /* CP0 Register 01 */
 /* CP0 Register 02 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index fe4a05c..06a1646 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -6853,26 +6853,26 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
     switch (reg) {
     case CP0_REGISTER_00:
         switch (sel) {
-        case 0:
+        case CP0_REG00__INDEX:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Index));
             register_name = "Index";
             break;
-        case 1:
+        case CP0_REG00__MVPCONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpcontrol(arg, cpu_env);
             register_name = "MVPControl";
             break;
-        case 2:
+        case CP0_REG00__MVPCONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpconf0(arg, cpu_env);
             register_name = "MVPConf0";
             break;
-        case 3:
+        case CP0_REG00__MVPCONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpconf1(arg, cpu_env);
             register_name = "MVPConf1";
             break;
-        case 4:
+        case CP0_REG00__VPCONTROL:
             CP0_CHECK(ctx->vp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPControl));
             register_name = "VPControl";
@@ -7621,26 +7621,26 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
     switch (reg) {
     case CP0_REGISTER_00:
         switch (sel) {
-        case 0:
+        case CP0_REG00__INDEX:
             gen_helper_mtc0_index(cpu_env, arg);
             register_name = "Index";
             break;
-        case 1:
+        case CP0_REG00__MVPCONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_mvpcontrol(cpu_env, arg);
             register_name = "MVPControl";
             break;
-        case 2:
+        case CP0_REG00__MVPCONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             /* ignored */
             register_name = "MVPConf0";
             break;
-        case 3:
+        case CP0_REG00__MVPCONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             /* ignored */
             register_name = "MVPConf1";
             break;
-        case 4:
+        case CP0_REG00__VPCONTROL:
             CP0_CHECK(ctx->vp);
             /* ignored */
             register_name = "VPControl";
@@ -8373,26 +8373,26 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
     switch (reg) {
     case CP0_REGISTER_00:
         switch (sel) {
-        case 0:
+        case CP0_REG00__INDEX:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Index));
             register_name = "Index";
             break;
-        case 1:
+        case CP0_REG00__MVPCONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpcontrol(arg, cpu_env);
             register_name = "MVPControl";
             break;
-        case 2:
+        case CP0_REG00__MVPCONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpconf0(arg, cpu_env);
             register_name = "MVPConf0";
             break;
-        case 3:
+        case CP0_REG00__MVPCONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_mvpconf1(arg, cpu_env);
             register_name = "MVPConf1";
             break;
-        case 4:
+        case CP0_REG00__VPCONTROL:
             CP0_CHECK(ctx->vp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPControl));
             register_name = "VPControl";
@@ -9095,26 +9095,26 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
     switch (reg) {
     case CP0_REGISTER_00:
         switch (sel) {
-        case 0:
+        case CP0_REG00__INDEX:
             gen_helper_mtc0_index(cpu_env, arg);
             register_name = "Index";
             break;
-        case 1:
+        case CP0_REG00__MVPCONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_mvpcontrol(cpu_env, arg);
             register_name = "MVPControl";
             break;
-        case 2:
+        case CP0_REG00__MVPCONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             /* ignored */
             register_name = "MVPConf0";
             break;
-        case 3:
+        case CP0_REG00__MVPCONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             /* ignored */
             register_name = "MVPConf1";
             break;
-        case 4:
+        case CP0_REG00__VPCONTROL:
             CP0_CHECK(ctx->vp);
             /* ignored */
             register_name = "VPControl";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 18/37] target/mips: Clean up handling of CP0 register 1
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (16 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 17/37] target/mips: Clean up handling of CP0 register 0 Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 19/37] target/mips: Clean up handling of CP0 register 2 Aleksandar Markovic
                   ` (18 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 1.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  8 +++++++
 target/mips/translate.c | 64 ++++++++++++++++++++++++-------------------------
 2 files changed, 40 insertions(+), 32 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index e2f6844..597afa8 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -284,6 +284,14 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG00__MVPCONF1        3
 #define CP0_REG00__VPCONTROL       4
 /* CP0 Register 01 */
+#define CP0_REG01__RANDOM          0
+#define CP0_REG01__VPECONTROL      1
+#define CP0_REG01__VPECONF0        2
+#define CP0_REG01__VPECONF1        3
+#define CP0_REG01__YQMASK          4
+#define CP0_REG01__VPESCHEDULE     5
+#define CP0_REG01__VPESCHEFBACK    6
+#define CP0_REG01__VPEOPT          7
 /* CP0 Register 02 */
 #define CP0_REG02__ENTRYLO0        0
 /* CP0 Register 03 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 06a1646..e350545 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -6883,42 +6883,42 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_01:
         switch (sel) {
-        case 0:
+        case CP0_REG01__RANDOM:
             CP0_CHECK(!(ctx->insn_flags & ISA_MIPS32R6));
             gen_helper_mfc0_random(arg, cpu_env);
             register_name = "Random";
             break;
-        case 1:
+        case CP0_REG01__VPECONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEControl));
             register_name = "VPEControl";
             break;
-        case 2:
+        case CP0_REG01__VPECONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEConf0));
             register_name = "VPEConf0";
             break;
-        case 3:
+        case CP0_REG01__VPECONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEConf1));
             register_name = "VPEConf1";
             break;
-        case 4:
+        case CP0_REG01__YQMASK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load64(arg, offsetof(CPUMIPSState, CP0_YQMask));
             register_name = "YQMask";
             break;
-        case 5:
+        case CP0_REG01__VPESCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load64(arg, offsetof(CPUMIPSState, CP0_VPESchedule));
             register_name = "VPESchedule";
             break;
-        case 6:
+        case CP0_REG01__VPESCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load64(arg, offsetof(CPUMIPSState, CP0_VPEScheFBack));
             register_name = "VPEScheFBack";
             break;
-        case 7:
+        case CP0_REG01__VPEOPT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEOpt));
             register_name = "VPEOpt";
@@ -7651,43 +7651,43 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_01:
         switch (sel) {
-        case 0:
+        case CP0_REG01__RANDOM:
             /* ignored */
             register_name = "Random";
             break;
-        case 1:
+        case CP0_REG01__VPECONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpecontrol(cpu_env, arg);
             register_name = "VPEControl";
             break;
-        case 2:
+        case CP0_REG01__VPECONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeconf0(cpu_env, arg);
             register_name = "VPEConf0";
             break;
-        case 3:
+        case CP0_REG01__VPECONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeconf1(cpu_env, arg);
             register_name = "VPEConf1";
             break;
-        case 4:
+        case CP0_REG01__YQMASK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_yqmask(cpu_env, arg);
             register_name = "YQMask";
             break;
-        case 5:
+        case CP0_REG01__VPESCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_st_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_VPESchedule));
             register_name = "VPESchedule";
             break;
-        case 6:
+        case CP0_REG01__VPESCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_st_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_VPEScheFBack));
             register_name = "VPEScheFBack";
             break;
-        case 7:
+        case CP0_REG01__VPEOPT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeopt(cpu_env, arg);
             register_name = "VPEOpt";
@@ -8403,42 +8403,42 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_01:
         switch (sel) {
-        case 0:
+        case CP0_REG01__RANDOM:
             CP0_CHECK(!(ctx->insn_flags & ISA_MIPS32R6));
             gen_helper_mfc0_random(arg, cpu_env);
             register_name = "Random";
             break;
-        case 1:
+        case CP0_REG01__VPECONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEControl));
             register_name = "VPEControl";
             break;
-        case 2:
+        case CP0_REG01__VPECONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEConf0));
             register_name = "VPEConf0";
             break;
-        case 3:
+        case CP0_REG01__VPECONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEConf1));
             register_name = "VPEConf1";
             break;
-        case 4:
+        case CP0_REG01__YQMASK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_YQMask));
             register_name = "YQMask";
             break;
-        case 5:
+        case CP0_REG01__VPESCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_VPESchedule));
             register_name = "VPESchedule";
             break;
-        case 6:
+        case CP0_REG01__VPESCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_VPEScheFBack));
             register_name = "VPEScheFBack";
             break;
-        case 7:
+        case CP0_REG01__VPEOPT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_VPEOpt));
             register_name = "VPEOpt";
@@ -9125,41 +9125,41 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_01:
         switch (sel) {
-        case 0:
+        case CP0_REG01__RANDOM:
             /* ignored */
             register_name = "Random";
             break;
-        case 1:
+        case CP0_REG01__VPECONTROL:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpecontrol(cpu_env, arg);
             register_name = "VPEControl";
             break;
-        case 2:
+        case CP0_REG01__VPECONF0:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeconf0(cpu_env, arg);
             register_name = "VPEConf0";
             break;
-        case 3:
+        case CP0_REG01__VPECONF1:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeconf1(cpu_env, arg);
             register_name = "VPEConf1";
             break;
-        case 4:
+        case CP0_REG01__YQMASK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_yqmask(cpu_env, arg);
             register_name = "YQMask";
             break;
-        case 5:
+        case CP0_REG01__VPESCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_VPESchedule));
             register_name = "VPESchedule";
             break;
-        case 6:
+        case CP0_REG01__VPESCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_VPEScheFBack));
             register_name = "VPEScheFBack";
             break;
-        case 7:
+        case CP0_REG01__VPEOPT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_vpeopt(cpu_env, arg);
             register_name = "VPEOpt";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 19/37] target/mips: Clean up handling of CP0 register 2
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (17 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 18/37] target/mips: Clean up handling of CP0 register 1 Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 20/37] target/mips: Clean up handling of CP0 register 5 Aleksandar Markovic
                   ` (17 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 2.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  7 ++++++
 target/mips/translate.c | 64 ++++++++++++++++++++++++-------------------------
 2 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 597afa8..eebdc9f 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -294,6 +294,13 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG01__VPEOPT          7
 /* CP0 Register 02 */
 #define CP0_REG02__ENTRYLO0        0
+#define CP0_REG02__TCSTATUS        1
+#define CP0_REG02__TCBIND          2
+#define CP0_REG02__TCRESTART       3
+#define CP0_REG02__TCHALT          4
+#define CP0_REG02__TCCONTEXT       5
+#define CP0_REG02__TCSCHEDULE      6
+#define CP0_REG02__TCSCHEFBACK     7
 /* CP0 Register 03 */
 #define CP0_REG03__ENTRYLO1        0
 #define CP0_REG03__GLOBALNUM       1
diff --git a/target/mips/translate.c b/target/mips/translate.c
index e350545..6e65312 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -6929,7 +6929,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_02:
         switch (sel) {
-        case 0:
+        case CP0_REG02__ENTRYLO0:
             {
                 TCGv_i64 tmp = tcg_temp_new_i64();
                 tcg_gen_ld_i64(tmp, cpu_env,
@@ -6946,37 +6946,37 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             }
             register_name = "EntryLo0";
             break;
-        case 1:
+        case CP0_REG02__TCSTATUS:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcstatus(arg, cpu_env);
             register_name = "TCStatus";
             break;
-        case 2:
+        case CP0_REG02__TCBIND:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcbind(arg, cpu_env);
             register_name = "TCBind";
             break;
-        case 3:
+        case CP0_REG02__TCRESTART:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcrestart(arg, cpu_env);
             register_name = "TCRestart";
             break;
-        case 4:
+        case CP0_REG02__TCHALT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tchalt(arg, cpu_env);
             register_name = "TCHalt";
             break;
-        case 5:
+        case CP0_REG02__TCCONTEXT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tccontext(arg, cpu_env);
             register_name = "TCContext";
             break;
-        case 6:
+        case CP0_REG02__TCSCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcschedule(arg, cpu_env);
             register_name = "TCSchedule";
             break;
-        case 7:
+        case CP0_REG02__TCSCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcschefback(arg, cpu_env);
             register_name = "TCScheFBack";
@@ -7698,41 +7698,41 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_02:
         switch (sel) {
-        case 0:
+        case CP0_REG02__ENTRYLO0:
             gen_helper_mtc0_entrylo0(cpu_env, arg);
             register_name = "EntryLo0";
             break;
-        case 1:
+        case CP0_REG02__TCSTATUS:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcstatus(cpu_env, arg);
             register_name = "TCStatus";
             break;
-        case 2:
+        case CP0_REG02__TCBIND:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcbind(cpu_env, arg);
             register_name = "TCBind";
             break;
-        case 3:
+        case CP0_REG02__TCRESTART:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcrestart(cpu_env, arg);
             register_name = "TCRestart";
             break;
-        case 4:
+        case CP0_REG02__TCHALT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tchalt(cpu_env, arg);
             register_name = "TCHalt";
             break;
-        case 5:
+        case CP0_REG02__TCCONTEXT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tccontext(cpu_env, arg);
             register_name = "TCContext";
             break;
-        case 6:
+        case CP0_REG02__TCSCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcschedule(cpu_env, arg);
             register_name = "TCSchedule";
             break;
-        case 7:
+        case CP0_REG02__TCSCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcschefback(cpu_env, arg);
             register_name = "TCScheFBack";
@@ -8449,41 +8449,41 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_02:
         switch (sel) {
-        case 0:
+        case CP0_REG02__ENTRYLO0:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryLo0));
             register_name = "EntryLo0";
             break;
-        case 1:
+        case CP0_REG02__TCSTATUS:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcstatus(arg, cpu_env);
             register_name = "TCStatus";
             break;
-        case 2:
+        case CP0_REG02__TCBIND:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mfc0_tcbind(arg, cpu_env);
             register_name = "TCBind";
             break;
-        case 3:
+        case CP0_REG02__TCRESTART:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_dmfc0_tcrestart(arg, cpu_env);
             register_name = "TCRestart";
             break;
-        case 4:
+        case CP0_REG02__TCHALT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_dmfc0_tchalt(arg, cpu_env);
             register_name = "TCHalt";
             break;
-        case 5:
+        case CP0_REG02__TCCONTEXT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_dmfc0_tccontext(arg, cpu_env);
             register_name = "TCContext";
             break;
-        case 6:
+        case CP0_REG02__TCSCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_dmfc0_tcschedule(arg, cpu_env);
             register_name = "TCSchedule";
             break;
-        case 7:
+        case CP0_REG02__TCSCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_dmfc0_tcschefback(arg, cpu_env);
             register_name = "TCScheFBack";
@@ -9170,41 +9170,41 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_02:
         switch (sel) {
-        case 0:
+        case CP0_REG02__ENTRYLO0:
             gen_helper_dmtc0_entrylo0(cpu_env, arg);
             register_name = "EntryLo0";
             break;
-        case 1:
+        case CP0_REG02__TCSTATUS:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcstatus(cpu_env, arg);
             register_name = "TCStatus";
             break;
-        case 2:
+        case CP0_REG02__TCBIND:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcbind(cpu_env, arg);
             register_name = "TCBind";
             break;
-        case 3:
+        case CP0_REG02__TCRESTART:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcrestart(cpu_env, arg);
             register_name = "TCRestart";
             break;
-        case 4:
+        case CP0_REG02__TCHALT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tchalt(cpu_env, arg);
             register_name = "TCHalt";
             break;
-        case 5:
+        case CP0_REG02__TCCONTEXT:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tccontext(cpu_env, arg);
             register_name = "TCContext";
             break;
-        case 6:
+        case CP0_REG02__TCSCHEDULE:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcschedule(cpu_env, arg);
             register_name = "TCSchedule";
             break;
-        case 7:
+        case CP0_REG02__TCSCHEFBACK:
             CP0_CHECK(ctx->insn_flags & ASE_MT);
             gen_helper_mtc0_tcschefback(cpu_env, arg);
             register_name = "TCScheFBack";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 20/37] target/mips: Clean up handling of CP0 register 5
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (18 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 19/37] target/mips: Clean up handling of CP0 register 2 Aleksandar Markovic
@ 2019-08-19 12:07 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 21/37] target/mips: Clean up handling of CP0 register 6 Aleksandar Markovic
                   ` (16 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 5.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  6 +++++
 target/mips/translate.c | 64 ++++++++++++++++++++++++-------------------------
 2 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index eebdc9f..2ab388b 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -312,6 +312,12 @@ typedef struct mips_def_t mips_def_t;
 /* CP0 Register 05 */
 #define CP0_REG05__PAGEMASK        0
 #define CP0_REG05__PAGEGRAIN       1
+#define CP0_REG05__SEGCTL0         2
+#define CP0_REG05__SEGCTL1         3
+#define CP0_REG05__SEGCTL2         4
+#define CP0_REG05__PWBASE          5
+#define CP0_REG05__PWFIELD         6
+#define CP0_REG05__PWSIZE          7
 /* CP0 Register 06 */
 #define CP0_REG06__WIRED           0
 /* CP0 Register 07 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 6e65312..9d1e315 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7042,44 +7042,44 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_05:
         switch (sel) {
-        case 0:
+        case CP0_REG05__PAGEMASK:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PageMask));
             register_name = "PageMask";
             break;
-        case 1:
+        case CP0_REG05__PAGEGRAIN:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PageGrain));
             register_name = "PageGrain";
             break;
-        case 2:
+        case CP0_REG05__SEGCTL0:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl0));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "SegCtl0";
             break;
-        case 3:
+        case CP0_REG05__SEGCTL1:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl1));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "SegCtl1";
             break;
-        case 4:
+        case CP0_REG05__SEGCTL2:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl2));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "SegCtl2";
             break;
-        case 5:
+        case CP0_REG05__PWBASE:
             check_pw(ctx);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PWBase));
             register_name = "PWBase";
             break;
-        case 6:
+        case CP0_REG05__PWFIELD:
             check_pw(ctx);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PWField));
             register_name = "PWField";
             break;
-        case 7:
+        case CP0_REG05__PWSIZE:
             check_pw(ctx);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PWSize));
             register_name = "PWSize";
@@ -7783,42 +7783,42 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_05:
         switch (sel) {
-        case 0:
+        case CP0_REG05__PAGEMASK:
             gen_helper_mtc0_pagemask(cpu_env, arg);
             register_name = "PageMask";
             break;
-        case 1:
+        case CP0_REG05__PAGEGRAIN:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_pagegrain(cpu_env, arg);
             register_name = "PageGrain";
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 2:
+        case CP0_REG05__SEGCTL0:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl0(cpu_env, arg);
             register_name = "SegCtl0";
             break;
-        case 3:
+        case CP0_REG05__SEGCTL1:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl1(cpu_env, arg);
             register_name = "SegCtl1";
             break;
-        case 4:
+        case CP0_REG05__SEGCTL2:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl2(cpu_env, arg);
             register_name = "SegCtl2";
             break;
-        case 5:
+        case CP0_REG05__PWBASE:
             check_pw(ctx);
             gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_PWBase));
             register_name = "PWBase";
             break;
-        case 6:
+        case CP0_REG05__PWFIELD:
             check_pw(ctx);
             gen_helper_mtc0_pwfield(cpu_env, arg);
             register_name = "PWField";
             break;
-        case 7:
+        case CP0_REG05__PWSIZE:
             check_pw(ctx);
             gen_helper_mtc0_pwsize(cpu_env, arg);
             register_name = "PWSize";
@@ -8534,41 +8534,41 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_05:
         switch (sel) {
-        case 0:
+        case CP0_REG05__PAGEMASK:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PageMask));
             register_name = "PageMask";
             break;
-        case 1:
+        case CP0_REG05__PAGEGRAIN:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PageGrain));
             register_name = "PageGrain";
             break;
-        case 2:
+        case CP0_REG05__SEGCTL0:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl0));
             register_name = "SegCtl0";
             break;
-        case 3:
+        case CP0_REG05__SEGCTL1:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl1));
             register_name = "SegCtl1";
             break;
-        case 4:
+        case CP0_REG05__SEGCTL2:
             CP0_CHECK(ctx->sc);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_SegCtl2));
             register_name = "SegCtl2";
             break;
-        case 5:
+        case CP0_REG05__PWBASE:
             check_pw(ctx);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWBase));
             register_name = "PWBase";
             break;
-        case 6:
+        case CP0_REG05__PWFIELD:
             check_pw(ctx);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWField));
             register_name = "PWField";
             break;
-        case 7:
+        case CP0_REG05__PWSIZE:
             check_pw(ctx);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWSize));
             register_name = "PWSize";
@@ -9255,41 +9255,41 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_05:
         switch (sel) {
-        case 0:
+        case CP0_REG05__PAGEMASK:
             gen_helper_mtc0_pagemask(cpu_env, arg);
             register_name = "PageMask";
             break;
-        case 1:
+        case CP0_REG05__PAGEGRAIN:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_pagegrain(cpu_env, arg);
             register_name = "PageGrain";
             break;
-        case 2:
+        case CP0_REG05__SEGCTL0:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl0(cpu_env, arg);
             register_name = "SegCtl0";
             break;
-        case 3:
+        case CP0_REG05__SEGCTL1:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl1(cpu_env, arg);
             register_name = "SegCtl1";
             break;
-        case 4:
+        case CP0_REG05__SEGCTL2:
             CP0_CHECK(ctx->sc);
             gen_helper_mtc0_segctl2(cpu_env, arg);
             register_name = "SegCtl2";
             break;
-        case 5:
+        case CP0_REG05__PWBASE:
             check_pw(ctx);
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_PWBase));
             register_name = "PWBase";
             break;
-        case 6:
+        case CP0_REG05__PWFIELD:
             check_pw(ctx);
             gen_helper_mtc0_pwfield(cpu_env, arg);
             register_name = "PWField";
             break;
-        case 7:
+        case CP0_REG05__PWSIZE:
             check_pw(ctx);
             gen_helper_mtc0_pwsize(cpu_env, arg);
             register_name = "PWSize";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 21/37] target/mips: Clean up handling of CP0 register 6
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (19 preceding siblings ...)
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 20/37] target/mips: Clean up handling of CP0 register 5 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 22/37] target/mips: Clean up handling of CP0 register 7 Aleksandar Markovic
                   ` (15 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 6.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  6 ++++++
 target/mips/translate.c | 56 ++++++++++++++++++++++++-------------------------
 2 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 2ab388b..c865b51 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -320,6 +320,12 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG05__PWSIZE          7
 /* CP0 Register 06 */
 #define CP0_REG06__WIRED           0
+#define CP0_REG06__SRSCONF0        1
+#define CP0_REG06__SRSCONF1        2
+#define CP0_REG06__SRSCONF2        3
+#define CP0_REG06__SRSCONF3        4
+#define CP0_REG06__SRSCONF4        5
+#define CP0_REG06__PWCTL           6
 /* CP0 Register 07 */
 #define CP0_REG07__HWRENA          0
 /* CP0 Register 08 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 9d1e315..cdcc1cc 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7090,36 +7090,36 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_06:
         switch (sel) {
-        case 0:
+        case CP0_REG06__WIRED:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Wired));
             register_name = "Wired";
             break;
-        case 1:
+        case CP0_REG06__SRSCONF0:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf0));
             register_name = "SRSConf0";
             break;
-        case 2:
+        case CP0_REG06__SRSCONF1:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf1));
             register_name = "SRSConf1";
             break;
-        case 3:
+        case CP0_REG06__SRSCONF2:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf2));
             register_name = "SRSConf2";
             break;
-        case 4:
+        case CP0_REG06__SRSCONF3:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf3));
             register_name = "SRSConf3";
             break;
-        case 5:
+        case CP0_REG06__SRSCONF4:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf4));
             register_name = "SRSConf4";
             break;
-        case 6:
+        case CP0_REG06__PWCTL:
             check_pw(ctx);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PWCtl));
             register_name = "PWCtl";
@@ -7829,36 +7829,36 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_06:
         switch (sel) {
-        case 0:
+        case CP0_REG06__WIRED:
             gen_helper_mtc0_wired(cpu_env, arg);
             register_name = "Wired";
             break;
-        case 1:
+        case CP0_REG06__SRSCONF0:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf0(cpu_env, arg);
             register_name = "SRSConf0";
             break;
-        case 2:
+        case CP0_REG06__SRSCONF1:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf1(cpu_env, arg);
             register_name = "SRSConf1";
             break;
-        case 3:
+        case CP0_REG06__SRSCONF2:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf2(cpu_env, arg);
             register_name = "SRSConf2";
             break;
-        case 4:
+        case CP0_REG06__SRSCONF3:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf3(cpu_env, arg);
             register_name = "SRSConf3";
             break;
-        case 5:
+        case CP0_REG06__SRSCONF4:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf4(cpu_env, arg);
             register_name = "SRSConf4";
             break;
-        case 6:
+        case CP0_REG06__PWCTL:
             check_pw(ctx);
             gen_helper_mtc0_pwctl(cpu_env, arg);
             register_name = "PWCtl";
@@ -8579,36 +8579,36 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_06:
         switch (sel) {
-        case 0:
+        case CP0_REG06__WIRED:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Wired));
             register_name = "Wired";
             break;
-        case 1:
+        case CP0_REG06__SRSCONF0:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf0));
             register_name = "SRSConf0";
             break;
-        case 2:
+        case CP0_REG06__SRSCONF1:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf1));
             register_name = "SRSConf1";
             break;
-        case 3:
+        case CP0_REG06__SRSCONF2:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf2));
             register_name = "SRSConf2";
             break;
-        case 4:
+        case CP0_REG06__SRSCONF3:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf3));
             register_name = "SRSConf3";
             break;
-        case 5:
+        case CP0_REG06__SRSCONF4:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSConf4));
             register_name = "SRSConf4";
             break;
-        case 6:
+        case CP0_REG06__PWCTL:
             check_pw(ctx);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PWCtl));
             register_name = "PWCtl";
@@ -9300,36 +9300,36 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_06:
         switch (sel) {
-        case 0:
+        case CP0_REG06__WIRED:
             gen_helper_mtc0_wired(cpu_env, arg);
             register_name = "Wired";
             break;
-        case 1:
+        case CP0_REG06__SRSCONF0:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf0(cpu_env, arg);
             register_name = "SRSConf0";
             break;
-        case 2:
+        case CP0_REG06__SRSCONF1:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf1(cpu_env, arg);
             register_name = "SRSConf1";
             break;
-        case 3:
+        case CP0_REG06__SRSCONF2:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf2(cpu_env, arg);
             register_name = "SRSConf2";
             break;
-        case 4:
+        case CP0_REG06__SRSCONF3:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf3(cpu_env, arg);
             register_name = "SRSConf3";
             break;
-        case 5:
+        case CP0_REG06__SRSCONF4:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsconf4(cpu_env, arg);
             register_name = "SRSConf4";
             break;
-        case 6:
+        case CP0_REG06__PWCTL:
             check_pw(ctx);
             gen_helper_mtc0_pwctl(cpu_env, arg);
             register_name = "PWCtl";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 22/37] target/mips: Clean up handling of CP0 register 7
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (20 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 21/37] target/mips: Clean up handling of CP0 register 6 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 23/37] target/mips: Clean up handling of CP0 register 8 Aleksandar Markovic
                   ` (14 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 7.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index cdcc1cc..abbb924 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7130,7 +7130,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_07:
         switch (sel) {
-        case 0:
+        case CP0_REG07__HWRENA:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_HWREna));
             register_name = "HWREna";
@@ -7869,7 +7869,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_07:
         switch (sel) {
-        case 0:
+        case CP0_REG07__HWRENA:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_hwrena(cpu_env, arg);
             ctx->base.is_jmp = DISAS_STOP;
@@ -8619,7 +8619,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_07:
         switch (sel) {
-        case 0:
+        case CP0_REG07__HWRENA:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_HWREna));
             register_name = "HWREna";
@@ -9340,7 +9340,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_07:
         switch (sel) {
-        case 0:
+        case CP0_REG07__HWRENA:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_hwrena(cpu_env, arg);
             ctx->base.is_jmp = DISAS_STOP;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 23/37] target/mips: Clean up handling of CP0 register 8
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (21 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 22/37] target/mips: Clean up handling of CP0 register 7 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 24/37] target/mips: Clean up handling of CP0 register 10 Aleksandar Markovic
                   ` (13 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 8.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  1 +
 target/mips/translate.c | 32 ++++++++++++++++----------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index c865b51..c7fdf1d 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -332,6 +332,7 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG08__BADVADDR        0
 #define CP0_REG08__BADINSTR        1
 #define CP0_REG08__BADINSTRP       2
+#define CP0_REG08__BADINSTRX       3
 /* CP0 Register 09 */
 #define CP0_REG09__COUNT           0
 #define CP0_REG09__SAARI           6
diff --git a/target/mips/translate.c b/target/mips/translate.c
index abbb924..c046a10 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7141,22 +7141,22 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_08:
         switch (sel) {
-        case 0:
+        case CP0_REG08__BADVADDR:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "BadVAddr";
             break;
-        case 1:
+        case CP0_REG08__BADINSTR:
             CP0_CHECK(ctx->bi);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstr));
             register_name = "BadInstr";
             break;
-        case 2:
+        case CP0_REG08__BADINSTRP:
             CP0_CHECK(ctx->bp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrP));
             register_name = "BadInstrP";
             break;
-        case 3:
+        case CP0_REG08__BADINSTRX:
             CP0_CHECK(ctx->bi);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrX));
             tcg_gen_andi_tl(arg, arg, ~0xffff);
@@ -7881,19 +7881,19 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_08:
         switch (sel) {
-        case 0:
+        case CP0_REG08__BADVADDR:
             /* ignored */
             register_name = "BadVAddr";
             break;
-        case 1:
+        case CP0_REG08__BADINSTR:
             /* ignored */
             register_name = "BadInstr";
             break;
-        case 2:
+        case CP0_REG08__BADINSTRP:
             /* ignored */
             register_name = "BadInstrP";
             break;
-        case 3:
+        case CP0_REG08__BADINSTRX:
             /* ignored */
             register_name = "BadInstrX";
             break;
@@ -8630,21 +8630,21 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_08:
         switch (sel) {
-        case 0:
+        case CP0_REG08__BADVADDR:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
             register_name = "BadVAddr";
             break;
-        case 1:
+        case CP0_REG08__BADINSTR:
             CP0_CHECK(ctx->bi);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstr));
             register_name = "BadInstr";
             break;
-        case 2:
+        case CP0_REG08__BADINSTRP:
             CP0_CHECK(ctx->bp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrP));
             register_name = "BadInstrP";
             break;
-        case 3:
+        case CP0_REG08__BADINSTRX:
             CP0_CHECK(ctx->bi);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_BadInstrX));
             tcg_gen_andi_tl(arg, arg, ~0xffff);
@@ -9352,19 +9352,19 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_08:
         switch (sel) {
-        case 0:
+        case CP0_REG08__BADVADDR:
             /* ignored */
             register_name = "BadVAddr";
             break;
-        case 1:
+        case CP0_REG08__BADINSTR:
             /* ignored */
             register_name = "BadInstr";
             break;
-        case 2:
+        case CP0_REG08__BADINSTRP:
             /* ignored */
             register_name = "BadInstrP";
             break;
-        case 3:
+        case CP0_REG08__BADINSTRX:
             /* ignored */
             register_name = "BadInstrX";
             break;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 24/37] target/mips: Clean up handling of CP0 register 10
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (22 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 23/37] target/mips: Clean up handling of CP0 register 8 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 25/37] target/mips: Clean up handling of CP0 register 11 Aleksandar Markovic
                   ` (12 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 10.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       | 1 +
 target/mips/translate.c | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index c7fdf1d..5e08b78 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -341,6 +341,7 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG10__ENTRYHI         0
 #define CP0_REG10__GUESTCTL1       4
 #define CP0_REG10__GUESTCTL2       5
+#define CP0_REG10__GUESTCTL3       6
 /* CP0 Register 11 */
 #define CP0_REG11__COMPARE         0
 #define CP0_REG11__GUESTCTL0EXT    4
diff --git a/target/mips/translate.c b/target/mips/translate.c
index c046a10..ac86655 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7202,7 +7202,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_10:
         switch (sel) {
-        case 0:
+        case CP0_REG10__ENTRYHI:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryHi));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "EntryHi";
@@ -7923,7 +7923,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_10:
         switch (sel) {
-        case 0:
+        case CP0_REG10__ENTRYHI:
             gen_helper_mtc0_entryhi(cpu_env, arg);
             register_name = "EntryHi";
             break;
@@ -8690,7 +8690,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_10:
         switch (sel) {
-        case 0:
+        case CP0_REG10__ENTRYHI:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EntryHi));
             register_name = "EntryHi";
             break;
@@ -9396,7 +9396,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_10:
         switch (sel) {
-        case 0:
+        case CP0_REG10__ENTRYHI:
             gen_helper_mtc0_entryhi(cpu_env, arg);
             register_name = "EntryHi";
             break;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 25/37] target/mips: Clean up handling of CP0 register 11
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (23 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 24/37] target/mips: Clean up handling of CP0 register 10 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 26/37] target/mips: Clean up handling of CP0 register 12 Aleksandar Markovic
                   ` (11 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 11.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index ac86655..07251a4 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7213,7 +7213,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_11:
         switch (sel) {
-        case 0:
+        case CP0_REG11__COMPARE:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Compare));
             register_name = "Compare";
             break;
@@ -7933,7 +7933,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_11:
         switch (sel) {
-        case 0:
+        case CP0_REG11__COMPARE:
             gen_helper_mtc0_compare(cpu_env, arg);
             register_name = "Compare";
             break;
@@ -8700,7 +8700,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_11:
         switch (sel) {
-        case 0:
+        case CP0_REG11__COMPARE:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Compare));
             register_name = "Compare";
             break;
@@ -9406,7 +9406,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_11:
         switch (sel) {
-        case 0:
+        case CP0_REG11__COMPARE:
             gen_helper_mtc0_compare(cpu_env, arg);
             register_name = "Compare";
             break;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 26/37] target/mips: Clean up handling of CP0 register 12
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (24 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 25/37] target/mips: Clean up handling of CP0 register 11 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 27/37] target/mips: Clean up handling of CP0 register 15 Aleksandar Markovic
                   ` (10 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 12.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  3 +++
 target/mips/translate.c | 32 ++++++++++++++++----------------
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 5e08b78..d61b8c0 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -349,6 +349,9 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG12__STATUS          0
 #define CP0_REG12__INTCTL          1
 #define CP0_REG12__SRSCTL          2
+#define CP0_REG12__SRSMAP          3
+#define CP0_REG12__VIEW_IPL        4
+#define CP0_REG12__SRSMAP2         5
 #define CP0_REG12__GUESTCTL0       6
 #define CP0_REG12__GTOFFSET        7
 /* CP0 Register 13 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 07251a4..863bd39 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7224,21 +7224,21 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_12:
         switch (sel) {
-        case 0:
+        case CP0_REG12__STATUS:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Status));
             register_name = "Status";
             break;
-        case 1:
+        case CP0_REG12__INTCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_IntCtl));
             register_name = "IntCtl";
             break;
-        case 2:
+        case CP0_REG12__SRSCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSCtl));
             register_name = "SRSCtl";
             break;
-        case 3:
+        case CP0_REG12__SRSMAP:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSMap));
             register_name = "SRSMap";
@@ -7944,7 +7944,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_12:
         switch (sel) {
-        case 0:
+        case CP0_REG12__STATUS:
             save_cpu_state(ctx, 1);
             gen_helper_mtc0_status(cpu_env, arg);
             /* DISAS_STOP isn't good enough here, hflags may have changed. */
@@ -7952,21 +7952,21 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             ctx->base.is_jmp = DISAS_EXIT;
             register_name = "Status";
             break;
-        case 1:
+        case CP0_REG12__INTCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_intctl(cpu_env, arg);
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "IntCtl";
             break;
-        case 2:
+        case CP0_REG12__SRSCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsctl(cpu_env, arg);
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "SRSCtl";
             break;
-        case 3:
+        case CP0_REG12__SRSMAP:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_SRSMap));
             /* Stop translation as we may have switched the execution mode */
@@ -8711,21 +8711,21 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_12:
         switch (sel) {
-        case 0:
+        case CP0_REG12__STATUS:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Status));
             register_name = "Status";
             break;
-        case 1:
+        case CP0_REG12__INTCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_IntCtl));
             register_name = "IntCtl";
             break;
-        case 2:
+        case CP0_REG12__SRSCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSCtl));
             register_name = "SRSCtl";
             break;
-        case 3:
+        case CP0_REG12__SRSMAP:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_SRSMap));
             register_name = "SRSMap";
@@ -9419,7 +9419,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_12:
         switch (sel) {
-        case 0:
+        case CP0_REG12__STATUS:
             save_cpu_state(ctx, 1);
             gen_helper_mtc0_status(cpu_env, arg);
             /* DISAS_STOP isn't good enough here, hflags may have changed. */
@@ -9427,21 +9427,21 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
             ctx->base.is_jmp = DISAS_EXIT;
             register_name = "Status";
             break;
-        case 1:
+        case CP0_REG12__INTCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_intctl(cpu_env, arg);
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "IntCtl";
             break;
-        case 2:
+        case CP0_REG12__SRSCTL:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_srsctl(cpu_env, arg);
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "SRSCtl";
             break;
-        case 3:
+        case CP0_REG12__SRSMAP:
             check_insn(ctx, ISA_MIPS32R2);
             gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_SRSMap));
             /* Stop translation as we may have switched the execution mode */
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 27/37] target/mips: Clean up handling of CP0 register 15
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (25 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 26/37] target/mips: Clean up handling of CP0 register 12 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 28/37] target/mips: Clean up handling of CP0 register 16 Aleksandar Markovic
                   ` (9 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 15.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  1 +
 target/mips/translate.c | 20 ++++++++++----------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index d61b8c0..3a8c560 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -363,6 +363,7 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG15__EBASE           1
 #define CP0_REG15__CDMMBASE        2
 #define CP0_REG15__CMGCRBASE       3
+#define CP0_REG15__BEVVA           4
 /* CP0 Register 16 */
 #define CP0_REG16__CONFIG          0
 #define CP0_REG16__CONFIG1         1
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 863bd39..9d3996d 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7270,17 +7270,17 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_15:
         switch (sel) {
-        case 0:
+        case CP0_REG15__PRID:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PRid));
             register_name = "PRid";
             break;
-        case 1:
+        case CP0_REG15__EBASE:
             check_insn(ctx, ISA_MIPS32R2);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EBase));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "EBase";
             break;
-        case 3:
+        case CP0_REG15__CMGCRBASE:
             check_insn(ctx, ISA_MIPS32R2);
             CP0_CHECK(ctx->cmgcr);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
@@ -8007,11 +8007,11 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_15:
         switch (sel) {
-        case 0:
+        case CP0_REG15__PRID:
             /* ignored */
             register_name = "PRid";
             break;
-        case 1:
+        case CP0_REG15__EBASE:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_ebase(cpu_env, arg);
             register_name = "EBase";
@@ -8756,16 +8756,16 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_15:
         switch (sel) {
-        case 0:
+        case CP0_REG15__PRID:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_PRid));
             register_name = "PRid";
             break;
-        case 1:
+        case CP0_REG15__EBASE:
             check_insn(ctx, ISA_MIPS32R2);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_EBase));
             register_name = "EBase";
             break;
-        case 3:
+        case CP0_REG15__CMGCRBASE:
             check_insn(ctx, ISA_MIPS32R2);
             CP0_CHECK(ctx->cmgcr);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_CMGCRBase));
@@ -9482,11 +9482,11 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_15:
         switch (sel) {
-        case 0:
+        case CP0_REG15__PRID:
             /* ignored */
             register_name = "PRid";
             break;
-        case 1:
+        case CP0_REG15__EBASE:
             check_insn(ctx, ISA_MIPS32R2);
             gen_helper_mtc0_ebase(cpu_env, arg);
             register_name = "EBase";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 28/37] target/mips: Clean up handling of CP0 register 16
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (26 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 27/37] target/mips: Clean up handling of CP0 register 15 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 29/37] target/mips: Clean up handling of CP0 register 17 Aleksandar Markovic
                   ` (8 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 16.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  3 ++-
 target/mips/translate.c | 60 ++++++++++++++++++++++++-------------------------
 2 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 3a8c560..625d364 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -371,7 +371,8 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG16__CONFIG3         3
 #define CP0_REG16__CONFIG4         4
 #define CP0_REG16__CONFIG5         5
-#define CP0_REG00__CONFIG7         7
+#define CP0_REG16__CONFIG6         6
+#define CP0_REG16__CONFIG7         7
 /* CP0 Register 17 */
 #define CP0_REG17__LLADDR          0
 #define CP0_REG17__MAAR            1
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 9d3996d..729b84d 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7293,36 +7293,36 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_16:
         switch (sel) {
-        case 0:
+        case CP0_REG16__CONFIG:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config0));
             register_name = "Config";
             break;
-        case 1:
+        case CP0_REG16__CONFIG1:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config1));
             register_name = "Config1";
             break;
-        case 2:
+        case CP0_REG16__CONFIG2:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config2));
             register_name = "Config2";
             break;
-        case 3:
+        case CP0_REG16__CONFIG3:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config3));
             register_name = "Config3";
             break;
-        case 4:
+        case CP0_REG16__CONFIG4:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config4));
             register_name = "Config4";
             break;
-        case 5:
+        case CP0_REG16__CONFIG5:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config5));
             register_name = "Config5";
             break;
         /* 6,7 are implementation dependent */
-        case 6:
+        case CP0_REG16__CONFIG6:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config6));
             register_name = "Config6";
             break;
-        case 7:
+        case CP0_REG16__CONFIG7:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config7));
             register_name = "Config7";
             break;
@@ -8022,45 +8022,45 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_16:
         switch (sel) {
-        case 0:
+        case CP0_REG16__CONFIG:
             gen_helper_mtc0_config0(cpu_env, arg);
             register_name = "Config";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 1:
+        case CP0_REG16__CONFIG1:
             /* ignored, read only */
             register_name = "Config1";
             break;
-        case 2:
+        case CP0_REG16__CONFIG2:
             gen_helper_mtc0_config2(cpu_env, arg);
             register_name = "Config2";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 3:
+        case CP0_REG16__CONFIG3:
             gen_helper_mtc0_config3(cpu_env, arg);
             register_name = "Config3";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 4:
+        case CP0_REG16__CONFIG4:
             gen_helper_mtc0_config4(cpu_env, arg);
             register_name = "Config4";
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 5:
+        case CP0_REG16__CONFIG5:
             gen_helper_mtc0_config5(cpu_env, arg);
             register_name = "Config5";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
         /* 6,7 are implementation dependent */
-        case 6:
+        case CP0_REG16__CONFIG6:
             /* ignored */
             register_name = "Config6";
             break;
-        case 7:
+        case CP0_REG16__CONFIG7:
             /* ignored */
             register_name = "Config7";
             break;
@@ -8777,36 +8777,36 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_16:
         switch (sel) {
-        case 0:
+        case CP0_REG16__CONFIG:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config0));
             register_name = "Config";
             break;
-        case 1:
+        case CP0_REG16__CONFIG1:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config1));
             register_name = "Config1";
             break;
-        case 2:
+        case CP0_REG16__CONFIG2:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config2));
             register_name = "Config2";
             break;
-        case 3:
+        case CP0_REG16__CONFIG3:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config3));
             register_name = "Config3";
             break;
-        case 4:
+        case CP0_REG16__CONFIG4:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config4));
             register_name = "Config4";
             break;
-        case 5:
+        case CP0_REG16__CONFIG5:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config5));
             register_name = "Config5";
             break;
        /* 6,7 are implementation dependent */
-        case 6:
+        case CP0_REG16__CONFIG6:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config6));
             register_name = "Config6";
             break;
-        case 7:
+        case CP0_REG16__CONFIG7:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_Config7));
             register_name = "Config7";
             break;
@@ -9497,33 +9497,33 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_16:
         switch (sel) {
-        case 0:
+        case CP0_REG16__CONFIG:
             gen_helper_mtc0_config0(cpu_env, arg);
             register_name = "Config";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 1:
+        case CP0_REG16__CONFIG1:
             /* ignored, read only */
             register_name = "Config1";
             break;
-        case 2:
+        case CP0_REG16__CONFIG2:
             gen_helper_mtc0_config2(cpu_env, arg);
             register_name = "Config2";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 3:
+        case CP0_REG16__CONFIG3:
             gen_helper_mtc0_config3(cpu_env, arg);
             register_name = "Config3";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             break;
-        case 4:
+        case CP0_REG16__CONFIG4:
             /* currently ignored */
             register_name = "Config4";
             break;
-        case 5:
+        case CP0_REG16__CONFIG5:
             gen_helper_mtc0_config5(cpu_env, arg);
             register_name = "Config5";
             /* Stop translation as we may have switched the execution mode */
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 29/37] target/mips: Clean up handling of CP0 register 17
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (27 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 28/37] target/mips: Clean up handling of CP0 register 16 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 30/37] target/mips: Clean up handling of CP0 register 20 Aleksandar Markovic
                   ` (7 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 17.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index 729b84d..ed6d567 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -6671,12 +6671,12 @@ static void gen_mfhc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             gen_mfhc0_load64(arg, offsetof(CPUMIPSState, CP0_LLAddr),
                              ctx->CP0_LLAddr_shift);
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_mfhc0_maar(arg, cpu_env);
             register_name = "MAAR";
@@ -6772,7 +6772,7 @@ static void gen_mthc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             /*
              * LLAddr is read-only (the only exception is bit 0 if LLB is
              * supported); the CP0_LLAddr_rw_bitmask does not seem to be
@@ -6781,7 +6781,7 @@ static void gen_mthc0(DisasContext *ctx, TCGv arg, int reg, int sel)
              */
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_mthc0_maar(cpu_env, arg);
             register_name = "MAAR";
@@ -7332,16 +7332,16 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             gen_helper_mfc0_lladdr(arg, cpu_env);
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_mfc0_maar(arg, cpu_env);
             register_name = "MAAR";
             break;
-        case 2:
+        case CP0_REG17__MAARI:
             CP0_CHECK(ctx->mrp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_MAARI));
             register_name = "MAARI";
@@ -8071,16 +8071,16 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             gen_helper_mtc0_lladdr(cpu_env, arg);
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_mtc0_maar(cpu_env, arg);
             register_name = "MAAR";
             break;
-        case 2:
+        case CP0_REG17__MAARI:
             CP0_CHECK(ctx->mrp);
             gen_helper_mtc0_maari(cpu_env, arg);
             register_name = "MAARI";
@@ -8816,16 +8816,16 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             gen_helper_dmfc0_lladdr(arg, cpu_env);
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_dmfc0_maar(arg, cpu_env);
             register_name = "MAAR";
             break;
-        case 2:
+        case CP0_REG17__MAARI:
             CP0_CHECK(ctx->mrp);
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_MAARI));
             register_name = "MAARI";
@@ -9537,16 +9537,16 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_17:
         switch (sel) {
-        case 0:
+        case CP0_REG17__LLADDR:
             gen_helper_mtc0_lladdr(cpu_env, arg);
             register_name = "LLAddr";
             break;
-        case 1:
+        case CP0_REG17__MAAR:
             CP0_CHECK(ctx->mrp);
             gen_helper_mtc0_maar(cpu_env, arg);
             register_name = "MAAR";
             break;
-        case 2:
+        case CP0_REG17__MAARI:
             CP0_CHECK(ctx->mrp);
             gen_helper_mtc0_maari(cpu_env, arg);
             register_name = "MAARI";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 30/37] target/mips: Clean up handling of CP0 register 20
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (28 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 29/37] target/mips: Clean up handling of CP0 register 17 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 31/37] target/mips: Clean up handling of CP0 register 23 Aleksandar Markovic
                   ` (6 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 20.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index ed6d567..0ef29b9 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7388,7 +7388,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_20:
         switch (sel) {
-        case 0:
+        case CP0_REG20__XCONTEXT:
 #if defined(TARGET_MIPS64)
             check_insn(ctx, ISA_MIPS3);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_XContext));
@@ -8127,7 +8127,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_20:
         switch (sel) {
-        case 0:
+        case CP0_REG20__XCONTEXT:
 #if defined(TARGET_MIPS64)
             check_insn(ctx, ISA_MIPS3);
             gen_helper_mtc0_xcontext(cpu_env, arg);
@@ -8872,7 +8872,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_20:
         switch (sel) {
-        case 0:
+        case CP0_REG20__XCONTEXT:
             check_insn(ctx, ISA_MIPS3);
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_XContext));
             register_name = "XContext";
@@ -9593,7 +9593,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_20:
         switch (sel) {
-        case 0:
+        case CP0_REG20__XCONTEXT:
             check_insn(ctx, ISA_MIPS3);
             gen_helper_mtc0_xcontext(cpu_env, arg);
             register_name = "XContext";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 31/37] target/mips: Clean up handling of CP0 register 23
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (29 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 30/37] target/mips: Clean up handling of CP0 register 20 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 32/37] target/mips: Clean up handling of CP0 register 24 Aleksandar Markovic
                   ` (5 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 23.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |   6 +++
 target/mips/translate.c | 126 +++++++++++++++++++++++++++++++-----------------
 2 files changed, 89 insertions(+), 43 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 625d364..64dddd0 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -393,6 +393,12 @@ typedef struct mips_def_t mips_def_t;
 /* CP0 Register 22 */
 /* CP0 Register 23 */
 #define CP0_REG23__DEBUG           0
+#define CP0_REG23__TRACECONTROL    1
+#define CP0_REG23__TRACECONTROL2   2
+#define CP0_REG23__USERTRACEDATA1  3
+#define CP0_REG23__TRACEIBPC       4
+#define CP0_REG23__TRACEDBPC       5
+#define CP0_REG23__DEBUG2          6
 /* CP0 Register 24 */
 #define CP0_REG24__DEPC            0
 /* CP0 Register 25 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index 0ef29b9..7e243f8 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7418,25 +7418,34 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_23:
         switch (sel) {
-        case 0:
+        case CP0_REG23__DEBUG:
             gen_helper_mfc0_debug(arg, cpu_env); /* EJTAG support */
             register_name = "Debug";
             break;
-        case 1:
-//            gen_helper_mfc0_tracecontrol(arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL:
+            /* PDtrace support */
+            /* gen_helper_mfc0_tracecontrol(arg);  */
             register_name = "TraceControl";
             goto cp0_unimplemented;
-        case 2:
-//            gen_helper_mfc0_tracecontrol2(arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL2:
+            /* PDtrace support */
+            /* gen_helper_mfc0_tracecontrol2(arg); */
             register_name = "TraceControl2";
             goto cp0_unimplemented;
-        case 3:
-//            gen_helper_mfc0_usertracedata(arg); /* PDtrace support */
-            register_name = "UserTraceData";
+        case CP0_REG23__USERTRACEDATA1:
+            /* PDtrace support */
+            /* gen_helper_mfc0_usertracedata1(arg);*/
+            register_name = "UserTraceData1";
             goto cp0_unimplemented;
-        case 4:
-//            gen_helper_mfc0_tracebpc(arg); /* PDtrace support */
-            register_name = "TraceBPC";
+        case CP0_REG23__TRACEIBPC:
+            /* PDtrace support */
+            /* gen_helper_mfc0_traceibpc(arg);     */
+            register_name = "TraceIBPC";
+            goto cp0_unimplemented;
+        case CP0_REG23__TRACEDBPC:
+            /* PDtrace support */
+            /* gen_helper_mfc0_tracedbpc(arg);     */
+            register_name = "TraceDBPC";
             goto cp0_unimplemented;
         default:
             goto cp0_unimplemented;
@@ -8156,38 +8165,49 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_23:
         switch (sel) {
-        case 0:
+        case CP0_REG23__DEBUG:
             gen_helper_mtc0_debug(cpu_env, arg); /* EJTAG support */
             /* DISAS_STOP isn't good enough here, hflags may have changed. */
             gen_save_pc(ctx->base.pc_next + 4);
             ctx->base.is_jmp = DISAS_EXIT;
             register_name = "Debug";
             break;
-        case 1:
-//            gen_helper_mtc0_tracecontrol(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracecontrol(cpu_env, arg);  */
             register_name = "TraceControl";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             goto cp0_unimplemented;
-        case 2:
-//            gen_helper_mtc0_tracecontrol2(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL2:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracecontrol2(cpu_env, arg); */
             register_name = "TraceControl2";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             goto cp0_unimplemented;
-        case 3:
+        case CP0_REG23__USERTRACEDATA1:
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
-//            gen_helper_mtc0_usertracedata(cpu_env, arg); /* PDtrace support */
+            /* PDtrace support */
+            /* gen_helper_mtc0_usertracedata1(cpu_env, arg);*/
             register_name = "UserTraceData";
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             goto cp0_unimplemented;
-        case 4:
-//            gen_helper_mtc0_tracebpc(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACEIBPC:
+            /* PDtrace support */
+            /* gen_helper_mtc0_traceibpc(cpu_env, arg);     */
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
-            register_name = "TraceBPC";
+            register_name = "TraceIBPC";
+            goto cp0_unimplemented;
+        case CP0_REG23__TRACEDBPC:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracedbpc(cpu_env, arg);     */
+            /* Stop translation as we may have switched the execution mode */
+            ctx->base.is_jmp = DISAS_STOP;
+            register_name = "TraceDBPC";
             goto cp0_unimplemented;
         default:
             goto cp0_unimplemented;
@@ -8899,25 +8919,34 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_23:
         switch (sel) {
-        case 0:
+        case CP0_REG23__DEBUG:
             gen_helper_mfc0_debug(arg, cpu_env); /* EJTAG support */
             register_name = "Debug";
             break;
-        case 1:
-//            gen_helper_dmfc0_tracecontrol(arg, cpu_env); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL:
+            /* PDtrace support */
+            /* gen_helper_dmfc0_tracecontrol(arg, cpu_env);  */
             register_name = "TraceControl";
             goto cp0_unimplemented;
-        case 2:
-//            gen_helper_dmfc0_tracecontrol2(arg, cpu_env); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL2:
+            /* PDtrace support */
+            /* gen_helper_dmfc0_tracecontrol2(arg, cpu_env); */
             register_name = "TraceControl2";
             goto cp0_unimplemented;
-        case 3:
-//            gen_helper_dmfc0_usertracedata(arg, cpu_env); /* PDtrace support */
-            register_name = "UserTraceData";
+        case CP0_REG23__USERTRACEDATA1:
+            /* PDtrace support */
+            /* gen_helper_dmfc0_usertracedata1(arg, cpu_env);*/
+            register_name = "UserTraceData1";
             goto cp0_unimplemented;
-        case 4:
-//            gen_helper_dmfc0_tracebpc(arg, cpu_env); /* PDtrace support */
-            register_name = "TraceBPC";
+        case CP0_REG23__TRACEIBPC:
+            /* PDtrace support */
+            /* gen_helper_dmfc0_traceibpc(arg, cpu_env);     */
+            register_name = "TraceIBPC";
+            goto cp0_unimplemented;
+        case CP0_REG23__TRACEDBPC:
+            /* PDtrace support */
+            /* gen_helper_dmfc0_tracedbpc(arg, cpu_env);     */
+            register_name = "TraceDBPC";
             goto cp0_unimplemented;
         default:
             goto cp0_unimplemented;
@@ -9620,36 +9649,47 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_23:
         switch (sel) {
-        case 0:
+        case CP0_REG23__DEBUG:
             gen_helper_mtc0_debug(cpu_env, arg); /* EJTAG support */
             /* DISAS_STOP isn't good enough here, hflags may have changed. */
             gen_save_pc(ctx->base.pc_next + 4);
             ctx->base.is_jmp = DISAS_EXIT;
             register_name = "Debug";
             break;
-        case 1:
-//            gen_helper_mtc0_tracecontrol(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracecontrol(cpu_env, arg);  */
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "TraceControl";
             goto cp0_unimplemented;
-        case 2:
-//            gen_helper_mtc0_tracecontrol2(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACECONTROL2:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracecontrol2(cpu_env, arg); */
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "TraceControl2";
             goto cp0_unimplemented;
-        case 3:
-//            gen_helper_mtc0_usertracedata(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__USERTRACEDATA1:
+            /* PDtrace support */
+            /* gen_helper_mtc0_usertracedata1(cpu_env, arg);*/
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
-            register_name = "UserTraceData";
+            register_name = "UserTraceData1";
             goto cp0_unimplemented;
-        case 4:
-//            gen_helper_mtc0_tracebpc(cpu_env, arg); /* PDtrace support */
+        case CP0_REG23__TRACEIBPC:
+            /* PDtrace support */
+            /* gen_helper_mtc0_traceibpc(cpu_env, arg);     */
+            /* Stop translation as we may have switched the execution mode */
+            ctx->base.is_jmp = DISAS_STOP;
+            register_name = "TraceIBPC";
+            goto cp0_unimplemented;
+        case CP0_REG23__TRACEDBPC:
+            /* PDtrace support */
+            /* gen_helper_mtc0_tracedbpc(cpu_env, arg);     */
             /* Stop translation as we may have switched the execution mode */
             ctx->base.is_jmp = DISAS_STOP;
-            register_name = "TraceBPC";
+            register_name = "TraceDBPC";
             goto cp0_unimplemented;
         default:
             goto cp0_unimplemented;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 32/37] target/mips: Clean up handling of CP0 register 24
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (30 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 31/37] target/mips: Clean up handling of CP0 register 23 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 33/37] target/mips: Clean up handling of CP0 register 26 Aleksandar Markovic
                   ` (4 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 24.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index 7e243f8..a3a9d34 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7453,7 +7453,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_24:
         switch (sel) {
-        case 0:
+        case CP0_REG24__DEPC:
             /* EJTAG support */
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
             tcg_gen_ext32s_tl(arg, arg);
@@ -8215,7 +8215,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_24:
         switch (sel) {
-        case 0:
+        case CP0_REG24__DEPC:
             /* EJTAG support */
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
             register_name = "DEPC";
@@ -8954,7 +8954,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_24:
         switch (sel) {
-        case 0:
+        case CP0_REG24__DEPC:
             /* EJTAG support */
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
             register_name = "DEPC";
@@ -9697,7 +9697,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_24:
         switch (sel) {
-        case 0:
+        case CP0_REG24__DEPC:
             /* EJTAG support */
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_DEPC));
             register_name = "DEPC";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 33/37] target/mips: Clean up handling of CP0 register 26
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (31 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 32/37] target/mips: Clean up handling of CP0 register 24 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 34/37] target/mips: Clean up handling of CP0 register 30 Aleksandar Markovic
                   ` (3 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 26.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       | 2 +-
 target/mips/translate.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index 64dddd0..ef40552 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -411,7 +411,7 @@ typedef struct mips_def_t mips_def_t;
 #define CP0_REG25__PERFCTL3        6
 #define CP0_REG25__PERFCNT3        7
 /* CP0 Register 26 */
-#define CP0_REG00__ERRCTL          0
+#define CP0_REG26__ERRCTL          0
 /* CP0 Register 27 */
 #define CP0_REG27__CACHERR         0
 /* CP0 Register 28 */
diff --git a/target/mips/translate.c b/target/mips/translate.c
index a3a9d34..9025a50 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7503,7 +7503,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_26:
         switch (sel) {
-        case 0:
+        case CP0_REG26__ERRCTL:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_ErrCtl));
             register_name = "ErrCtl";
             break;
@@ -8264,7 +8264,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
        break;
     case CP0_REGISTER_26:
         switch (sel) {
-        case 0:
+        case CP0_REG26__ERRCTL:
             gen_helper_mtc0_errctl(cpu_env, arg);
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "ErrCtl";
@@ -9003,7 +9003,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_26:
         switch (sel) {
-        case 0:
+        case CP0_REG26__ERRCTL:
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_ErrCtl));
             register_name = "ErrCtl";
             break;
@@ -9746,7 +9746,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_26:
         switch (sel) {
-        case 0:
+        case CP0_REG26__ERRCTL:
             gen_helper_mtc0_errctl(cpu_env, arg);
             ctx->base.is_jmp = DISAS_STOP;
             register_name = "ErrCtl";
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 34/37] target/mips: Clean up handling of CP0 register 30
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (32 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 33/37] target/mips: Clean up handling of CP0 register 26 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 35/37] target/mips: Clean up handling of CP0 register 31 Aleksandar Markovic
                   ` (2 subsequent siblings)
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 30.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/translate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index 9025a50..a8bd08a 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7571,7 +7571,7 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_30:
         switch (sel) {
-        case 0:
+        case CP0_REG30__ERROREPC:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
             tcg_gen_ext32s_tl(arg, arg);
             register_name = "ErrorEPC";
@@ -8329,7 +8329,7 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
        break;
     case CP0_REGISTER_30:
         switch (sel) {
-        case 0:
+        case CP0_REG30__ERROREPC:
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
             register_name = "ErrorEPC";
             break;
@@ -9067,7 +9067,7 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_30:
         switch (sel) {
-        case 0:
+        case CP0_REG30__ERROREPC:
             tcg_gen_ld_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
             register_name = "ErrorEPC";
             break;
@@ -9811,7 +9811,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_30:
         switch (sel) {
-        case 0:
+        case CP0_REG30__ERROREPC:
             tcg_gen_st_tl(arg, cpu_env, offsetof(CPUMIPSState, CP0_ErrorEPC));
             register_name = "ErrorEPC";
             break;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 35/37] target/mips: Clean up handling of CP0 register 31
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (33 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 34/37] target/mips: Clean up handling of CP0 register 30 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info Aleksandar Markovic
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests Aleksandar Markovic
  36 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

Clean up handling of CP0 register 31.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 target/mips/cpu.h       |  2 +-
 target/mips/translate.c | 56 ++++++++++++++++++++++++-------------------------
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index ef40552..46ffb84 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -592,7 +592,6 @@ struct CPUMIPSState {
  * CP0 Register 4
  */
     target_ulong CP0_Context;
-    target_ulong CP0_KScratch[MIPS_KSCRATCH_NUM];
     int32_t CP0_MemoryMapID;
 /*
  * CP0 Register 5
@@ -1003,6 +1002,7 @@ struct CPUMIPSState {
  * CP0 Register 31
  */
     int32_t CP0_DESAVE;
+    target_ulong CP0_KScratch[MIPS_KSCRATCH_NUM];
 
     /* We waste some space so we can handle shadow registers like TCs. */
     TCState tcs[MIPS_SHADOW_SET_MAX];
diff --git a/target/mips/translate.c b/target/mips/translate.c
index a8bd08a..1aa5338 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -7582,17 +7582,17 @@ static void gen_mfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_31:
         switch (sel) {
-        case 0:
+        case CP0_REG31__DESAVE:
             /* EJTAG support */
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
             register_name = "DESAVE";
             break;
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
+        case CP0_REG31__KSCRATCH1:
+        case CP0_REG31__KSCRATCH2:
+        case CP0_REG31__KSCRATCH3:
+        case CP0_REG31__KSCRATCH4:
+        case CP0_REG31__KSCRATCH5:
+        case CP0_REG31__KSCRATCH6:
             CP0_CHECK(ctx->kscrexist & (1 << sel));
             tcg_gen_ld_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
@@ -8339,17 +8339,17 @@ static void gen_mtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_31:
         switch (sel) {
-        case 0:
+        case CP0_REG31__DESAVE:
             /* EJTAG support */
             gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
             register_name = "DESAVE";
             break;
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
+        case CP0_REG31__KSCRATCH1:
+        case CP0_REG31__KSCRATCH2:
+        case CP0_REG31__KSCRATCH3:
+        case CP0_REG31__KSCRATCH4:
+        case CP0_REG31__KSCRATCH5:
+        case CP0_REG31__KSCRATCH6:
             CP0_CHECK(ctx->kscrexist & (1 << sel));
             tcg_gen_st_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
@@ -9077,17 +9077,17 @@ static void gen_dmfc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_31:
         switch (sel) {
-        case 0:
+        case CP0_REG31__DESAVE:
             /* EJTAG support */
             gen_mfc0_load32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
             register_name = "DESAVE";
             break;
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
+        case CP0_REG31__KSCRATCH1:
+        case CP0_REG31__KSCRATCH2:
+        case CP0_REG31__KSCRATCH3:
+        case CP0_REG31__KSCRATCH4:
+        case CP0_REG31__KSCRATCH5:
+        case CP0_REG31__KSCRATCH6:
             CP0_CHECK(ctx->kscrexist & (1 << sel));
             tcg_gen_ld_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
@@ -9821,17 +9821,17 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
         break;
     case CP0_REGISTER_31:
         switch (sel) {
-        case 0:
+        case CP0_REG31__DESAVE:
             /* EJTAG support */
             gen_mtc0_store32(arg, offsetof(CPUMIPSState, CP0_DESAVE));
             register_name = "DESAVE";
             break;
-        case 2:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
+        case CP0_REG31__KSCRATCH1:
+        case CP0_REG31__KSCRATCH2:
+        case CP0_REG31__KSCRATCH3:
+        case CP0_REG31__KSCRATCH4:
+        case CP0_REG31__KSCRATCH5:
+        case CP0_REG31__KSCRATCH6:
             CP0_CHECK(ctx->kscrexist & (1 << sel));
             tcg_gen_st_tl(arg, cpu_env,
                           offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (34 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 35/37] target/mips: Clean up handling of CP0 register 31 Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 14:49   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests Aleksandar Markovic
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

There is a need for printing input and output data for failure cases,
for debugging purpose. This is achieved by this patch, and only if a
preprocessor constant is manually set to 1. (Assumption is that the
need for such printout is relatively rare.)

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 tests/tcg/mips/include/test_utils_128.h | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/tests/tcg/mips/include/test_utils_128.h b/tests/tcg/mips/include/test_utils_128.h
index 2fea610..0dd3868 100644
--- a/tests/tcg/mips/include/test_utils_128.h
+++ b/tests/tcg/mips/include/test_utils_128.h
@@ -27,7 +27,8 @@
 #include <inttypes.h>
 #include <string.h>
 
-#define PRINT_RESULTS 0
+#define PRINT_RESULTS    0
+#define PRINT_FAILURES   0
 
 
 static inline int32_t check_results_128(const char *isa_ase_name,
@@ -65,6 +66,26 @@ static inline int32_t check_results_128(const char *isa_ase_name,
             (b128_result[2 * i + 1] == b128_expect[2 * i + 1])) {
             pass_count++;
         } else {
+#if PRINT_FAILURES
+            uint32_t ii;
+            uint64_t a, b;
+
+            printf("\n");
+
+            printf("FAILURE for test case %d!\n", i);
+
+            memcpy(&a, (b128_expect + 2 * i), 8);
+            memcpy(&b, (b128_expect + 2 * i + 1), 8);
+            printf("Expected result : { 0x%016llxULL, 0x%016llxULL, },\n",
+                   a, b);
+
+            memcpy(&a, (b128_result + 2 * i), 8);
+            memcpy(&b, (b128_result + 2 * i + 1), 8);
+            printf("Actual result   : { 0x%016llxULL, 0x%016llxULL, },\n",
+                   a, b);
+
+            printf("\n");
+#endif
             fail_count++;
         }
     }
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* [Qemu-devel] [PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests
  2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
                   ` (35 preceding siblings ...)
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info Aleksandar Markovic
@ 2019-08-19 12:08 ` Aleksandar Markovic
  2019-08-19 14:50   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  36 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 12:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: arikalo, philmd, amarkovic

From: Aleksandar Markovic <amarkovic@wavecomp.com>

At this moment, the only MIPS CPUs that are emulated in QEMU and
support MSA extension are R5600 (mips32r5), and I6400/I6500 (mips64r6).
Therefore, mips32r5 and mips64r6 are the only ISAs that could support
MSA in QEMU. This means mips32r6 currently do not make much sense, and
mips32r5 support for MSA tests is needed, which is done by this patch.

Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
---
 .../mips/user/ase/msa/test_msa_compile_32r5eb.sh   | 917 +++++++++++++++++++++
 .../mips/user/ase/msa/test_msa_compile_32r5el.sh   | 917 +++++++++++++++++++++
 .../mips/user/ase/msa/test_msa_compile_32r6eb.sh   | 643 ---------------
 .../mips/user/ase/msa/test_msa_compile_32r6el.sh   | 643 ---------------
 tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh | 371 +++++++++
 tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh | 371 +++++++++
 tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh | 371 ---------
 tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh | 371 ---------
 8 files changed, 2576 insertions(+), 2028 deletions(-)
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
 create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
 delete mode 100644 tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
 delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh

diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
new file mode 100755
index 0000000..940cabe
--- /dev/null
+++ b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
@@ -0,0 +1,917 @@
+
+#
+# Bit Count
+# ---------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_d_32r5eb
+
+#
+# Bit move
+# --------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bmnz_v_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bmz_v_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bsel_v_32r5eb
+
+#
+# Bit Set
+# -------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_d_32r5eb
+
+#
+# Fixed Multiply
+# --------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_madd_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_madd_q_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddr_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddr_q_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msub_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msub_q_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubr_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubr_q_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mul_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mul_q_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulr_q_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulr_q_w_32r5eb
+
+#
+# Float Max Min
+# -------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_d_32r5eb
+
+#
+# Int Add
+# -------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_d_32r5eb
+
+#
+# Int Average
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_d_32r5eb
+
+#
+# Int Compare
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_d_32r5eb
+
+#
+# Int Divide
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_d_32r5eb
+
+#
+# Int Dot Product
+# ---------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_d_32r5eb
+
+#
+# Int Max Min
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_d_32r5eb
+
+#
+# Int Modulo
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_d_32r5eb
+
+#
+# Int Multiply
+# ------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_d_32r5eb
+
+#
+# Int Subtract
+# ------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_d_32r5eb
+
+#
+# Interleave
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_d_32r5eb
+
+#
+# Logic
+# -----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_and_v.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_and_v_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_nor_v.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nor_v_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_or_v.c            \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_or_v_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_xor_v.c           \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_xor_v_32r5eb
+
+#
+# Move
+# ----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            move/test_msa_move_v.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_move_v_32r5eb
+
+#
+# Pack
+# ----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_d_32r5eb
+
+#
+# Shift
+# -----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_b.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_h.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_w.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_d.c          \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_d_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_b_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_h_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_w_32r5eb
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
+-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_d_32r5eb
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
new file mode 100755
index 0000000..048b30b
--- /dev/null
+++ b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
@@ -0,0 +1,917 @@
+
+#
+# Bit Count
+# ---------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nloc_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nlzc_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pcnt_d_32r5el
+
+#
+# Bit move
+# --------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsl_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_binsr_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bmnz_v_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bmz_v_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bsel_v_32r5el
+
+#
+# Bit Set
+# -------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bclr_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bneg_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_bset_d_32r5el
+
+#
+# Fixed Multiply
+# --------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_madd_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_madd_q_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddr_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddr_q_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msub_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msub_q_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubr_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubr_q_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mul_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mul_q_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulr_q_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulr_q_w_32r5el
+
+#
+# Float Max Min
+# -------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmax_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_fmin_d_32r5el
+
+#
+# Int Add
+# -------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_add_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_adds_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_addv_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hadd_u_d_32r5el
+
+#
+# Int Average
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ave_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_aver_u_d_32r5el
+
+#
+# Int Compare
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ceq_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_cle_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_clt_u_d_32r5el
+
+#
+# Int Divide
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_div_u_d_32r5el
+
+#
+# Int Dot Product
+# ---------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dotp_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpadd_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_dpsub_u_d_32r5el
+
+#
+# Int Max Min
+# -----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_max_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_a_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_min_u_d_32r5el
+
+#
+# Int Modulo
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mod_u_d_32r5el
+
+#
+# Int Multiply
+# ------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_maddv_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_msubv_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_mulv_d_32r5el
+
+#
+# Int Subtract
+# ------------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_asub_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_hsub_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subs_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsus_u_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subsuu_s_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_subv_d_32r5el
+
+#
+# Interleave
+# ----------
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvev_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvod_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvl_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_ilvr_d_32r5el
+
+#
+# Logic
+# -----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_and_v.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_and_v_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_nor_v.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_nor_v_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_or_v.c            \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_or_v_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_xor_v.c           \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_xor_v_32r5el
+
+#
+# Move
+# ----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            move/test_msa_move_v.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_move_v_32r5el
+
+#
+# Pack
+# ----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckev_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_pckod_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_vshf_d_32r5el
+
+#
+# Shift
+# -----
+#
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sll_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_sra_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srar_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_b.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_h.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_w.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_d.c          \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srl_d_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_b_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_h_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_w_32r5el
+/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
+-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
+      /tmp/test_msa_srlr_d_32r5el
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
deleted file mode 100755
index 2519213..0000000
--- a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
+++ /dev/null
@@ -1,643 +0,0 @@
-
-#
-# Bit Count
-# ---------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_d_32r6eb
-
-#
-# Bit move
-# --------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmnz_v_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmz_v_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bsel_v_32r6eb
-
-#
-# Bit Set
-# -------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_d_32r6eb
-
-#
-# Fixed Multiply
-# --------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_w_32r6eb
-
-#
-# Float Max Min
-# -------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_d_32r6eb
-
-#
-# Int Add
-# -------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_d_32r6eb
-
-#
-# Int Average
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_d_32r6eb
-
-#
-# Int Compare
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_d_32r6eb
-
-#
-# Int Divide
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_d_32r6eb
-
-#
-# Int Dot Product
-# ---------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_d_32r6eb
-
-#
-# Int Max Min
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_d_32r6eb
-
-#
-# Int Modulo
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_d_32r6eb
-
-#
-# Int Multiply
-# ------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_d_32r6eb
-
-#
-# Int Subtract
-# ------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_d_32r6eb
-
-#
-# Interleave
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_d_32r6eb
-
-#
-# Logic
-# -----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_and_v.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_and_v_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_nor_v.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nor_v_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_or_v.c            \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_or_v_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_xor_v.c           \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_xor_v_32r6eb
-
-#
-# Move
-# ----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            move/test_msa_move_v.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_move_v_32r6eb
-
-#
-# Pack
-# ----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_d_32r6eb
-
-#
-# Shift
-# -----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_b.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_h.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_w.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_d.c          \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_d_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_b_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_h_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_w_32r6eb
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
--EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_d_32r6eb
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
deleted file mode 100755
index 1e10ff7..0000000
--- a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
+++ /dev/null
@@ -1,643 +0,0 @@
-
-#
-# Bit Count
-# ---------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_d_32r6el
-
-#
-# Bit move
-# --------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmnz_v_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmz_v_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bsel_v_32r6el
-
-#
-# Bit Set
-# -------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_d_32r6el
-
-#
-# Fixed Multiply
-# --------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_w_32r6el
-
-#
-# Float Max Min
-# -------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_d_32r6el
-
-#
-# Int Add
-# -------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_d_32r6el
-
-#
-# Int Average
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_d_32r6el
-
-#
-# Int Compare
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_d_32r6el
-
-#
-# Int Divide
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_d_32r6el
-
-#
-# Int Dot Product
-# ---------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_d_32r6el
-
-#
-# Int Max Min
-# -----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_d_32r6el
-
-#
-# Int Modulo
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_d_32r6el
-
-#
-# Int Multiply
-# ------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_d_32r6el
-
-#
-# Int Subtract
-# ------------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_d_32r6el
-
-#
-# Interleave
-# ----------
-#
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_d_32r6el
-
-#
-# Logic
-# -----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_and_v.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_and_v_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_nor_v.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nor_v_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_or_v.c            \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_or_v_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_xor_v.c           \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_xor_v_32r6el
-
-#
-# Move
-# ----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            move/test_msa_move_v.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_move_v_32r6el
-
-#
-# Pack
-# ----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_d_32r6el
-
-#
-# Shift
-# -----
-#
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_b.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_h.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_w.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_d.c          \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_d_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_b_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_h_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_w_32r6el
-/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
--EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_d_32r6el
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
new file mode 100755
index 0000000..32dbf31
--- /dev/null
+++ b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
@@ -0,0 +1,371 @@
+PATH_TO_QEMU="../../../../../../mips-linux-user/qemu-mips"
+
+
+#
+# Bit Count
+# ---------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_d_32r5eb
+
+#
+# Bit move
+# --------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmnz_v_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmz_v_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bsel_v_32r5eb
+
+#
+# Bit Set
+# -------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_d_32r5eb
+
+#
+# Fixed Multiply
+# --------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_w_32r5eb
+
+#
+# Float Max Min
+# -------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_d_32r5eb
+
+#
+# Int Add
+# -------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_d_32r5eb
+
+#
+# Int Average
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_d_32r5eb
+
+#
+# Int Compare
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_d_32r5eb
+
+#
+# Int Divide
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_d_32r5eb
+
+#
+# Int Dot Product
+# ---------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_d_32r5eb
+
+#
+# Int Max Min
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_d_32r5eb
+
+#
+# Int Modulo
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_d_32r5eb
+
+#
+# Int Multiply
+# ------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_d_32r5eb
+
+#
+# Int Subtract
+# ------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_d_32r5eb
+
+#
+# Interleave
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_d_32r5eb
+
+#
+# Logic
+# -----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_and_v_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nor_v_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_or_v_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_xor_v_32r5eb
+
+#
+# Move
+# ----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_move_v_32r5eb
+
+#
+# Pack
+# ----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_d_32r5eb
+
+#
+# Shift
+# -----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_d_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_b_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_h_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_w_32r5eb
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_d_32r5eb
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
new file mode 100755
index 0000000..a2e6092
--- /dev/null
+++ b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
@@ -0,0 +1,371 @@
+PATH_TO_QEMU="../../../../../../mipsel-linux-user/qemu-mipsel"
+
+
+#
+# Bit Count
+# ---------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_d_32r5el
+
+#
+# Bit move
+# --------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmnz_v_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmz_v_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bsel_v_32r5el
+
+#
+# Bit Set
+# -------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_d_32r5el
+
+#
+# Fixed Multiply
+# --------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_w_32r5el
+
+#
+# Float Max Min
+# -------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_d_32r5el
+
+#
+# Int Add
+# -------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_d_32r5el
+
+#
+# Int Average
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_d_32r5el
+
+#
+# Int Compare
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_d_32r5el
+
+#
+# Int Divide
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_d_32r5el
+
+#
+# Int Dot Product
+# ---------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_d_32r5el
+
+#
+# Int Max Min
+# -----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_d_32r5el
+
+#
+# Int Modulo
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_d_32r5el
+
+#
+# Int Multiply
+# ------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_d_32r5el
+
+#
+# Int Subtract
+# ------------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_d_32r5el
+
+#
+# Interleave
+# ----------
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_d_32r5el
+
+#
+# Logic
+# -----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_and_v_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nor_v_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_or_v_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_xor_v_32r5el
+
+#
+# Move
+# ----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_move_v_32r5el
+
+#
+# Pack
+# ----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_d_32r5el
+
+#
+# Shift
+# -----
+#
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_d_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_b_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_h_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_w_32r5el
+$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_d_32r5el
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
deleted file mode 100644
index 6c95e45..0000000
--- a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
+++ /dev/null
@@ -1,371 +0,0 @@
-PATH_TO_QEMU="../../../../../../mips64-linux-user/qemu-mips64"
-
-
-#
-# Bit Count
-# ---------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_d_32r6eb
-
-#
-# Bit move
-# --------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmnz_v_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmz_v_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bsel_v_32r6eb
-
-#
-# Bit Set
-# -------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_d_32r6eb
-
-#
-# Fixed Multiply
-# --------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_w_32r6eb
-
-#
-# Float Max Min
-# -------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_d_32r6eb
-
-#
-# Int Add
-# -------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_d_32r6eb
-
-#
-# Int Average
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_d_32r6eb
-
-#
-# Int Compare
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_d_32r6eb
-
-#
-# Int Divide
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_d_32r6eb
-
-#
-# Int Dot Product
-# ---------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_d_32r6eb
-
-#
-# Int Max Min
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_d_32r6eb
-
-#
-# Int Modulo
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_d_32r6eb
-
-#
-# Int Multiply
-# ------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_d_32r6eb
-
-#
-# Int Subtract
-# ------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_d_32r6eb
-
-#
-# Interleave
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_d_32r6eb
-
-#
-# Logic
-# -----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_and_v_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nor_v_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_or_v_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_xor_v_32r6eb
-
-#
-# Move
-# ----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_move_v_32r6eb
-
-#
-# Pack
-# ----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_d_32r6eb
-
-#
-# Shift
-# -----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_d_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_b_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_h_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_w_32r6eb
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_d_32r6eb
diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh
deleted file mode 100755
index d4945da..0000000
--- a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh
+++ /dev/null
@@ -1,371 +0,0 @@
-PATH_TO_QEMU="../../../../../../mips64el-linux-user/qemu-mips64el"
-
-
-#
-# Bit Count
-# ---------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_d_32r6el
-
-#
-# Bit move
-# --------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmnz_v_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmz_v_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bsel_v_32r6el
-
-#
-# Bit Set
-# -------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_d_32r6el
-
-#
-# Fixed Multiply
-# --------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_w_32r6el
-
-#
-# Float Max Min
-# -------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_d_32r6el
-
-#
-# Int Add
-# -------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_d_32r6el
-
-#
-# Int Average
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_d_32r6el
-
-#
-# Int Compare
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_d_32r6el
-
-#
-# Int Divide
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_d_32r6el
-
-#
-# Int Dot Product
-# ---------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_d_32r6el
-
-#
-# Int Max Min
-# -----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_d_32r6el
-
-#
-# Int Modulo
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_d_32r6el
-
-#
-# Int Multiply
-# ------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_d_32r6el
-
-#
-# Int Subtract
-# ------------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_d_32r6el
-
-#
-# Interleave
-# ----------
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_d_32r6el
-
-#
-# Logic
-# -----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_and_v_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nor_v_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_or_v_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_xor_v_32r6el
-
-#
-# Move
-# ----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_move_v_32r6el
-
-#
-# Pack
-# ----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_d_32r6el
-
-#
-# Shift
-# -----
-#
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_d_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_b_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_h_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_w_32r6el
-$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_d_32r6el
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c Aleksandar Markovic
@ 2019-08-19 13:33   ` Thomas Huth
  2019-08-19 13:56     ` [Qemu-devel] [EXTERNAL]Re: " Aleksandar Markovic
  2019-08-19 14:40   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
  1 sibling, 1 reply; 55+ messages in thread
From: Thomas Huth @ 2019-08-19 13:33 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: arikalo, philmd, amarkovic

On 8/19/19 2:07 PM, Aleksandar Markovic wrote:
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
> 
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
> 
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  target/mips/helper.c | 98 ++++++++++++++++++++++++++++++++--------------------
>  1 file changed, 60 insertions(+), 38 deletions(-)
> 
> diff --git a/target/mips/helper.c b/target/mips/helper.c
> index 6e583d3..d7a2c77 100644
> --- a/target/mips/helper.c
> +++ b/target/mips/helper.c
> @@ -39,8 +39,8 @@ enum {
>  #if !defined(CONFIG_USER_ONLY)
>  
>  /* no MMU emulation */
> -int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> -                        target_ulong address, int rw, int access_type)
> +int no_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> +                       target_ulong address, int rw, int access_type)
>  {
>      *physical = address;
>      *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
> @@ -48,26 +48,28 @@ int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
>  }
>  
>  /* fixed mapping MMU emulation */
> -int fixed_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> -                           target_ulong address, int rw, int access_type)
> +int fixed_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> +                          target_ulong address, int rw, int access_type)
>  {
>      if (address <= (int32_t)0x7FFFFFFFUL) {
> -        if (!(env->CP0_Status & (1 << CP0St_ERL)))
> +        if (!(env->CP0_Status & (1 << CP0St_ERL))) {
>              *physical = address + 0x40000000UL;
> -        else
> +        } else {
>              *physical = address;
> -    } else if (address <= (int32_t)0xBFFFFFFFUL)
> +        }
> +    } else if (address <= (int32_t)0xBFFFFFFFUL) {

While you're at it: That line looks weird. Why is this first marked as
"unsigned long" with the UL prefix and then casted through a signed
int32_t ? I think you should either drop the prefix or the cast here
(but probably rather in a separate patch).

 Thomas


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL]Re: [PATCH v8 10/37] target/mips: Style improvements in helper.c
  2019-08-19 13:33   ` Thomas Huth
@ 2019-08-19 13:56     ` Aleksandar Markovic
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-08-19 13:56 UTC (permalink / raw)
  To: Thomas Huth, Aleksandar Markovic, qemu-devel; +Cc: Aleksandar Rikalo, philmd

> From: Thomas Huth <thuth@redhat.com>
> 
> On 8/19/19 2:07 PM, Aleksandar Markovic wrote:
> > From: Aleksandar Markovic <amarkovic@wavecomp.com>
> 
> > ...
> 
> > @@ -48,26 +48,28 @@ int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> >  }
> > 
> >  /* fixed mapping MMU emulation */
> > -int fixed_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> > -                           target_ulong address, int rw, int access_type)
> > +int fixed_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> > +                          target_ulong address, int rw, int access_type)
> >  {
> >      if (address <= (int32_t)0x7FFFFFFFUL) {
> > -        if (!(env->CP0_Status & (1 << CP0St_ERL)))
> > +        if (!(env->CP0_Status & (1 << CP0St_ERL))) {
> >              *physical = address + 0x40000000UL;
> > -        else
> > +        } else {
> >              *physical = address;
> > -    } else if (address <= (int32_t)0xBFFFFFFFUL)
> > +        }
> > +    } else if (address <= (int32_t)0xBFFFFFFFUL) {
> 
> While you're at it: That line looks weird. Why is this first marked as
> "unsigned long" with the UL prefix and then casted through a signed
> int32_t ? I think you should either drop the prefix or the cast here
> (but probably rather in a separate patch).

Agreed, Thomas, this looks totally weird. Thanks for spotting it. I'll think a little
more about the best way of fixing it.

Aleksandar

> 
>  Thomas


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID register implementation
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID " Aleksandar Markovic
@ 2019-08-19 14:39   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:39 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID register implementation
>
> From: Yongbok Kim <yongbok.kim@mips.com>
>
> Add migration support and fix preprocessor constant name for
> MemoryMapID register.
>
> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  target/mips/cpu.h     | 2 +-
>  target/mips/machine.c | 7 +++++--
>  2 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/target/mips/cpu.h b/target/mips/cpu.h
> index 6406ba8..eda8350 100644
> --- a/target/mips/cpu.h
> +++ b/target/mips/cpu.h
> @@ -290,7 +290,7 @@ typedef struct mips_def_t mips_def_t;
>  #define CP0_REG04__CONTEXT         0
>  #define CP0_REG04__USERLOCAL       2
>  #define CP0_REG04__DBGCONTEXTID    4
> -#define CP0_REG00__MMID            5
> +#define CP0_REG04__MEMORYMAPID     5
>  /* CP0 Register 05 */
>  #define CP0_REG05__PAGEMASK        0
>  #define CP0_REG05__PAGEGRAIN       1
> diff --git a/target/mips/machine.c b/target/mips/machine.c
> index c3e52f8..e23b767 100644
> --- a/target/mips/machine.c
> +++ b/target/mips/machine.c
> @@ -137,6 +137,7 @@ static int get_tlb(QEMUFile *f, void *pv, size_t size,
>      qemu_get_betls(f, &v->VPN);
>      qemu_get_be32s(f, &v->PageMask);
>      qemu_get_be16s(f, &v->ASID);
> +    qemu_get_be32s(f, &v->MMID);
>      qemu_get_be16s(f, &flags);
>      v->G = (flags >> 10) & 1;
>      v->C0 = (flags >> 7) & 3;
> @@ -162,6 +163,7 @@ static int put_tlb(QEMUFile *f, void *pv, size_t size,
>      r4k_tlb_t *v = pv;
>
>      uint16_t asid = v->ASID;
> +    uint32_t mmid = v->MMID;
>      uint16_t flags = ((v->EHINV << 15) |
>                        (v->RI1 << 14) |
>                        (v->RI0 << 13) |
> @@ -178,6 +180,7 @@ static int put_tlb(QEMUFile *f, void *pv, size_t size,
>      qemu_put_betls(f, &v->VPN);
>      qemu_put_be32s(f, &v->PageMask);
>      qemu_put_be16s(f, &asid);
> +    qemu_put_be32s(f, &mmid);
>      qemu_put_be16s(f, &flags);
>      qemu_put_be64s(f, &v->PFN[0]);
>      qemu_put_be64s(f, &v->PFN[1]);
> @@ -199,8 +202,8 @@ const VMStateInfo vmstate_info_tlb = {
>
>  const VMStateDescription vmstate_tlb = {
>      .name = "cpu/tlb",
> -    .version_id = 2,
> -    .minimum_version_id = 2,
> +    .version_id = 3,
> +    .minimum_version_id = 3,
>      .fields = (VMStateField[]) {
>          VMSTATE_UINT32(nb_tlb, CPUMIPSTLBContext),
>          VMSTATE_UINT32(tlb_in_use, CPUMIPSTLBContext),
> --
> 2.7.4
>

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 10/37] target/mips: Style improvements in helper.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c Aleksandar Markovic
  2019-08-19 13:33   ` Thomas Huth
@ 2019-08-19 14:40   ` Aleksandar Rikalo
  1 sibling, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:40 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 10/37] target/mips: Style improvements in helper.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  target/mips/helper.c | 98 ++++++++++++++++++++++++++++++++--------------------
>  1 file changed, 60 insertions(+), 38 deletions(-)
>
> diff --git a/target/mips/helper.c b/target/mips/helper.c
> index 6e583d3..d7a2c77 100644
> --- a/target/mips/helper.c
> +++ b/target/mips/helper.c
> @@ -39,8 +39,8 @@ enum {
>  #if !defined(CONFIG_USER_ONLY)
>
>  /* no MMU emulation */
> -int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> -                        target_ulong address, int rw, int access_type)
> +int no_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> +                       target_ulong address, int rw, int access_type)
>  {
>      *physical = address;
>      *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
> @@ -48,26 +48,28 @@ int no_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
>  }
>
>  /* fixed mapping MMU emulation */
> -int fixed_mmu_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> -                           target_ulong address, int rw, int access_type)
> +int fixed_mmu_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> +                          target_ulong address, int rw, int access_type)
>  {
>      if (address <= (int32_t)0x7FFFFFFFUL) {
> -        if (!(env->CP0_Status & (1 << CP0St_ERL)))
> +        if (!(env->CP0_Status & (1 << CP0St_ERL))) {
>              *physical = address + 0x40000000UL;
> -        else
> +        } else {
>              *physical = address;
> -    } else if (address <= (int32_t)0xBFFFFFFFUL)
> +        }
> +    } else if (address <= (int32_t)0xBFFFFFFFUL) {
>          *physical = address & 0x1FFFFFFF;
> -    else
> +    } else {
>          *physical = address;
> +    }
>
>      *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
>      return TLBRET_MATCH;
>  }
>
>  /* MIPS32/MIPS64 R4000-style MMU emulation */
> -int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
> -                     target_ulong address, int rw, int access_type)
> +int r4k_map_address(CPUMIPSState *env, hwaddr *physical, int *prot,
> +                    target_ulong address, int rw, int access_type)
>  {
>      uint16_t ASID = env->CP0_EntryHi & env->CP0_EntryHi_ASID_mask;
>      uint32_t MMID = env->CP0_MemoryMapID;
> @@ -105,8 +107,9 @@ int r4k_map_address (CPUMIPSState *env, hwaddr *physical, int *prot,
>              if (rw != MMU_DATA_STORE || (n ? tlb->D1 : tlb->D0)) {
>                  *physical = tlb->PFN[n] | (address & (mask >> 1));
>                  *prot = PAGE_READ;
> -                if (n ? tlb->D1 : tlb->D0)
> +                if (n ? tlb->D1 : tlb->D0) {
>                      *prot |= PAGE_WRITE;
> +                }
>                  if (!(n ? tlb->XI1 : tlb->XI0)) {
>                      *prot |= PAGE_EXEC;
>                  }
> @@ -136,9 +139,10 @@ static int is_seg_am_mapped(unsigned int am, bool eu, int mmu_idx)
>      int32_t adetlb_mask;
>
>      switch (mmu_idx) {
> -    case 3 /* ERL */:
> -        /* If EU is set, always unmapped */
> +    case 3:
> +        /* ERL */
>          if (eu) {
> +            /* If EU is set, always unmapped */
>              return 0;
>          }
>          /* fall through */
> @@ -210,7 +214,7 @@ static int get_segctl_physical_address(CPUMIPSState *env, hwaddr *physical,
>                                      pa & ~(hwaddr)segmask);
>  }
>
> -static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
> +static int get_physical_address(CPUMIPSState *env, hwaddr *physical,
>                                  int *prot, target_ulong real_address,
>                                  int rw, int access_type, int mmu_idx)
>  {
> @@ -265,7 +269,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
>      } else if (address < 0x4000000000000000ULL) {
>          /* xuseg */
>          if (UX && address <= (0x3FFFFFFFFFFFFFFFULL & env->SEGMask)) {
> -            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
> +            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
> +                                        access_type);
>          } else {
>              ret = TLBRET_BADADDR;
>          }
> @@ -273,7 +278,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
>          /* xsseg */
>          if ((supervisor_mode || kernel_mode) &&
>              SX && address <= (0x7FFFFFFFFFFFFFFFULL & env->SEGMask)) {
> -            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
> +            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
> +                                        access_type);
>          } else {
>              ret = TLBRET_BADADDR;
>          }
> @@ -313,7 +319,8 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical,
>          /* xkseg */
>          if (kernel_mode && KX &&
>              address <= (0xFFFFFFFF7FFFFFFFULL & env->SEGMask)) {
> -            ret = env->tlb->map_address(env, physical, prot, real_address, rw, access_type);
> +            ret = env->tlb->map_address(env, physical, prot, real_address, rw,
> +                                        access_type);
>          } else {
>              ret = TLBRET_BADADDR;
>          }
> @@ -669,7 +676,7 @@ static int walk_directory(CPUMIPSState *env, uint64_t *vaddr,
>  }
>
>  static bool page_table_walk_refill(CPUMIPSState *env, vaddr address, int rw,
> -        int mmu_idx)
> +                                   int mmu_idx)
>  {
>      int gdw = (env->CP0_PWSize >> CP0PS_GDW) & 0x3F;
>      int udw = (env->CP0_PWSize >> CP0PS_UDW) & 0x3F;
> @@ -951,7 +958,8 @@ bool mips_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
>  }
>
>  #ifndef CONFIG_USER_ONLY
> -hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address, int rw)
> +hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address,
> +                                  int rw)
>  {
>      hwaddr physical;
>      int prot;
> @@ -1011,7 +1019,7 @@ static const char * const excp_names[EXCP_LAST + 1] = {
>  };
>  #endif
>
> -target_ulong exception_resume_pc (CPUMIPSState *env)
> +target_ulong exception_resume_pc(CPUMIPSState *env)
>  {
>      target_ulong bad_pc;
>      target_ulong isa_mode;
> @@ -1019,8 +1027,10 @@ target_ulong exception_resume_pc (CPUMIPSState *env)
>      isa_mode = !!(env->hflags & MIPS_HFLAG_M16);
>      bad_pc = env->active_tc.PC | isa_mode;
>      if (env->hflags & MIPS_HFLAG_BMASK) {
> -        /* If the exception was raised from a delay slot, come back to
> -           the jump.  */
> +        /*
> +         * If the exception was raised from a delay slot, come back to
> +         * the jump.
> +         */
>          bad_pc -= (env->hflags & MIPS_HFLAG_B16 ? 2 : 4);
>      }
>
> @@ -1102,10 +1112,12 @@ void mips_cpu_do_interrupt(CPUState *cs)
>      switch (cs->exception_index) {
>      case EXCP_DSS:
>          env->CP0_Debug |= 1 << CP0DB_DSS;
> -        /* Debug single step cannot be raised inside a delay slot and
> -           resume will always occur on the next instruction
> -           (but we assume the pc has always been updated during
> -           code translation). */
> +        /*
> +         * Debug single step cannot be raised inside a delay slot and
> +         * resume will always occur on the next instruction
> +         * (but we assume the pc has always been updated during
> +         * code translation).
> +         */
>          env->CP0_DEPC = env->active_tc.PC | !!(env->hflags & MIPS_HFLAG_M16);
>          goto enter_debug_mode;
>      case EXCP_DINT:
> @@ -1117,7 +1129,8 @@ void mips_cpu_do_interrupt(CPUState *cs)
>      case EXCP_DBp:
>          env->CP0_Debug |= 1 << CP0DB_DBp;
>          /* Setup DExcCode - SDBBP instruction */
> -        env->CP0_Debug = (env->CP0_Debug & ~(0x1fULL << CP0DB_DEC)) | 9 << CP0DB_DEC;
> +        env->CP0_Debug = (env->CP0_Debug & ~(0x1fULL << CP0DB_DEC)) |
> +                         (9 << CP0DB_DEC);
>          goto set_DEPC;
>      case EXCP_DDBS:
>          env->CP0_Debug |= 1 << CP0DB_DDBS;
> @@ -1138,8 +1151,9 @@ void mips_cpu_do_interrupt(CPUState *cs)
>          env->hflags |= MIPS_HFLAG_DM | MIPS_HFLAG_CP0;
>          env->hflags &= ~(MIPS_HFLAG_KSU);
>          /* EJTAG probe trap enable is not implemented... */
> -        if (!(env->CP0_Status & (1 << CP0St_EXL)))
> +        if (!(env->CP0_Status & (1 << CP0St_EXL))) {
>              env->CP0_Cause &= ~(1U << CP0Ca_BD);
> +        }
>          env->active_tc.PC = env->exception_base + 0x480;
>          set_hflags_for_handler(env);
>          break;
> @@ -1165,8 +1179,9 @@ void mips_cpu_do_interrupt(CPUState *cs)
>          }
>          env->hflags |= MIPS_HFLAG_CP0;
>          env->hflags &= ~(MIPS_HFLAG_KSU);
> -        if (!(env->CP0_Status & (1 << CP0St_EXL)))
> +        if (!(env->CP0_Status & (1 << CP0St_EXL))) {
>              env->CP0_Cause &= ~(1U << CP0Ca_BD);
> +        }
>          env->active_tc.PC = env->exception_base;
>          set_hflags_for_handler(env);
>          break;
> @@ -1182,12 +1197,16 @@ void mips_cpu_do_interrupt(CPUState *cs)
>                  uint32_t pending = (env->CP0_Cause & CP0Ca_IP_mask) >> CP0Ca_IP;
>
>                  if (env->CP0_Config3 & (1 << CP0C3_VEIC)) {
> -                    /* For VEIC mode, the external interrupt controller feeds
> -                     * the vector through the CP0Cause IP lines.  */
> +                    /*
> +                     * For VEIC mode, the external interrupt controller feeds
> +                     * the vector through the CP0Cause IP lines.
> +                     */
>                      vector = pending;
>                  } else {
> -                    /* Vectored Interrupts
> -                     * Mask with Status.IM7-IM0 to get enabled interrupts. */
> +                    /*
> +                     * Vectored Interrupts
> +                     * Mask with Status.IM7-IM0 to get enabled interrupts.
> +                     */
>                      pending &= (env->CP0_Status >> CP0St_IM) & 0xff;
>                      /* Find the highest-priority interrupt. */
>                      while (pending >>= 1) {
> @@ -1360,7 +1379,8 @@ void mips_cpu_do_interrupt(CPUState *cs)
>
>          env->active_tc.PC += offset;
>          set_hflags_for_handler(env);
> -        env->CP0_Cause = (env->CP0_Cause & ~(0x1f << CP0Ca_EC)) | (cause << CP0Ca_EC);
> +        env->CP0_Cause = (env->CP0_Cause & ~(0x1f << CP0Ca_EC)) |
> +                         (cause << CP0Ca_EC);
>          break;
>      default:
>          abort();
> @@ -1396,7 +1416,7 @@ bool mips_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
>  }
>
>  #if !defined(CONFIG_USER_ONLY)
> -void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra)
> +void r4k_invalidate_tlb(CPUMIPSState *env, int idx, int use_extra)
>  {
>      CPUState *cs = env_cpu(env);
>      r4k_tlb_t *tlb;
> @@ -1421,9 +1441,11 @@ void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra)
>      }
>
>      if (use_extra && env->tlb->tlb_in_use < MIPS_TLB_MAX) {
> -        /* For tlbwr, we can shadow the discarded entry into
> -           a new (fake) TLB entry, as long as the guest can not
> -           tell that it's there.  */
> +        /*
> +         * For tlbwr, we can shadow the discarded entry into
> +         * a new (fake) TLB entry, as long as the guest can not
> +         * tell that it's there.
> +         */
>          env->tlb->mmu.r4k.tlb[env->tlb->tlb_in_use] = *tlb;
>          env->tlb->tlb_in_use++;
>          return;
> --
> 2.7.4
>

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>



^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 11/37] target/mips: Style improvements in translate.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 11/37] target/mips: Style improvements in translate.c Aleksandar Markovic
@ 2019-08-19 14:41   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:41 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 11/37] target/mips: Style improvements in translate.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  target/mips/translate.c | 608 ++++++++++++++++++++++++------------------------
>  1 file changed, 309 insertions(+), 299 deletions(-)
>
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index 3f9f113..fe4a05c 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -43,7 +43,7 @@
>  #define MIPS_DEBUG_DISAS 0
>
>  /* MIPS major opcodes */
> -#define MASK_OP_MAJOR(op)  (op & (0x3F << 26))
> +#define MASK_OP_MAJOR(op)       (op & (0x3F << 26))
>
>  enum {
>      /* indirect opcode tables */
> @@ -153,8 +153,8 @@ enum {
>  };
>
>  /* PC-relative address computation / loads  */
> -#define MASK_OPC_PCREL_TOP2BITS(op)  (MASK_OP_MAJOR(op) | (op & (3 << 19)))
> -#define MASK_OPC_PCREL_TOP5BITS(op)  (MASK_OP_MAJOR(op) | (op & (0x1f << 16)))
> +#define MASK_OPC_PCREL_TOP2BITS(op) (MASK_OP_MAJOR(op) | (op & (3 << 19)))
> +#define MASK_OPC_PCREL_TOP5BITS(op) (MASK_OP_MAJOR(op) | (op & (0x1f << 16)))
>  enum {
>      /* Instructions determined by bits 19 and 20 */
>      OPC_ADDIUPC = OPC_PCREL | (0 << 19),
> @@ -170,7 +170,7 @@ enum {
>  };
>
>  /* MIPS special opcodes */
> -#define MASK_SPECIAL(op)   MASK_OP_MAJOR(op) | (op & 0x3F)
> +#define MASK_SPECIAL(op)            (MASK_OP_MAJOR(op) | (op & 0x3F))
>
>  enum {
>      /* Shifts */
> @@ -263,7 +263,7 @@ enum {
>   * R6 Multiply and Divide instructions have the same opcode
>   * and function field as legacy OPC_MULT[U]/OPC_DIV[U]
>   */
> -#define MASK_R6_MULDIV(op)   (MASK_SPECIAL(op) | (op & (0x7ff)))
> +#define MASK_R6_MULDIV(op)          (MASK_SPECIAL(op) | (op & (0x7ff)))
>
>  enum {
>      R6_OPC_MUL   = OPC_MULT  | (2 << 6),
> @@ -295,7 +295,7 @@ enum {
>  };
>
>  /* Multiplication variants of the vr54xx. */
> -#define MASK_MUL_VR54XX(op)   MASK_SPECIAL(op) | (op & (0x1F << 6))
> +#define MASK_MUL_VR54XX(op)         (MASK_SPECIAL(op) | (op & (0x1F << 6)))
>
>  enum {
>      OPC_VR54XX_MULS    = (0x03 << 6) | OPC_MULT,
> @@ -315,7 +315,7 @@ enum {
>  };
>
>  /* REGIMM (rt field) opcodes */
> -#define MASK_REGIMM(op)    MASK_OP_MAJOR(op) | (op & (0x1F << 16))
> +#define MASK_REGIMM(op)             (MASK_OP_MAJOR(op) | (op & (0x1F << 16)))
>
>  enum {
>      OPC_BLTZ     = (0x00 << 16) | OPC_REGIMM,
> @@ -340,7 +340,7 @@ enum {
>  };
>
>  /* Special2 opcodes */
> -#define MASK_SPECIAL2(op)  MASK_OP_MAJOR(op) | (op & 0x3F)
> +#define MASK_SPECIAL2(op)           (MASK_OP_MAJOR(op) | (op & 0x3F))
>
>  enum {
>      /* Multiply & xxx operations */
> @@ -372,7 +372,7 @@ enum {
>  };
>
>  /* Special3 opcodes */
> -#define MASK_SPECIAL3(op)  MASK_OP_MAJOR(op) | (op & 0x3F)
> +#define MASK_SPECIAL3(op)           (MASK_OP_MAJOR(op) | (op & 0x3F))
>
>  enum {
>      OPC_EXT      = 0x00 | OPC_SPECIAL3,
> @@ -462,7 +462,7 @@ enum {
>  };
>
>  /* BSHFL opcodes */
> -#define MASK_BSHFL(op)     MASK_SPECIAL3(op) | (op & (0x1F << 6))
> +#define MASK_BSHFL(op)              (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>
>  enum {
>      OPC_WSBH      = (0x02 << 6) | OPC_BSHFL,
> @@ -476,7 +476,7 @@ enum {
>  };
>
>  /* DBSHFL opcodes */
> -#define MASK_DBSHFL(op)    MASK_SPECIAL3(op) | (op & (0x1F << 6))
> +#define MASK_DBSHFL(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>
>  enum {
>      OPC_DSBH       = (0x02 << 6) | OPC_DBSHFL,
> @@ -498,7 +498,7 @@ enum {
>      OPC_BPOSGE64 = (0x1D << 16) | OPC_REGIMM,
>  };
>
> -#define MASK_LX(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_LX(op)                 (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  /* MIPS DSP Load */
>  enum {
>      OPC_LBUX = (0x06 << 6) | OPC_LX_DSP,
> @@ -507,7 +507,7 @@ enum {
>      OPC_LDX = (0x08 << 6) | OPC_LX_DSP,
>  };
>
> -#define MASK_ADDU_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_ADDU_QB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Arithmetic Sub-class */
>      OPC_ADDQ_PH        = (0x0A << 6) | OPC_ADDU_QB_DSP,
> @@ -538,7 +538,7 @@ enum {
>  };
>
>  #define OPC_ADDUH_QB_DSP OPC_MULT_G_2E
> -#define MASK_ADDUH_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_ADDUH_QB(op)           (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Arithmetic Sub-class */
>      OPC_ADDUH_QB   = (0x00 << 6) | OPC_ADDUH_QB_DSP,
> @@ -560,7 +560,7 @@ enum {
>      OPC_MULQ_RS_W  = (0x17 << 6) | OPC_ADDUH_QB_DSP,
>  };
>
> -#define MASK_ABSQ_S_PH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_ABSQ_S_PH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Arithmetic Sub-class */
>      OPC_ABSQ_S_QB       = (0x01 << 6) | OPC_ABSQ_S_PH_DSP,
> @@ -584,7 +584,7 @@ enum {
>      OPC_REPLV_PH        = (0x0B << 6) | OPC_ABSQ_S_PH_DSP,
>  };
>
> -#define MASK_CMPU_EQ_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_CMPU_EQ_QB(op)         (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Arithmetic Sub-class */
>      OPC_PRECR_QB_PH      = (0x0D << 6) | OPC_CMPU_EQ_QB_DSP,
> @@ -612,7 +612,7 @@ enum {
>      OPC_PACKRL_PH        = (0x0E << 6) | OPC_CMPU_EQ_QB_DSP,
>  };
>
> -#define MASK_SHLL_QB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_SHLL_QB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP GPR-Based Shift Sub-class */
>      OPC_SHLL_QB    = (0x00 << 6) | OPC_SHLL_QB_DSP,
> @@ -639,7 +639,7 @@ enum {
>      OPC_SHRAV_R_W  = (0x17 << 6) | OPC_SHLL_QB_DSP,
>  };
>
> -#define MASK_DPA_W_PH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_DPA_W_PH(op)           (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Multiply Sub-class insns */
>      OPC_DPAU_H_QBL    = (0x03 << 6) | OPC_DPA_W_PH_DSP,
> @@ -666,13 +666,13 @@ enum {
>      OPC_MULSA_W_PH    = (0x02 << 6) | OPC_DPA_W_PH_DSP,
>  };
>
> -#define MASK_INSV(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_INSV(op)               (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* DSP Bit/Manipulation Sub-class */
>      OPC_INSV = (0x00 << 6) | OPC_INSV_DSP,
>  };
>
> -#define MASK_APPEND(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_APPEND(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Append Sub-class */
>      OPC_APPEND  = (0x00 << 6) | OPC_APPEND_DSP,
> @@ -680,7 +680,7 @@ enum {
>      OPC_BALIGN  = (0x10 << 6) | OPC_APPEND_DSP,
>  };
>
> -#define MASK_EXTR_W(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_EXTR_W(op)             (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Accumulator and DSPControl Access Sub-class */
>      OPC_EXTR_W     = (0x00 << 6) | OPC_EXTR_W_DSP,
> @@ -702,7 +702,7 @@ enum {
>      OPC_RDDSP      = (0x12 << 6) | OPC_EXTR_W_DSP,
>  };
>
> -#define MASK_ABSQ_S_QH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_ABSQ_S_QH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Arithmetic Sub-class */
>      OPC_PRECEQ_L_PWL    = (0x14 << 6) | OPC_ABSQ_S_QH_DSP,
> @@ -731,7 +731,7 @@ enum {
>      OPC_REPLV_QH        = (0x0B << 6) | OPC_ABSQ_S_QH_DSP,
>  };
>
> -#define MASK_ADDU_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_ADDU_OB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Multiply Sub-class insns */
>      OPC_MULEQ_S_PW_QHL = (0x1C << 6) | OPC_ADDU_OB_DSP,
> @@ -763,7 +763,7 @@ enum {
>      OPC_ADDUH_R_OB     = (0x1A << 6) | OPC_ADDU_OB_DSP,
>  };
>
> -#define MASK_CMPU_EQ_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_CMPU_EQ_OB(op)         (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* DSP Compare-Pick Sub-class */
>      OPC_CMP_EQ_PW         = (0x10 << 6) | OPC_CMPU_EQ_OB_DSP,
> @@ -796,7 +796,7 @@ enum {
>      OPC_PRECRQU_S_OB_QH   = (0x0F << 6) | OPC_CMPU_EQ_OB_DSP,
>  };
>
> -#define MASK_DAPPEND(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_DAPPEND(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* DSP Append Sub-class */
>      OPC_DAPPEND  = (0x00 << 6) | OPC_DAPPEND_DSP,
> @@ -805,7 +805,7 @@ enum {
>      OPC_DBALIGN  = (0x10 << 6) | OPC_DAPPEND_DSP,
>  };
>
> -#define MASK_DEXTR_W(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_DEXTR_W(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Accumulator and DSPControl Access Sub-class */
>      OPC_DMTHLIP     = (0x1F << 6) | OPC_DEXTR_W_DSP,
> @@ -831,13 +831,13 @@ enum {
>      OPC_DSHILOV     = (0x1B << 6) | OPC_DEXTR_W_DSP,
>  };
>
> -#define MASK_DINSV(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_DINSV(op)              (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* DSP Bit/Manipulation Sub-class */
>      OPC_DINSV = (0x00 << 6) | OPC_DINSV_DSP,
>  };
>
> -#define MASK_DPAQ_W_QH(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_DPAQ_W_QH(op)          (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP Multiply Sub-class insns */
>      OPC_DMADD         = (0x19 << 6) | OPC_DPAQ_W_QH_DSP,
> @@ -868,7 +868,7 @@ enum {
>      OPC_MULSAQ_S_W_QH = (0x06 << 6) | OPC_DPAQ_W_QH_DSP,
>  };
>
> -#define MASK_SHLL_OB(op) (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
> +#define MASK_SHLL_OB(op)            (MASK_SPECIAL3(op) | (op & (0x1F << 6)))
>  enum {
>      /* MIPS DSP GPR-Based Shift Sub-class */
>      OPC_SHLL_PW    = (0x10 << 6) | OPC_SHLL_OB_DSP,
> @@ -900,7 +900,7 @@ enum {
>  };
>
>  /* Coprocessor 0 (rs field) */
> -#define MASK_CP0(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
> +#define MASK_CP0(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
>
>  enum {
>      OPC_MFC0     = (0x00 << 21) | OPC_CP0,
> @@ -933,7 +933,7 @@ enum {
>  };
>
>  /* MFMC0 opcodes */
> -#define MASK_MFMC0(op)     MASK_CP0(op) | (op & 0xFFFF)
> +#define MASK_MFMC0(op)              (MASK_CP0(op) | (op & 0xFFFF))
>
>  enum {
>      OPC_DMT      = 0x01 | (0 << 5) | (0x0F << 6) | (0x01 << 11) | OPC_MFMC0,
> @@ -947,7 +947,7 @@ enum {
>  };
>
>  /* Coprocessor 0 (with rs == C0) */
> -#define MASK_C0(op)        MASK_CP0(op) | (op & 0x3F)
> +#define MASK_C0(op)                 (MASK_CP0(op) | (op & 0x3F))
>
>  enum {
>      OPC_TLBR     = 0x01 | OPC_C0,
> @@ -963,7 +963,7 @@ enum {
>  };
>
>  /* Coprocessor 1 (rs field) */
> -#define MASK_CP1(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
> +#define MASK_CP1(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
>
>  /* Values for the fmt field in FP instructions */
>  enum {
> @@ -1011,8 +1011,8 @@ enum {
>      OPC_BNZ_D    = (0x1F << 21) | OPC_CP1,
>  };
>
> -#define MASK_CP1_FUNC(op)       MASK_CP1(op) | (op & 0x3F)
> -#define MASK_BC1(op)            MASK_CP1(op) | (op & (0x3 << 16))
> +#define MASK_CP1_FUNC(op)           (MASK_CP1(op) | (op & 0x3F))
> +#define MASK_BC1(op)                (MASK_CP1(op) | (op & (0x3 << 16)))
>
>  enum {
>      OPC_BC1F     = (0x00 << 16) | OPC_BC1,
> @@ -1031,7 +1031,7 @@ enum {
>      OPC_BC1TANY4     = (0x01 << 16) | OPC_BC1ANY4,
>  };
>
> -#define MASK_CP2(op)       MASK_OP_MAJOR(op) | (op & (0x1F << 21))
> +#define MASK_CP2(op)                (MASK_OP_MAJOR(op) | (op & (0x1F << 21)))
>
>  enum {
>      OPC_MFC2    = (0x00 << 21) | OPC_CP2,
> @@ -1047,35 +1047,35 @@ enum {
>      OPC_BC2NEZ  = (0x0D << 21) | OPC_CP2,
>  };
>
> -#define MASK_LMI(op)  (MASK_OP_MAJOR(op) | (op & (0x1F << 21)) | (op & 0x1F))
> +#define MASK_LMI(op)    (MASK_OP_MAJOR(op) | (op & (0x1F << 21)) | (op & 0x1F))
>
>  enum {
> -    OPC_PADDSH  = (24 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDUSH = (25 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDH   = (26 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDW   = (27 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDSB  = (28 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDUSB = (29 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDB   = (30 << 21) | (0x00) | OPC_CP2,
> -    OPC_PADDD   = (31 << 21) | (0x00) | OPC_CP2,
> -
> -    OPC_PSUBSH  = (24 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBUSH = (25 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBH   = (26 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBW   = (27 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBSB  = (28 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBUSB = (29 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBB   = (30 << 21) | (0x01) | OPC_CP2,
> -    OPC_PSUBD   = (31 << 21) | (0x01) | OPC_CP2,
> -
> -    OPC_PSHUFH   = (24 << 21) | (0x02) | OPC_CP2,
> -    OPC_PACKSSWH = (25 << 21) | (0x02) | OPC_CP2,
> -    OPC_PACKSSHB = (26 << 21) | (0x02) | OPC_CP2,
> -    OPC_PACKUSHB = (27 << 21) | (0x02) | OPC_CP2,
> -    OPC_XOR_CP2  = (28 << 21) | (0x02) | OPC_CP2,
> -    OPC_NOR_CP2  = (29 << 21) | (0x02) | OPC_CP2,
> -    OPC_AND_CP2  = (30 << 21) | (0x02) | OPC_CP2,
> -    OPC_PANDN    = (31 << 21) | (0x02) | OPC_CP2,
> +    OPC_PADDSH      = (24 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDUSH     = (25 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDH       = (26 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDW       = (27 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDSB      = (28 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDUSB     = (29 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDB       = (30 << 21) | (0x00) | OPC_CP2,
> +    OPC_PADDD       = (31 << 21) | (0x00) | OPC_CP2,
> +
> +    OPC_PSUBSH      = (24 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBUSH     = (25 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBH       = (26 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBW       = (27 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBSB      = (28 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBUSB     = (29 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBB       = (30 << 21) | (0x01) | OPC_CP2,
> +    OPC_PSUBD       = (31 << 21) | (0x01) | OPC_CP2,
> +
> +    OPC_PSHUFH      = (24 << 21) | (0x02) | OPC_CP2,
> +    OPC_PACKSSWH    = (25 << 21) | (0x02) | OPC_CP2,
> +    OPC_PACKSSHB    = (26 << 21) | (0x02) | OPC_CP2,
> +    OPC_PACKUSHB    = (27 << 21) | (0x02) | OPC_CP2,
> +    OPC_XOR_CP2     = (28 << 21) | (0x02) | OPC_CP2,
> +    OPC_NOR_CP2     = (29 << 21) | (0x02) | OPC_CP2,
> +    OPC_AND_CP2     = (30 << 21) | (0x02) | OPC_CP2,
> +    OPC_PANDN       = (31 << 21) | (0x02) | OPC_CP2,
>
>      OPC_PUNPCKLHW = (24 << 21) | (0x03) | OPC_CP2,
>      OPC_PUNPCKHHW = (25 << 21) | (0x03) | OPC_CP2,
> @@ -1144,33 +1144,33 @@ enum {
>  };
>
>
> -#define MASK_CP3(op)       MASK_OP_MAJOR(op) | (op & 0x3F)
> +#define MASK_CP3(op)                (MASK_OP_MAJOR(op) | (op & 0x3F))
>
>  enum {
> -    OPC_LWXC1   = 0x00 | OPC_CP3,
> -    OPC_LDXC1   = 0x01 | OPC_CP3,
> -    OPC_LUXC1   = 0x05 | OPC_CP3,
> -    OPC_SWXC1   = 0x08 | OPC_CP3,
> -    OPC_SDXC1   = 0x09 | OPC_CP3,
> -    OPC_SUXC1   = 0x0D | OPC_CP3,
> -    OPC_PREFX   = 0x0F | OPC_CP3,
> -    OPC_ALNV_PS = 0x1E | OPC_CP3,
> -    OPC_MADD_S  = 0x20 | OPC_CP3,
> -    OPC_MADD_D  = 0x21 | OPC_CP3,
> -    OPC_MADD_PS = 0x26 | OPC_CP3,
> -    OPC_MSUB_S  = 0x28 | OPC_CP3,
> -    OPC_MSUB_D  = 0x29 | OPC_CP3,
> -    OPC_MSUB_PS = 0x2E | OPC_CP3,
> -    OPC_NMADD_S = 0x30 | OPC_CP3,
> -    OPC_NMADD_D = 0x31 | OPC_CP3,
> -    OPC_NMADD_PS= 0x36 | OPC_CP3,
> -    OPC_NMSUB_S = 0x38 | OPC_CP3,
> -    OPC_NMSUB_D = 0x39 | OPC_CP3,
> -    OPC_NMSUB_PS= 0x3E | OPC_CP3,
> +    OPC_LWXC1       = 0x00 | OPC_CP3,
> +    OPC_LDXC1       = 0x01 | OPC_CP3,
> +    OPC_LUXC1       = 0x05 | OPC_CP3,
> +    OPC_SWXC1       = 0x08 | OPC_CP3,
> +    OPC_SDXC1       = 0x09 | OPC_CP3,
> +    OPC_SUXC1       = 0x0D | OPC_CP3,
> +    OPC_PREFX       = 0x0F | OPC_CP3,
> +    OPC_ALNV_PS     = 0x1E | OPC_CP3,
> +    OPC_MADD_S      = 0x20 | OPC_CP3,
> +    OPC_MADD_D      = 0x21 | OPC_CP3,
> +    OPC_MADD_PS     = 0x26 | OPC_CP3,
> +    OPC_MSUB_S      = 0x28 | OPC_CP3,
> +    OPC_MSUB_D      = 0x29 | OPC_CP3,
> +    OPC_MSUB_PS     = 0x2E | OPC_CP3,
> +    OPC_NMADD_S     = 0x30 | OPC_CP3,
> +    OPC_NMADD_D     = 0x31 | OPC_CP3,
> +    OPC_NMADD_PS    = 0x36 | OPC_CP3,
> +    OPC_NMSUB_S     = 0x38 | OPC_CP3,
> +    OPC_NMSUB_D     = 0x39 | OPC_CP3,
> +    OPC_NMSUB_PS    = 0x3E | OPC_CP3,
>  };
>
>  /* MSA Opcodes */
> -#define MASK_MSA_MINOR(op)    (MASK_OP_MAJOR(op) | (op & 0x3F))
> +#define MASK_MSA_MINOR(op)          (MASK_OP_MAJOR(op) | (op & 0x3F))
>  enum {
>      OPC_MSA_I8_00   = 0x00 | OPC_MSA,
>      OPC_MSA_I8_01   = 0x01 | OPC_MSA,
> @@ -1195,14 +1195,14 @@ enum {
>      OPC_MSA_VEC     = 0x1E | OPC_MSA,
>
>      /* MI10 instruction */
> -    OPC_LD_B    = (0x20) | OPC_MSA,
> -    OPC_LD_H    = (0x21) | OPC_MSA,
> -    OPC_LD_W    = (0x22) | OPC_MSA,
> -    OPC_LD_D    = (0x23) | OPC_MSA,
> -    OPC_ST_B    = (0x24) | OPC_MSA,
> -    OPC_ST_H    = (0x25) | OPC_MSA,
> -    OPC_ST_W    = (0x26) | OPC_MSA,
> -    OPC_ST_D    = (0x27) | OPC_MSA,
> +    OPC_LD_B        = (0x20) | OPC_MSA,
> +    OPC_LD_H        = (0x21) | OPC_MSA,
> +    OPC_LD_W        = (0x22) | OPC_MSA,
> +    OPC_LD_D        = (0x23) | OPC_MSA,
> +    OPC_ST_B        = (0x24) | OPC_MSA,
> +    OPC_ST_H        = (0x25) | OPC_MSA,
> +    OPC_ST_W        = (0x26) | OPC_MSA,
> +    OPC_ST_D        = (0x27) | OPC_MSA,
>  };
>
>  enum {
> @@ -1221,34 +1221,34 @@ enum {
>      OPC_LDI_df      = (0x6 << 23) | OPC_MSA_I5_07,
>
>      /* I8 instruction */
> -    OPC_ANDI_B  = (0x0 << 24) | OPC_MSA_I8_00,
> -    OPC_BMNZI_B = (0x0 << 24) | OPC_MSA_I8_01,
> -    OPC_SHF_B   = (0x0 << 24) | OPC_MSA_I8_02,
> -    OPC_ORI_B   = (0x1 << 24) | OPC_MSA_I8_00,
> -    OPC_BMZI_B  = (0x1 << 24) | OPC_MSA_I8_01,
> -    OPC_SHF_H   = (0x1 << 24) | OPC_MSA_I8_02,
> -    OPC_NORI_B  = (0x2 << 24) | OPC_MSA_I8_00,
> -    OPC_BSELI_B = (0x2 << 24) | OPC_MSA_I8_01,
> -    OPC_SHF_W   = (0x2 << 24) | OPC_MSA_I8_02,
> -    OPC_XORI_B  = (0x3 << 24) | OPC_MSA_I8_00,
> +    OPC_ANDI_B      = (0x0 << 24) | OPC_MSA_I8_00,
> +    OPC_BMNZI_B     = (0x0 << 24) | OPC_MSA_I8_01,
> +    OPC_SHF_B       = (0x0 << 24) | OPC_MSA_I8_02,
> +    OPC_ORI_B       = (0x1 << 24) | OPC_MSA_I8_00,
> +    OPC_BMZI_B      = (0x1 << 24) | OPC_MSA_I8_01,
> +    OPC_SHF_H       = (0x1 << 24) | OPC_MSA_I8_02,
> +    OPC_NORI_B      = (0x2 << 24) | OPC_MSA_I8_00,
> +    OPC_BSELI_B     = (0x2 << 24) | OPC_MSA_I8_01,
> +    OPC_SHF_W       = (0x2 << 24) | OPC_MSA_I8_02,
> +    OPC_XORI_B      = (0x3 << 24) | OPC_MSA_I8_00,
>
>      /* VEC/2R/2RF instruction */
> -    OPC_AND_V   = (0x00 << 21) | OPC_MSA_VEC,
> -    OPC_OR_V    = (0x01 << 21) | OPC_MSA_VEC,
> -    OPC_NOR_V   = (0x02 << 21) | OPC_MSA_VEC,
> -    OPC_XOR_V   = (0x03 << 21) | OPC_MSA_VEC,
> -    OPC_BMNZ_V  = (0x04 << 21) | OPC_MSA_VEC,
> -    OPC_BMZ_V   = (0x05 << 21) | OPC_MSA_VEC,
> -    OPC_BSEL_V  = (0x06 << 21) | OPC_MSA_VEC,
> +    OPC_AND_V       = (0x00 << 21) | OPC_MSA_VEC,
> +    OPC_OR_V        = (0x01 << 21) | OPC_MSA_VEC,
> +    OPC_NOR_V       = (0x02 << 21) | OPC_MSA_VEC,
> +    OPC_XOR_V       = (0x03 << 21) | OPC_MSA_VEC,
> +    OPC_BMNZ_V      = (0x04 << 21) | OPC_MSA_VEC,
> +    OPC_BMZ_V       = (0x05 << 21) | OPC_MSA_VEC,
> +    OPC_BSEL_V      = (0x06 << 21) | OPC_MSA_VEC,
>
>      OPC_MSA_2R      = (0x18 << 21) | OPC_MSA_VEC,
>      OPC_MSA_2RF     = (0x19 << 21) | OPC_MSA_VEC,
>
>      /* 2R instruction df(bits 17..16) = _b, _h, _w, _d */
> -    OPC_FILL_df = (0x00 << 18) | OPC_MSA_2R,
> -    OPC_PCNT_df = (0x01 << 18) | OPC_MSA_2R,
> -    OPC_NLOC_df = (0x02 << 18) | OPC_MSA_2R,
> -    OPC_NLZC_df = (0x03 << 18) | OPC_MSA_2R,
> +    OPC_FILL_df     = (0x00 << 18) | OPC_MSA_2R,
> +    OPC_PCNT_df     = (0x01 << 18) | OPC_MSA_2R,
> +    OPC_NLOC_df     = (0x02 << 18) | OPC_MSA_2R,
> +    OPC_NLZC_df     = (0x03 << 18) | OPC_MSA_2R,
>
>      /* 2RF instruction df(bit 16) = _w, _d */
>      OPC_FCLASS_df   = (0x00 << 17) | OPC_MSA_2RF,
> @@ -2478,43 +2478,43 @@ static TCGv mxu_CR;
>      TCGv_i32 helper_tmp = tcg_const_i32(arg);                     \
>      gen_helper_##name(cpu_env, helper_tmp);                       \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_0e1i(name, arg1, arg2) do {                    \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg2);                    \
>      gen_helper_##name(cpu_env, arg1, helper_tmp);                 \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_1e0i(name, ret, arg1) do {                     \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg1);                    \
>      gen_helper_##name(ret, cpu_env, helper_tmp);                  \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_1e1i(name, ret, arg1, arg2) do {               \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg2);                    \
>      gen_helper_##name(ret, cpu_env, arg1, helper_tmp);            \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_0e2i(name, arg1, arg2, arg3) do {              \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg3);                    \
>      gen_helper_##name(cpu_env, arg1, arg2, helper_tmp);           \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_1e2i(name, ret, arg1, arg2, arg3) do {         \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg3);                    \
>      gen_helper_##name(ret, cpu_env, arg1, arg2, helper_tmp);      \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  #define gen_helper_0e3i(name, arg1, arg2, arg3, arg4) do {        \
>      TCGv_i32 helper_tmp = tcg_const_i32(arg4);                    \
>      gen_helper_##name(cpu_env, arg1, arg2, arg3, helper_tmp);     \
>      tcg_temp_free_i32(helper_tmp);                                \
> -    } while(0)
> +    } while (0)
>
>  typedef struct DisasContext {
>      DisasContextBase base;
> @@ -2666,7 +2666,7 @@ static inline void gen_load_srsgpr(int from, int to)
>      tcg_temp_free(t0);
>  }
>
> -static inline void gen_store_srsgpr (int from, int to)
> +static inline void gen_store_srsgpr(int from, int to)
>  {
>      if (to != 0) {
>          TCGv t0 = tcg_temp_new();
> @@ -3364,28 +3364,28 @@ FOP_CONDNS(s, FMT_S, 32, gen_store_fpr32(ctx, fp0, fd))
>
>  /* load/store instructions. */
>  #ifdef CONFIG_USER_ONLY
> -#define OP_LD_ATOMIC(insn,fname)                                           \
> +#define OP_LD_ATOMIC(insn, fname)                                          \
>  static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx,          \
>                                  DisasContext *ctx)                         \
>  {                                                                          \
>      TCGv t0 = tcg_temp_new();                                              \
>      tcg_gen_mov_tl(t0, arg1);                                              \
>      tcg_gen_qemu_##fname(ret, arg1, ctx->mem_idx);                         \
> -    tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr));                \
> -    tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval));                \
> +    tcg_gen_st_tl(t0, cpu_env, offsetof(CPUMIPSState, lladdr));            \
> +    tcg_gen_st_tl(ret, cpu_env, offsetof(CPUMIPSState, llval));            \
>      tcg_temp_free(t0);                                                     \
>  }
>  #else
> -#define OP_LD_ATOMIC(insn,fname)                                           \
> +#define OP_LD_ATOMIC(insn, fname)                                          \
>  static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx,          \
>                                  DisasContext *ctx)                         \
>  {                                                                          \
>      gen_helper_1e1i(insn, ret, arg1, mem_idx);                             \
>  }
>  #endif
> -OP_LD_ATOMIC(ll,ld32s);
> +OP_LD_ATOMIC(ll, ld32s);
>  #if defined(TARGET_MIPS64)
> -OP_LD_ATOMIC(lld,ld64);
> +OP_LD_ATOMIC(lld, ld64);
>  #endif
>  #undef OP_LD_ATOMIC
>
> @@ -9794,7 +9794,7 @@ static void gen_dmtc0(DisasContext *ctx, TCGv arg, int reg, int sel)
>          case 7:
>              CP0_CHECK(ctx->kscrexist & (1 << sel));
>              tcg_gen_st_tl(arg, cpu_env,
> -                          offsetof(CPUMIPSState, CP0_KScratch[sel-2]));
> +                          offsetof(CPUMIPSState, CP0_KScratch[sel - 2]));
>              register_name = "KScratch";
>              break;
>          default:
> @@ -9960,84 +9960,86 @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
>          default:
>              gen_mfc0(ctx, t0, rt, sel);
>          }
> -    } else switch (sel) {
> -    /* GPR registers. */
> -    case 0:
> -        gen_helper_1e0i(mftgpr, t0, rt);
> -        break;
> -    /* Auxiliary CPU registers */
> -    case 1:
> -        switch (rt) {
> +    } else {
> +        switch (sel) {
> +        /* GPR registers. */
>          case 0:
> -            gen_helper_1e0i(mftlo, t0, 0);
> +            gen_helper_1e0i(mftgpr, t0, rt);
>              break;
> +        /* Auxiliary CPU registers */
>          case 1:
> -            gen_helper_1e0i(mfthi, t0, 0);
> +            switch (rt) {
> +            case 0:
> +                gen_helper_1e0i(mftlo, t0, 0);
> +                break;
> +            case 1:
> +                gen_helper_1e0i(mfthi, t0, 0);
> +                break;
> +            case 2:
> +                gen_helper_1e0i(mftacx, t0, 0);
> +                break;
> +            case 4:
> +                gen_helper_1e0i(mftlo, t0, 1);
> +                break;
> +            case 5:
> +                gen_helper_1e0i(mfthi, t0, 1);
> +                break;
> +            case 6:
> +                gen_helper_1e0i(mftacx, t0, 1);
> +                break;
> +            case 8:
> +                gen_helper_1e0i(mftlo, t0, 2);
> +                break;
> +            case 9:
> +                gen_helper_1e0i(mfthi, t0, 2);
> +                break;
> +            case 10:
> +                gen_helper_1e0i(mftacx, t0, 2);
> +                break;
> +            case 12:
> +                gen_helper_1e0i(mftlo, t0, 3);
> +                break;
> +            case 13:
> +                gen_helper_1e0i(mfthi, t0, 3);
> +                break;
> +            case 14:
> +                gen_helper_1e0i(mftacx, t0, 3);
> +                break;
> +            case 16:
> +                gen_helper_mftdsp(t0, cpu_env);
> +                break;
> +            default:
> +                goto die;
> +            }
>              break;
> +        /* Floating point (COP1). */
>          case 2:
> -            gen_helper_1e0i(mftacx, t0, 0);
> +            /* XXX: For now we support only a single FPU context. */
> +            if (h == 0) {
> +                TCGv_i32 fp0 = tcg_temp_new_i32();
> +
> +                gen_load_fpr32(ctx, fp0, rt);
> +                tcg_gen_ext_i32_tl(t0, fp0);
> +                tcg_temp_free_i32(fp0);
> +            } else {
> +                TCGv_i32 fp0 = tcg_temp_new_i32();
> +
> +                gen_load_fpr32h(ctx, fp0, rt);
> +                tcg_gen_ext_i32_tl(t0, fp0);
> +                tcg_temp_free_i32(fp0);
> +            }
>              break;
> -        case 4:
> -            gen_helper_1e0i(mftlo, t0, 1);
> +        case 3:
> +            /* XXX: For now we support only a single FPU context. */
> +            gen_helper_1e0i(cfc1, t0, rt);
>              break;
> +        /* COP2: Not implemented. */
> +        case 4:
>          case 5:
> -            gen_helper_1e0i(mfthi, t0, 1);
> -            break;
> -        case 6:
> -            gen_helper_1e0i(mftacx, t0, 1);
> -            break;
> -        case 8:
> -            gen_helper_1e0i(mftlo, t0, 2);
> -            break;
> -        case 9:
> -            gen_helper_1e0i(mfthi, t0, 2);
> -            break;
> -        case 10:
> -            gen_helper_1e0i(mftacx, t0, 2);
> -            break;
> -        case 12:
> -            gen_helper_1e0i(mftlo, t0, 3);
> -            break;
> -        case 13:
> -            gen_helper_1e0i(mfthi, t0, 3);
> -            break;
> -        case 14:
> -            gen_helper_1e0i(mftacx, t0, 3);
> -            break;
> -        case 16:
> -            gen_helper_mftdsp(t0, cpu_env);
> -            break;
> +            /* fall through */
>          default:
>              goto die;
>          }
> -        break;
> -    /* Floating point (COP1). */
> -    case 2:
> -        /* XXX: For now we support only a single FPU context. */
> -        if (h == 0) {
> -            TCGv_i32 fp0 = tcg_temp_new_i32();
> -
> -            gen_load_fpr32(ctx, fp0, rt);
> -            tcg_gen_ext_i32_tl(t0, fp0);
> -            tcg_temp_free_i32(fp0);
> -        } else {
> -            TCGv_i32 fp0 = tcg_temp_new_i32();
> -
> -            gen_load_fpr32h(ctx, fp0, rt);
> -            tcg_gen_ext_i32_tl(t0, fp0);
> -            tcg_temp_free_i32(fp0);
> -        }
> -        break;
> -    case 3:
> -        /* XXX: For now we support only a single FPU context. */
> -        gen_helper_1e0i(cfc1, t0, rt);
> -        break;
> -    /* COP2: Not implemented. */
> -    case 4:
> -    case 5:
> -        /* fall through */
> -    default:
> -        goto die;
>      }
>      trace_mips_translate_tr("mftr", rt, u, sel, h);
>      gen_store_gpr(t0, rd);
> @@ -10162,91 +10164,93 @@ static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
>          default:
>              gen_mtc0(ctx, t0, rd, sel);
>          }
> -    } else switch (sel) {
> -    /* GPR registers. */
> -    case 0:
> -        gen_helper_0e1i(mttgpr, t0, rd);
> -        break;
> -    /* Auxiliary CPU registers */
> -    case 1:
> -        switch (rd) {
> +    } else {
> +        switch (sel) {
> +        /* GPR registers. */
>          case 0:
> -            gen_helper_0e1i(mttlo, t0, 0);
> +            gen_helper_0e1i(mttgpr, t0, rd);
>              break;
> +        /* Auxiliary CPU registers */
>          case 1:
> -            gen_helper_0e1i(mtthi, t0, 0);
> +            switch (rd) {
> +            case 0:
> +                gen_helper_0e1i(mttlo, t0, 0);
> +                break;
> +            case 1:
> +                gen_helper_0e1i(mtthi, t0, 0);
> +                break;
> +            case 2:
> +                gen_helper_0e1i(mttacx, t0, 0);
> +                break;
> +            case 4:
> +                gen_helper_0e1i(mttlo, t0, 1);
> +                break;
> +            case 5:
> +                gen_helper_0e1i(mtthi, t0, 1);
> +                break;
> +            case 6:
> +                gen_helper_0e1i(mttacx, t0, 1);
> +                break;
> +            case 8:
> +                gen_helper_0e1i(mttlo, t0, 2);
> +                break;
> +            case 9:
> +                gen_helper_0e1i(mtthi, t0, 2);
> +                break;
> +            case 10:
> +                gen_helper_0e1i(mttacx, t0, 2);
> +                break;
> +            case 12:
> +                gen_helper_0e1i(mttlo, t0, 3);
> +                break;
> +            case 13:
> +                gen_helper_0e1i(mtthi, t0, 3);
> +                break;
> +            case 14:
> +                gen_helper_0e1i(mttacx, t0, 3);
> +                break;
> +            case 16:
> +                gen_helper_mttdsp(cpu_env, t0);
> +                break;
> +            default:
> +                goto die;
> +            }
>              break;
> +        /* Floating point (COP1). */
>          case 2:
> -            gen_helper_0e1i(mttacx, t0, 0);
> +            /* XXX: For now we support only a single FPU context. */
> +            if (h == 0) {
> +                TCGv_i32 fp0 = tcg_temp_new_i32();
> +
> +                tcg_gen_trunc_tl_i32(fp0, t0);
> +                gen_store_fpr32(ctx, fp0, rd);
> +                tcg_temp_free_i32(fp0);
> +            } else {
> +                TCGv_i32 fp0 = tcg_temp_new_i32();
> +
> +                tcg_gen_trunc_tl_i32(fp0, t0);
> +                gen_store_fpr32h(ctx, fp0, rd);
> +                tcg_temp_free_i32(fp0);
> +            }
>              break;
> -        case 4:
> -            gen_helper_0e1i(mttlo, t0, 1);
> +        case 3:
> +            /* XXX: For now we support only a single FPU context. */
> +            {
> +                TCGv_i32 fs_tmp = tcg_const_i32(rd);
> +
> +                gen_helper_0e2i(ctc1, t0, fs_tmp, rt);
> +                tcg_temp_free_i32(fs_tmp);
> +            }
> +            /* Stop translation as we may have changed hflags */
> +            ctx->base.is_jmp = DISAS_STOP;
>              break;
> +        /* COP2: Not implemented. */
> +        case 4:
>          case 5:
> -            gen_helper_0e1i(mtthi, t0, 1);
> -            break;
> -        case 6:
> -            gen_helper_0e1i(mttacx, t0, 1);
> -            break;
> -        case 8:
> -            gen_helper_0e1i(mttlo, t0, 2);
> -            break;
> -        case 9:
> -            gen_helper_0e1i(mtthi, t0, 2);
> -            break;
> -        case 10:
> -            gen_helper_0e1i(mttacx, t0, 2);
> -            break;
> -        case 12:
> -            gen_helper_0e1i(mttlo, t0, 3);
> -            break;
> -        case 13:
> -            gen_helper_0e1i(mtthi, t0, 3);
> -            break;
> -        case 14:
> -            gen_helper_0e1i(mttacx, t0, 3);
> -            break;
> -        case 16:
> -            gen_helper_mttdsp(cpu_env, t0);
> -            break;
> +            /* fall through */
>          default:
>              goto die;
>          }
> -        break;
> -    /* Floating point (COP1). */
> -    case 2:
> -        /* XXX: For now we support only a single FPU context. */
> -        if (h == 0) {
> -            TCGv_i32 fp0 = tcg_temp_new_i32();
> -
> -            tcg_gen_trunc_tl_i32(fp0, t0);
> -            gen_store_fpr32(ctx, fp0, rd);
> -            tcg_temp_free_i32(fp0);
> -        } else {
> -            TCGv_i32 fp0 = tcg_temp_new_i32();
> -
> -            tcg_gen_trunc_tl_i32(fp0, t0);
> -            gen_store_fpr32h(ctx, fp0, rd);
> -            tcg_temp_free_i32(fp0);
> -        }
> -        break;
> -    case 3:
> -        /* XXX: For now we support only a single FPU context. */
> -        {
> -            TCGv_i32 fs_tmp = tcg_const_i32(rd);
> -
> -            gen_helper_0e2i(ctc1, t0, fs_tmp, rt);
> -            tcg_temp_free_i32(fs_tmp);
> -        }
> -        /* Stop translation as we may have changed hflags */
> -        ctx->base.is_jmp = DISAS_STOP;
> -        break;
> -    /* COP2: Not implemented. */
> -    case 4:
> -    case 5:
> -        /* fall through */
> -    default:
> -        goto die;
>      }
>      trace_mips_translate_tr("mttr", rd, u, sel, h);
>      tcg_temp_free(t0);
> @@ -10492,7 +10496,7 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
>          {
>              TCGv_i32 t1 = tcg_temp_new_i32();
>              tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
>              tcg_gen_nand_i32(t0, t0, t1);
>              tcg_temp_free_i32(t1);
>              tcg_gen_andi_i32(t0, t0, 1);
> @@ -10503,7 +10507,7 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
>          {
>              TCGv_i32 t1 = tcg_temp_new_i32();
>              tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
>              tcg_gen_or_i32(t0, t0, t1);
>              tcg_temp_free_i32(t1);
>              tcg_gen_andi_i32(t0, t0, 1);
> @@ -10514,11 +10518,11 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
>          {
>              TCGv_i32 t1 = tcg_temp_new_i32();
>              tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
>              tcg_gen_and_i32(t0, t0, t1);
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+2));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 2));
>              tcg_gen_and_i32(t0, t0, t1);
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+3));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
>              tcg_gen_nand_i32(t0, t0, t1);
>              tcg_temp_free_i32(t1);
>              tcg_gen_andi_i32(t0, t0, 1);
> @@ -10529,11 +10533,11 @@ static void gen_compute_branch1(DisasContext *ctx, uint32_t op,
>          {
>              TCGv_i32 t1 = tcg_temp_new_i32();
>              tcg_gen_shri_i32(t0, fpu_fcr31, get_fp_bit(cc));
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+1));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 1));
>              tcg_gen_or_i32(t0, t0, t1);
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+2));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 2));
>              tcg_gen_or_i32(t0, t0, t1);
> -            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc+3));
> +            tcg_gen_shri_i32(t1, fpu_fcr31, get_fp_bit(cc + 3));
>              tcg_gen_or_i32(t0, t0, t1);
>              tcg_temp_free_i32(t1);
>              tcg_gen_andi_i32(t0, t0, 1);
> @@ -10997,7 +11001,7 @@ static inline void gen_movcf_ps(DisasContext *ctx, int fs, int fd,
>      gen_store_fpr32(ctx, t0, fd);
>      gen_set_label(l1);
>
> -    tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc+1));
> +    tcg_gen_andi_i32(t0, fpu_fcr31, 1 << get_fp_bit(cc + 1));
>      tcg_gen_brcondi_i32(cond, t0, 0, l2);
>      gen_load_fpr32h(ctx, t0, fs);
>      gen_store_fpr32h(ctx, t0, fd);
> @@ -11611,9 +11615,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
>      case OPC_CMP_NGT_S:
>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>          if (ctx->opcode & (1 << 6)) {
> -            gen_cmpabs_s(ctx, func-48, ft, fs, cc);
> +            gen_cmpabs_s(ctx, func - 48, ft, fs, cc);
>          } else {
> -            gen_cmp_s(ctx, func-48, ft, fs, cc);
> +            gen_cmp_s(ctx, func - 48, ft, fs, cc);
>          }
>          break;
>      case OPC_ADD_D:
> @@ -12093,9 +12097,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
>      case OPC_CMP_NGT_D:
>          check_insn_opc_removed(ctx, ISA_MIPS32R6);
>          if (ctx->opcode & (1 << 6)) {
> -            gen_cmpabs_d(ctx, func-48, ft, fs, cc);
> +            gen_cmpabs_d(ctx, func - 48, ft, fs, cc);
>          } else {
> -            gen_cmp_d(ctx, func-48, ft, fs, cc);
> +            gen_cmp_d(ctx, func - 48, ft, fs, cc);
>          }
>          break;
>      case OPC_CVT_S_D:
> @@ -12495,9 +12499,9 @@ static void gen_farith(DisasContext *ctx, enum fopcode op1,
>      case OPC_CMP_LE_PS:
>      case OPC_CMP_NGT_PS:
>          if (ctx->opcode & (1 << 6)) {
> -            gen_cmpabs_ps(ctx, func-48, ft, fs, cc);
> +            gen_cmpabs_ps(ctx, func - 48, ft, fs, cc);
>          } else {
> -            gen_cmp_ps(ctx, func-48, ft, fs, cc);
> +            gen_cmp_ps(ctx, func - 48, ft, fs, cc);
>          }
>          break;
>      default:
> @@ -14310,7 +14314,7 @@ static int decode_mips16_opc(CPUMIPSState *env, DisasContext *ctx)
>              case RR_RY_CNVT_SEH:
>                  tcg_gen_ext16s_tl(cpu_gpr[rx], cpu_gpr[rx]);
>                  break;
> -#if defined (TARGET_MIPS64)
> +#if defined(TARGET_MIPS64)
>              case RR_RY_CNVT_ZEW:
>                  check_insn(ctx, ISA_MIPS64);
>                  check_mips_64(ctx);
> @@ -15034,11 +15038,11 @@ static int mmreg2(int r)
>
>  /* Signed immediate */
>  #define SIMM(op, start, width)                                          \
> -    ((int32_t)(((op >> start) & ((~0U) >> (32-width)))                 \
> -               << (32-width))                                           \
> -     >> (32-width))
> +    ((int32_t)(((op >> start) & ((~0U) >> (32 - width)))                \
> +               << (32 - width))                                         \
> +     >> (32 - width))
>  /* Zero-extended immediate */
> -#define ZIMM(op, start, width) ((op >> start) & ((~0U) >> (32-width)))
> +#define ZIMM(op, start, width) ((op >> start) & ((~0U) >> (32 - width)))
>
>  static void gen_addiur1sp(DisasContext *ctx)
>  {
> @@ -15732,7 +15736,10 @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs)
>                  save_cpu_state(ctx, 1);
>                  gen_helper_di(t0, cpu_env);
>                  gen_store_gpr(t0, rs);
> -                /* Stop translation as we may have switched the execution mode */
> +                /*
> +                 * Stop translation as we may have switched the execution
> +                 * mode.
> +                 */
>                  ctx->base.is_jmp = DISAS_STOP;
>                  tcg_temp_free(t0);
>              }
> @@ -15854,9 +15861,9 @@ static void gen_pool32fxf(DisasContext *ctx, int rt, int rs)
>      int extension = (ctx->opcode >> 6) & 0x3ff;
>      uint32_t mips32_op;
>
> -#define FLOAT_1BIT_FMT(opc, fmt) (fmt << 8) | opc
> -#define FLOAT_2BIT_FMT(opc, fmt) (fmt << 7) | opc
> -#define COND_FLOAT_MOV(opc, cond) (cond << 7) | opc
> +#define FLOAT_1BIT_FMT(opc, fmt)    ((fmt << 8) | opc)
> +#define FLOAT_2BIT_FMT(opc, fmt)    ((fmt << 7) | opc)
> +#define COND_FLOAT_MOV(opc, cond)   ((cond << 7) | opc)
>
>      switch (extension) {
>      case FLOAT_1BIT_FMT(CFC1, 0):
> @@ -30253,7 +30260,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
>      translator_loop(&mips_tr_ops, &ctx.base, cs, tb, max_insns);
>  }
>
> -static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
> +static void fpu_dump_state(CPUMIPSState *env, FILE * f, int flags)
>  {
>      int i;
>      int is_fpu64 = !!(env->hflags & MIPS_HFLAG_F64);
> @@ -30278,7 +30285,7 @@ static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
>                           (double)tmp.fs[FP_ENDIAN_IDX],                 \
>                           (double)tmp.fs[!FP_ENDIAN_IDX]);               \
>          }                                                               \
> -    } while(0)
> +    } while (0)
>
>
>      qemu_fprintf(f,
> @@ -30315,7 +30322,8 @@ void mips_cpu_dump_state(CPUState *cs, FILE *f, int flags)
>          }
>      }
>
> -    qemu_fprintf(f, "CP0 Status  0x%08x Cause   0x%08x EPC    0x" TARGET_FMT_lx "\n",
> +    qemu_fprintf(f, "CP0 Status  0x%08x Cause   0x%08x EPC    0x"
> +                 TARGET_FMT_lx "\n",
>                   env->CP0_Status, env->CP0_Cause, env->CP0_EPC);
>      qemu_fprintf(f, "    Config0 0x%08x Config1 0x%08x LLAddr 0x%016"
>                   PRIx64 "\n",
> @@ -30336,7 +30344,8 @@ void mips_tcg_init(void)
>      cpu_gpr[0] = NULL;
>      for (i = 1; i < 32; i++)
>          cpu_gpr[i] = tcg_global_mem_new(cpu_env,
> -                                        offsetof(CPUMIPSState, active_tc.gpr[i]),
> +                                        offsetof(CPUMIPSState,
> +                                                 active_tc.gpr[i]),
>                                          regnames[i]);
>
>      for (i = 0; i < 32; i++) {
> @@ -30364,7 +30373,8 @@ void mips_tcg_init(void)
>                                         regnames_LO[i]);
>      }
>      cpu_dspctrl = tcg_global_mem_new(cpu_env,
> -                                     offsetof(CPUMIPSState, active_tc.DSPControl),
> +                                     offsetof(CPUMIPSState,
> +                                              active_tc.DSPControl),
>                                       "DSPControl");
>      bcond = tcg_global_mem_new(cpu_env,
>                                 offsetof(CPUMIPSState, bcond), "bcond");
> --
> 2.7.4
>

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 12/37] target/mips: Style improvements in cps.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 12/37] target/mips: Style improvements in cps.c Aleksandar Markovic
@ 2019-08-19 14:44   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:44 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 12/37] target/mips: Style improvements in cps.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/cps.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/hw/mips/cps.c b/hw/mips/cps.c
> index c84bc64..8fe2f47 100644
> --- a/hw/mips/cps.c
> +++ b/hw/mips/cps.c
> @@ -37,8 +37,10 @@ static void mips_cps_init(Object *obj)
>      SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
>      MIPSCPSState *s = MIPS_CPS(obj);
>
> -    /* Cover entire address space as there do not seem to be any
> -     * constraints for the base address of CPC and GIC. */
> +    /*
> +     * Cover entire address space as there do not seem to be any
> +     * constraints for the base address of CPC and GIC.
> +     */
>      memory_region_init(&s->container, obj, "mips-cps-container", UINT64_MAX);
>      sysbus_init_mmio(sbd, &s->container);
>  }
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c Aleksandar Markovic
@ 2019-08-19 14:45   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:45 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/mips_fulong2e.c | 96 +++++++++++++++++++++++++++++--------------------
>  1 file changed, 58 insertions(+), 38 deletions(-)
>
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index 5dbaa3b..0c3d947 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -48,13 +48,13 @@
>
>  #define DEBUG_FULONG2E_INIT
>
> -#define ENVP_ADDR       0x80002000l
> -#define ENVP_NB_ENTRIES          16
> -#define ENVP_ENTRY_SIZE          256
> +#define ENVP_ADDR               0x80002000l
> +#define ENVP_NB_ENTRIES         16
> +#define ENVP_ENTRY_SIZE         256
>
>  /* fulong 2e has a 512k flash: Winbond W39L040AP70Z */
> -#define BIOS_SIZE (512 * KiB)
> -#define MAX_IDE_BUS 2
> +#define BIOS_SIZE               (512 * KiB)
> +#define MAX_IDE_BUS             2
>
>  /*
>   * PMON is not part of qemu and released with BSD license, anyone
> @@ -83,14 +83,15 @@ static struct _loaderparams {
>      const char *initrd_filename;
>  } loaderparams;
>
> -static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
> +static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index,
>                                          const char *string, ...)
>  {
>      va_list ap;
>      int32_t table_addr;
>
> -    if (index >= ENVP_NB_ENTRIES)
> +    if (index >= ENVP_NB_ENTRIES) {
>          return;
> +    }
>
>      if (string == NULL) {
>          prom_buf[index] = 0;
> @@ -105,7 +106,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
>      va_end(ap);
>  }
>
> -static int64_t load_kernel (CPUMIPSState *env)
> +static int64_t load_kernel(CPUMIPSState *env)
>  {
>      int64_t kernel_entry, kernel_low, kernel_high, initrd_size;
>      int index = 0;
> @@ -130,16 +131,18 @@ static int64_t load_kernel (CPUMIPSState *env)
>      initrd_size = 0;
>      initrd_offset = 0;
>      if (loaderparams.initrd_filename) {
> -        initrd_size = get_image_size (loaderparams.initrd_filename);
> +        initrd_size = get_image_size(loaderparams.initrd_filename);
>          if (initrd_size > 0) {
> -            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
> +            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) &
> +                            INITRD_PAGE_MASK;
>              if (initrd_offset + initrd_size > ram_size) {
>                  error_report("memory too small for initial ram disk '%s'",
>                               loaderparams.initrd_filename);
>                  exit(1);
>              }
>              initrd_size = load_image_targphys(loaderparams.initrd_filename,
> -                                     initrd_offset, ram_size - initrd_offset);
> +                                              initrd_offset,
> +                                              ram_size - initrd_offset);
>          }
>          if (initrd_size == (target_ulong) -1) {
>              error_report("could not load initial ram disk '%s'",
> @@ -154,9 +157,10 @@ static int64_t load_kernel (CPUMIPSState *env)
>
>      prom_set(prom_buf, index++, "%s", loaderparams.kernel_filename);
>      if (initrd_size > 0) {
> -        prom_set(prom_buf, index++, "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
> -                 cpu_mips_phys_to_kseg0(NULL, initrd_offset), initrd_size,
> -                 loaderparams.kernel_cmdline);
> +        prom_set(prom_buf, index++,
> +                 "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
> +                 cpu_mips_phys_to_kseg0(NULL, initrd_offset),
> +                 initrd_size, loaderparams.kernel_cmdline);
>      } else {
>          prom_set(prom_buf, index++, "%s", loaderparams.kernel_cmdline);
>      }
> @@ -175,34 +179,48 @@ static int64_t load_kernel (CPUMIPSState *env)
>      return kernel_entry;
>  }
>
> -static void write_bootloader (CPUMIPSState *env, uint8_t *base, int64_t kernel_addr)
> +static void write_bootloader(CPUMIPSState *env, uint8_t *base,
> +                             int64_t kernel_addr)
>  {
>      uint32_t *p;
>
>      /* Small bootloader */
> -    p = (uint32_t *) base;
> +    p = (uint32_t *)base;
>
> -    stl_p(p++, 0x0bf00010);                                      /* j 0x1fc00040 */
> -    stl_p(p++, 0x00000000);                                      /* nop */
> +    /* j 0x1fc00040 */
> +    stl_p(p++, 0x0bf00010);
> +    /* nop */
> +    stl_p(p++, 0x00000000);
>
>      /* Second part of the bootloader */
> -    p = (uint32_t *) (base + 0x040);
> -
> -    stl_p(p++, 0x3c040000);                                      /* lui a0, 0 */
> -    stl_p(p++, 0x34840002);                                      /* ori a0, a0, 2 */
> -    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));       /* lui a1, high(ENVP_ADDR) */
> -    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));               /* ori a1, a0, low(ENVP_ADDR) */
> -    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */
> -    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));         /* ori a2, a2, low(ENVP_ADDR + 8) */
> -    stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16));      /* lui a3, high(env->ram_size) */
> -    stl_p(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff));   /* ori a3, a3, low(env->ram_size) */
> -    stl_p(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff));     /* lui ra, high(kernel_addr) */;
> -    stl_p(p++, 0x37ff0000 | (kernel_addr & 0xffff));             /* ori ra, ra, low(kernel_addr) */
> -    stl_p(p++, 0x03e00008);                                      /* jr ra */
> -    stl_p(p++, 0x00000000);                                      /* nop */
> +    p = (uint32_t *)(base + 0x040);
> +
> +    /* lui a0, 0 */
> +    stl_p(p++, 0x3c040000);
> +    /* ori a0, a0, 2 */
> +    stl_p(p++, 0x34840002);
> +    /* lui a1, high(ENVP_ADDR) */
> +    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));
> +    /* ori a1, a0, low(ENVP_ADDR) */
> +    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));
> +    /* lui a2, high(ENVP_ADDR + 8) */
> +    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff));
> +    /* ori a2, a2, low(ENVP_ADDR + 8) */
> +    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));
> +    /* lui a3, high(env->ram_size) */
> +    stl_p(p++, 0x3c070000 | (loaderparams.ram_size >> 16));
> +    /* ori a3, a3, low(env->ram_size) */
> +    stl_p(p++, 0x34e70000 | (loaderparams.ram_size & 0xffff));
> +    /* lui ra, high(kernel_addr) */
> +    stl_p(p++, 0x3c1f0000 | ((kernel_addr >> 16) & 0xffff));
> +    /* ori ra, ra, low(kernel_addr) */
> +    stl_p(p++, 0x37ff0000 | (kernel_addr & 0xffff));
> +    /* jr ra */
> +    stl_p(p++, 0x03e00008);
> +    /* nop */
> +    stl_p(p++, 0x00000000);
>  }
>
> -
>  static void main_cpu_reset(void *opaque)
>  {
>      MIPSCPU *cpu = opaque;
> @@ -252,11 +270,11 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
>  }
>
>  /* Network support */
> -static void network_init (PCIBus *pci_bus)
> +static void network_init(PCIBus *pci_bus)
>  {
>      int i;
>
> -    for(i = 0; i < nb_nics; i++) {
> +    for (i = 0; i < nb_nics; i++) {
>          NICInfo *nd = &nd_table[i];
>          const char *default_devaddr = NULL;
>
> @@ -308,15 +326,17 @@ static void mips_fulong2e_init(MachineState *machine)
>      memory_region_add_subregion(address_space_mem, 0, ram);
>      memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
>
> -    /* We do not support flash operation, just loading pmon.bin as raw BIOS.
> -     * Please use -L to set the BIOS path and -bios to set bios name. */
> +    /*
> +     * We do not support flash operation, just loading pmon.bin as raw BIOS.
> +     * Please use -L to set the BIOS path and -bios to set bios name.
> +     */
>
>      if (kernel_filename) {
>          loaderparams.ram_size = ram_size;
>          loaderparams.kernel_filename = kernel_filename;
>          loaderparams.kernel_cmdline = kernel_cmdline;
>          loaderparams.initrd_filename = initrd_filename;
> -        kernel_entry = load_kernel (env);
> +        kernel_entry = load_kernel(env);
>          write_bootloader(env, memory_region_get_ram_ptr(bios), kernel_entry);
>      } else {
>          if (bios_name == NULL) {
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>



^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 14/37] target/mips: Style improvements in mips_int.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 14/37] target/mips: Style improvements in mips_int.c Aleksandar Markovic
@ 2019-08-19 14:46   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:46 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 14/37] target/mips: Style improvements in mips_int.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/mips_int.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
> index f899f6c..4c731ab 100644
> --- a/hw/mips/mips_int.c
> +++ b/hw/mips/mips_int.c
> @@ -35,8 +35,9 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
>      CPUState *cs = CPU(cpu);
>      bool locked = false;
>
> -    if (irq < 0 || irq > 7)
> +    if (irq < 0 || irq > 7) {
>          return;
> +    }
>
>      /* Make sure locking works even if BQL is already held by the caller */
>      if (!qemu_mutex_iothread_locked()) {
> --
> 2.7.4
>

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c Aleksandar Markovic
@ 2019-08-19 14:47   ` Aleksandar Rikalo
  2019-12-06 17:46     ` [PATCH " Philippe Mathieu-Daudé
  0 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:47 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/mips_malta.c | 216 ++++++++++++++++++++++++++++++---------------------
>  1 file changed, 128 insertions(+), 88 deletions(-)
>
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index 20e019b..0b5ee37 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -58,18 +58,18 @@
>  #include "hw/semihosting/semihost.h"
>  #include "hw/mips/cps.h"
>
> -#define ENVP_ADDR              0x80002000l
> -#define ENVP_NB_ENTRIES          16
> -#define ENVP_ENTRY_SIZE          256
> +#define ENVP_ADDR           0x80002000l
> +#define ENVP_NB_ENTRIES     16
> +#define ENVP_ENTRY_SIZE     256
>
>  /* Hardware addresses */
> -#define FLASH_ADDRESS 0x1e000000ULL
> -#define FPGA_ADDRESS  0x1f000000ULL
> -#define RESET_ADDRESS 0x1fc00000ULL
> +#define FLASH_ADDRESS       0x1e000000ULL
> +#define FPGA_ADDRESS        0x1f000000ULL
> +#define RESET_ADDRESS       0x1fc00000ULL
>
> -#define FLASH_SIZE    0x400000
> +#define FLASH_SIZE          0x400000
>
> -#define MAX_IDE_BUS 2
> +#define MAX_IDE_BUS         2
>
>  typedef struct {
>      MemoryRegion iomem;
> @@ -115,10 +115,11 @@ static void malta_fpga_update_display(void *opaque)
>      MaltaFPGAState *s = opaque;
>
>      for (i = 7 ; i >= 0 ; i--) {
> -        if (s->leds & (1 << i))
> +        if (s->leds & (1 << i)) {
>              leds_text[i] = '#';
> -        else
> +        } else {
>              leds_text[i] = ' ';
> +        }
>      }
>      leds_text[8] = '\0';
>
> @@ -138,8 +139,6 @@ static void malta_fpga_update_display(void *opaque)
>   * Typical device names include Microchip 24C02SC or SGS Thomson ST24C02.
>   */
>
> -//~ #define DEBUG
> -
>  #if defined(DEBUG)
>  #  define logout(fmt, ...) fprintf(stderr, "MALTA\t%-24s" fmt, __func__, ## __VA_ARGS__)
>  #else
> @@ -154,7 +153,7 @@ struct _eeprom24c0x_t {
>    uint8_t scl;
>    uint8_t sda;
>    uint8_t data;
> -  //~ uint16_t size;
> +  /* uint16_t size; */
>    uint8_t contents[256];
>  };
>
> @@ -162,22 +161,38 @@ typedef struct _eeprom24c0x_t eeprom24c0x_t;
>
>  static eeprom24c0x_t spd_eeprom = {
>      .contents = {
> -        /* 00000000: */ 0x80,0x08,0xFF,0x0D,0x0A,0xFF,0x40,0x00,
> -        /* 00000008: */ 0x01,0x75,0x54,0x00,0x82,0x08,0x00,0x01,
> -        /* 00000010: */ 0x8F,0x04,0x02,0x01,0x01,0x00,0x00,0x00,
> -        /* 00000018: */ 0x00,0x00,0x00,0x14,0x0F,0x14,0x2D,0xFF,
> -        /* 00000020: */ 0x15,0x08,0x15,0x08,0x00,0x00,0x00,0x00,
> -        /* 00000028: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000030: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000038: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0xD0,
> -        /* 00000040: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000048: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000050: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000058: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000060: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000068: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000070: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
> -        /* 00000078: */ 0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xF4,
> +        /* 00000000: */
> +        0x80, 0x08, 0xFF, 0x0D, 0x0A, 0xFF, 0x40, 0x00,
> +        /* 00000008: */
> +        0x01, 0x75, 0x54, 0x00, 0x82, 0x08, 0x00, 0x01,
> +        /* 00000010: */
> +        0x8F, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00,
> +        /* 00000018: */
> +        0x00, 0x00, 0x00, 0x14, 0x0F, 0x14, 0x2D, 0xFF,
> +        /* 00000020: */
> +        0x15, 0x08, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000028: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000030: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000038: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xD0,
> +        /* 00000040: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000048: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000050: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000058: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000060: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000068: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000070: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +        /* 00000078: */
> +        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4,
>      },
>  };
>
> @@ -347,7 +362,8 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
>
>      /* SWITCH Register */
>      case 0x00200:
> -        val = 0x00000000;              /* All switches closed */
> +        /* ori a3, a3, low(ram_low_size) */
> +        val = 0x00000000;
>          break;
>
>      /* STATUS Register */
> @@ -386,10 +402,11 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
>      /* GPINP Register */
>      case 0x00a08:
>          /* IN = OUT until a real I2C control is implemented */
> -        if (s->i2csel)
> +        if (s->i2csel) {
>              val = s->i2cout;
> -        else
> +        } else {
>              val = 0x00;
> +        }
>          break;
>
>      /* I2CINP Register */
> @@ -414,8 +431,8 @@ static uint64_t malta_fpga_read(void *opaque, hwaddr addr,
>
>      default:
>  #if 0
> -        printf ("malta_fpga_read: Bad register offset 0x" TARGET_FMT_lx "\n",
> -                addr);
> +        printf("malta_fpga_read: Bad register offset 0x" TARGET_FMT_lx "\n",
> +               addr);
>  #endif
>          break;
>      }
> @@ -467,8 +484,9 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
>
>      /* SOFTRES Register */
>      case 0x00500:
> -        if (val == 0x42)
> +        if (val == 0x42) {
>              qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
> +        }
>          break;
>
>      /* BRKRES Register */
> @@ -501,8 +519,8 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
>
>      default:
>  #if 0
> -        printf ("malta_fpga_write: Bad register offset 0x" TARGET_FMT_lx "\n",
> -                addr);
> +        printf("malta_fpga_write: Bad register offset 0x" TARGET_FMT_lx "\n",
> +               addr);
>  #endif
>          break;
>      }
> @@ -561,7 +579,7 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
>      memory_region_init_alias(&s->iomem_lo, NULL, "malta-fpga",
>                               &s->iomem, 0, 0x900);
>      memory_region_init_alias(&s->iomem_hi, NULL, "malta-fpga",
> -                             &s->iomem, 0xa00, 0x10000-0xa00);
> +                             &s->iomem, 0xa00, 0x10000 - 0xa00);
>
>      memory_region_add_subregion(address_space, base, &s->iomem_lo);
>      memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi);
> @@ -585,7 +603,7 @@ static void network_init(PCIBus *pci_bus)
>  {
>      int i;
>
> -    for(i = 0; i < nb_nics; i++) {
> +    for (i = 0; i < nb_nics; i++) {
>          NICInfo *nd = &nd_table[i];
>          const char *default_devaddr = NULL;
>
> @@ -799,27 +817,28 @@ static void write_bootloader_nanomips(uint8_t *base, int64_t run_addr,
>                                  /* jalrc   t8                   */
>  }
>
> -/* ROM and pseudo bootloader
> -
> -   The following code implements a very very simple bootloader. It first
> -   loads the registers a0 to a3 to the values expected by the OS, and
> -   then jump at the kernel address.
> -
> -   The bootloader should pass the locations of the kernel arguments and
> -   environment variables tables. Those tables contain the 32-bit address
> -   of NULL terminated strings. The environment variables table should be
> -   terminated by a NULL address.
> -
> -   For a simpler implementation, the number of kernel arguments is fixed
> -   to two (the name of the kernel and the command line), and the two
> -   tables are actually the same one.
> -
> -   The registers a0 to a3 should contain the following values:
> -     a0 - number of kernel arguments
> -     a1 - 32-bit address of the kernel arguments table
> -     a2 - 32-bit address of the environment variables table
> -     a3 - RAM size in bytes
> -*/
> +/*
> + * ROM and pseudo bootloader
> + *
> + * The following code implements a very very simple bootloader. It first
> + * loads the registers a0 to a3 to the values expected by the OS, and
> + * then jump at the kernel address.
> + *
> + * The bootloader should pass the locations of the kernel arguments and
> + * environment variables tables. Those tables contain the 32-bit address
> + * of NULL terminated strings. The environment variables table should be
> + * terminated by a NULL address.
> + *
> + * For a simpler implementation, the number of kernel arguments is fixed
> + * to two (the name of the kernel and the command line), and the two
> + * tables are actually the same one.
> + *
> + * The registers a0 to a3 should contain the following values:
> + *   a0 - number of kernel arguments
> + *   a1 - 32-bit address of the kernel arguments table
> + *   a2 - 32-bit address of the environment variables table
> + *   a3 - RAM size in bytes
> + */
>  static void write_bootloader(uint8_t *base, int64_t run_addr,
>                               int64_t kernel_entry)
>  {
> @@ -857,14 +876,23 @@ static void write_bootloader(uint8_t *base, int64_t run_addr,
>      } else {
>          stl_p(p++, 0x24040002);                         /* addiu a0, zero, 2 */
>      }
> -    stl_p(p++, 0x3c1d0000 | (((ENVP_ADDR - 64) >> 16) & 0xffff)); /* lui sp, high(ENVP_ADDR) */
> -    stl_p(p++, 0x37bd0000 | ((ENVP_ADDR - 64) & 0xffff));        /* ori sp, sp, low(ENVP_ADDR) */
> -    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));       /* lui a1, high(ENVP_ADDR) */
> -    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));               /* ori a1, a1, low(ENVP_ADDR) */
> -    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff)); /* lui a2, high(ENVP_ADDR + 8) */
> -    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));         /* ori a2, a2, low(ENVP_ADDR + 8) */
> -    stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16));     /* lui a3, high(ram_low_size) */
> -    stl_p(p++, 0x34e70000 | (loaderparams.ram_low_size & 0xffff));  /* ori a3, a3, low(ram_low_size) */
> +
> +    /* lui sp, high(ENVP_ADDR) */
> +    stl_p(p++, 0x3c1d0000 | (((ENVP_ADDR - 64) >> 16) & 0xffff));
> +    /* ori sp, sp, low(ENVP_ADDR) */
> +    stl_p(p++, 0x37bd0000 | ((ENVP_ADDR - 64) & 0xffff));
> +    /* lui a1, high(ENVP_ADDR) */
> +    stl_p(p++, 0x3c050000 | ((ENVP_ADDR >> 16) & 0xffff));
> +    /* ori a1, a1, low(ENVP_ADDR) */
> +    stl_p(p++, 0x34a50000 | (ENVP_ADDR & 0xffff));
> +    /* lui a2, high(ENVP_ADDR + 8) */
> +    stl_p(p++, 0x3c060000 | (((ENVP_ADDR + 8) >> 16) & 0xffff));
> +    /* ori a2, a2, low(ENVP_ADDR + 8) */
> +    stl_p(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff));
> +    /* lui a3, high(ram_low_size) */
> +    stl_p(p++, 0x3c070000 | (loaderparams.ram_low_size >> 16));
> +    /* ori a3, a3, low(ram_low_size) */
> +    stl_p(p++, 0x34e70000 | (loaderparams.ram_low_size & 0xffff));
>
>      /* Load BAR registers as done by YAMON */
>      stl_p(p++, 0x3c09b400);                                      /* lui t1, 0xb400 */
> @@ -968,14 +996,15 @@ static void write_bootloader(uint8_t *base, int64_t run_addr,
>
>  }
>
> -static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
> +static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t *prom_buf, int index,
>                                          const char *string, ...)
>  {
>      va_list ap;
>      int32_t table_addr;
>
> -    if (index >= ENVP_NB_ENTRIES)
> +    if (index >= ENVP_NB_ENTRIES) {
>          return;
> +    }
>
>      if (string == NULL) {
>          prom_buf[index] = 0;
> @@ -991,7 +1020,7 @@ static void GCC_FMT_ATTR(3, 4) prom_set(uint32_t* prom_buf, int index,
>  }
>
>  /* Kernel */
> -static int64_t load_kernel (void)
> +static int64_t load_kernel(void)
>  {
>      int64_t kernel_entry, kernel_high, initrd_size;
>      long kernel_size;
> @@ -1039,11 +1068,13 @@ static int64_t load_kernel (void)
>      initrd_size = 0;
>      initrd_offset = 0;
>      if (loaderparams.initrd_filename) {
> -        initrd_size = get_image_size (loaderparams.initrd_filename);
> +        initrd_size = get_image_size(loaderparams.initrd_filename);
>          if (initrd_size > 0) {
> -            /* The kernel allocates the bootmap memory in the low memory after
> -               the initrd.  It takes at most 128kiB for 2GB RAM and 4kiB
> -               pages.  */
> +            /*
> +             * The kernel allocates the bootmap memory in the low memory after
> +             * the initrd.  It takes at most 128kiB for 2GB RAM and 4kiB
> +             * pages.
> +             */
>              initrd_offset = (loaderparams.ram_low_size - initrd_size
>                               - (128 * KiB)
>                               - ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
> @@ -1069,9 +1100,10 @@ static int64_t load_kernel (void)
>
>      prom_set(prom_buf, prom_index++, "%s", loaderparams.kernel_filename);
>      if (initrd_size > 0) {
> -        prom_set(prom_buf, prom_index++, "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
> -                 xlate_to_kseg0(NULL, initrd_offset), initrd_size,
> -                 loaderparams.kernel_cmdline);
> +        prom_set(prom_buf, prom_index++,
> +                 "rd_start=0x%" PRIx64 " rd_size=%" PRId64 " %s",
> +                 xlate_to_kseg0(NULL, initrd_offset),
> +                 initrd_size, loaderparams.kernel_cmdline);
>      } else {
>          prom_set(prom_buf, prom_index++, "%s", loaderparams.kernel_cmdline);
>      }
> @@ -1111,9 +1143,11 @@ static void main_cpu_reset(void *opaque)
>
>      cpu_reset(CPU(cpu));
>
> -    /* The bootloader does not need to be rewritten as it is located in a
> -       read only location. The kernel location and the arguments table
> -       location does not change. */
> +    /*
> +     * The bootloader does not need to be rewritten as it is located in a
> +     * read only location. The kernel location and the arguments table
> +     * location does not change.
> +     */
>      if (loaderparams.kernel_filename) {
>          env->CP0_Status &= ~(1 << CP0St_ERL);
>      }
> @@ -1211,9 +1245,11 @@ void mips_malta_init(MachineState *machine)
>      DeviceState *dev = qdev_create(NULL, TYPE_MIPS_MALTA);
>      MaltaState *s = MIPS_MALTA(dev);
>
> -    /* The whole address space decoded by the GT-64120A doesn't generate
> -       exception when accessing invalid memory. Create an empty slot to
> -       emulate this feature. */
> +    /*
> +     * The whole address space decoded by the GT-64120A doesn't generate
> +     * exception when accessing invalid memory. Create an empty slot to
> +     * emulate this feature.\
> +     */
>      empty_slot_init(0, 0x20000000);
>
>      qdev_init_nofail(dev);
> @@ -1329,8 +1365,10 @@ void mips_malta_init(MachineState *machine)
>                  exit(1);
>              }
>          }
> -        /* In little endian mode the 32bit words in the bios are swapped,
> -           a neat trick which allows bi-endian firmware. */
> +        /*
> +         * In little endian mode the 32bit words in the bios are swapped,
> +         * a neat trick which allows bi-endian firmware.
> +         */
>  #ifndef TARGET_WORDS_BIGENDIAN
>          {
>              uint32_t *end, *addr;
> @@ -1384,8 +1422,10 @@ void mips_malta_init(MachineState *machine)
>
>      piix4_devfn = piix4_init(pci_bus, &isa_bus, 80);
>
> -    /* Interrupt controller */
> -    /* The 8259 is attached to the MIPS CPU INT0 pin, ie interrupt 2 */
> +    /*
> +     * Interrupt controller
> +     * The 8259 is attached to the MIPS CPU INT0 pin, ie interrupt 2
> +     */
>      s->i8259 = i8259_init(isa_bus, i8259_irq);
>
>      isa_bus_irqs(isa_bus, s->i8259);
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c Aleksandar Markovic
@ 2019-08-19 14:48   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:48 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:07 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/mips_mipssim.c | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
> index 824abda..b3155e17 100644
> --- a/hw/mips/mips_mipssim.c
> +++ b/hw/mips/mips_mipssim.c
> @@ -3,7 +3,7 @@
>   *
>   * Emulates a very simple machine model similar to the one used by the
>   * proprietary MIPS emulator.
> - *
> + *
>   * Copyright (c) 2007 Thiemo Seufer
>   *
>   * Permission is hereby granted, free of charge, to any person obtaining a copy
> @@ -75,8 +75,9 @@ static int64_t load_kernel(void)
>                             (uint64_t *)&kernel_high, big_endian,
>                             EM_MIPS, 1, 0);
>      if (kernel_size >= 0) {
> -        if ((entry & ~0x7fffffffULL) == 0x80000000)
> +        if ((entry & ~0x7fffffffULL) == 0x80000000) {
>              entry = (int32_t)entry;
> +        }
>      } else {
>          error_report("could not load kernel '%s': %s",
>                       loaderparams.kernel_filename,
> @@ -88,9 +89,10 @@ static int64_t load_kernel(void)
>      initrd_size = 0;
>      initrd_offset = 0;
>      if (loaderparams.initrd_filename) {
> -        initrd_size = get_image_size (loaderparams.initrd_filename);
> +        initrd_size = get_image_size(loaderparams.initrd_filename);
>          if (initrd_size > 0) {
> -            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) & INITRD_PAGE_MASK;
> +            initrd_offset = (kernel_high + ~INITRD_PAGE_MASK) &
> +                            INITRD_PAGE_MASK;
>              if (initrd_offset + initrd_size > loaderparams.ram_size) {
>                  error_report("memory too small for initial ram disk '%s'",
>                               loaderparams.initrd_filename);
> @@ -174,8 +176,9 @@ mips_mipssim_init(MachineState *machine)
>      /* Map the BIOS / boot exception handler. */
>      memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
>      /* Load a BIOS / boot exception handler image. */
> -    if (bios_name == NULL)
> +    if (bios_name == NULL) {
>          bios_name = BIOS_FILENAME;
> +    }
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
>      if (filename) {
>          bios_size = load_image_targphys(filename, 0x1fc00000LL, BIOS_SIZE);
> @@ -211,8 +214,10 @@ mips_mipssim_init(MachineState *machine)
>                               get_system_io(), 0, 0x00010000);
>      memory_region_add_subregion(get_system_memory(), 0x1fd00000, isa);
>
> -    /* A single 16450 sits at offset 0x3f8. It is attached to
> -       MIPS CPU INT2, which is interrupt 4. */
> +    /*
> +     * A single 16450 sits at offset 0x3f8. It is attached to
> +     * MIPS CPU INT2, which is interrupt 4.
> +     */
>      if (serial_hd(0))
>          serial_init(0x3f8, env->irq[4], 115200, serial_hd(0),
>                      get_system_io());
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info Aleksandar Markovic
@ 2019-08-19 14:49   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:49 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:08 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> There is a need for printing input and output data for failure cases,
> for debugging purpose. This is achieved by this patch, and only if a
> preprocessor constant is manually set to 1. (Assumption is that the
> need for such printout is relatively rare.)
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  tests/tcg/mips/include/test_utils_128.h | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/tests/tcg/mips/include/test_utils_128.h b/tests/tcg/mips/include/test_utils_128.h
> index 2fea610..0dd3868 100644
> --- a/tests/tcg/mips/include/test_utils_128.h
> +++ b/tests/tcg/mips/include/test_utils_128.h
> @@ -27,7 +27,8 @@
>  #include <inttypes.h>
>  #include <string.h>
>
> -#define PRINT_RESULTS 0
> +#define PRINT_RESULTS    0
> +#define PRINT_FAILURES   0
>
>
>  static inline int32_t check_results_128(const char *isa_ase_name,
> @@ -65,6 +66,26 @@ static inline int32_t check_results_128(const char *isa_ase_name,
>              (b128_result[2 * i + 1] == b128_expect[2 * i + 1])) {
>              pass_count++;
>          } else {
> +#if PRINT_FAILURES
> +            uint32_t ii;
> +            uint64_t a, b;
> +
> +            printf("\n");
> +
> +            printf("FAILURE for test case %d!\n", i);
> +
> +            memcpy(&a, (b128_expect + 2 * i), 8);
> +            memcpy(&b, (b128_expect + 2 * i + 1), 8);
> +            printf("Expected result : { 0x%016llxULL, 0x%016llxULL, },\n",
> +                   a, b);
> +
> +            memcpy(&a, (b128_result + 2 * i), 8);
> +            memcpy(&b, (b128_result + 2 * i + 1), 8);
> +            printf("Actual result   : { 0x%016llxULL, 0x%016llxULL, },\n",
> +                   a, b);
> +
> +            printf("\n");
> +#endif
>              fail_count++;
>          }
>      }
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [EXTERNAL][PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests
  2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests Aleksandar Markovic
@ 2019-08-19 14:50   ` Aleksandar Rikalo
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Rikalo @ 2019-08-19 14:50 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: philmd, Aleksandar Markovic

> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
> Sent: Monday, August 19, 2019 2:08 PM
> To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
> Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
> Subject: [EXTERNAL][PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests
>
> From: Aleksandar Markovic <amarkovic@wavecomp.com>
>
> At this moment, the only MIPS CPUs that are emulated in QEMU and
> support MSA extension are R5600 (mips32r5), and I6400/I6500 (mips64r6).
> Therefore, mips32r5 and mips64r6 are the only ISAs that could support
> MSA in QEMU. This means mips32r6 currently do not make much sense, and
> mips32r5 support for MSA tests is needed, which is done by this patch.
>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  .../mips/user/ase/msa/test_msa_compile_32r5eb.sh   | 917 +++++++++++++++++++++
>  .../mips/user/ase/msa/test_msa_compile_32r5el.sh   | 917 +++++++++++++++++++++
>  .../mips/user/ase/msa/test_msa_compile_32r6eb.sh   | 643 ---------------
>  .../mips/user/ase/msa/test_msa_compile_32r6el.sh   | 643 ---------------
>  tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh | 371 +++++++++
>  tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh | 371 +++++++++
>  tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh | 371 ---------
>  tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh | 371 ---------
>  8 files changed, 2576 insertions(+), 2028 deletions(-)
>  create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
>  create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
>  delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
>  delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
>  create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
>  create mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
>  delete mode 100644 tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
>  delete mode 100755 tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh
>
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
> new file mode 100755
> index 0000000..940cabe
> --- /dev/null
> +++ b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5eb.sh
> @@ -0,0 +1,917 @@
> +
> +#
> +# Bit Count
> +# ---------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_d_32r5eb
> +
> +#
> +# Bit move
> +# --------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bmnz_v_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bmz_v_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bsel_v_32r5eb
> +
> +#
> +# Bit Set
> +# -------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_d_32r5eb
> +
> +#
> +# Fixed Multiply
> +# --------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_madd_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_madd_q_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddr_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddr_q_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msub_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msub_q_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubr_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubr_q_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mul_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mul_q_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulr_q_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulr_q_w_32r5eb
> +
> +#
> +# Float Max Min
> +# -------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_d_32r5eb
> +
> +#
> +# Int Add
> +# -------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_d_32r5eb
> +
> +#
> +# Int Average
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_d_32r5eb
> +
> +#
> +# Int Compare
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_d_32r5eb
> +
> +#
> +# Int Divide
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_d_32r5eb
> +
> +#
> +# Int Dot Product
> +# ---------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_d_32r5eb
> +
> +#
> +# Int Max Min
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_d_32r5eb
> +
> +#
> +# Int Modulo
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_d_32r5eb
> +
> +#
> +# Int Multiply
> +# ------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_d_32r5eb
> +
> +#
> +# Int Subtract
> +# ------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_d_32r5eb
> +
> +#
> +# Interleave
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_d_32r5eb
> +
> +#
> +# Logic
> +# -----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_and_v.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_and_v_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_nor_v.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nor_v_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_or_v.c            \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_or_v_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_xor_v.c           \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_xor_v_32r5eb
> +
> +#
> +# Move
> +# ----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            move/test_msa_move_v.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_move_v_32r5eb
> +
> +#
> +# Pack
> +# ----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_d_32r5eb
> +
> +#
> +# Shift
> +# -----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_b.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_h.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_w.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_d.c          \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_d_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_b_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_h_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_w_32r5eb
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
> +-EB -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_d_32r5eb
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
> new file mode 100755
> index 0000000..048b30b
> --- /dev/null
> +++ b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r5el.sh
> @@ -0,0 +1,917 @@
> +
> +#
> +# Bit Count
> +# ---------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nloc_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nlzc_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pcnt_d_32r5el
> +
> +#
> +# Bit move
> +# --------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsl_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_binsr_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bmnz_v_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bmz_v_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bsel_v_32r5el
> +
> +#
> +# Bit Set
> +# -------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bclr_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bneg_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_bset_d_32r5el
> +
> +#
> +# Fixed Multiply
> +# --------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_madd_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_madd_q_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddr_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddr_q_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msub_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msub_q_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubr_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubr_q_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mul_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mul_q_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulr_q_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulr_q_w_32r5el
> +
> +#
> +# Float Max Min
> +# -------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmax_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_fmin_d_32r5el
> +
> +#
> +# Int Add
> +# -------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_add_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_adds_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_addv_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hadd_u_d_32r5el
> +
> +#
> +# Int Average
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ave_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_aver_u_d_32r5el
> +
> +#
> +# Int Compare
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ceq_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_cle_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_clt_u_d_32r5el
> +
> +#
> +# Int Divide
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_div_u_d_32r5el
> +
> +#
> +# Int Dot Product
> +# ---------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dotp_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpadd_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_dpsub_u_d_32r5el
> +
> +#
> +# Int Max Min
> +# -----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_max_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_a_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_min_u_d_32r5el
> +
> +#
> +# Int Modulo
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mod_u_d_32r5el
> +
> +#
> +# Int Multiply
> +# ------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_maddv_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_msubv_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_mulv_d_32r5el
> +
> +#
> +# Int Subtract
> +# ------------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_asub_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_hsub_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subs_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsus_u_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subsuu_s_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_subv_d_32r5el
> +
> +#
> +# Interleave
> +# ----------
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvev_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvod_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvl_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_ilvr_d_32r5el
> +
> +#
> +# Logic
> +# -----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_and_v.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_and_v_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_nor_v.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_nor_v_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_or_v.c            \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_or_v_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc           logic/test_msa_xor_v.c           \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_xor_v_32r5el
> +
> +#
> +# Move
> +# ----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            move/test_msa_move_v.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_move_v_32r5el
> +
> +#
> +# Pack
> +# ----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckev_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_pckod_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_vshf_d_32r5el
> +
> +#
> +# Shift
> +# -----
> +#
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sll_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sll_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_sra_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_sra_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srar_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srar_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_b.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_h.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_w.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srl_d.c          \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srl_d_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_b_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_h_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_w_32r5el
> +/opt/mti/bin/mips-mti-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
> +-EL -static -mabi=32 -march=mips32r5 -mmsa -mno-odd-spreg -mfp64 -mnan=2008 -o \
> +      /tmp/test_msa_srlr_d_32r5el
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
> deleted file mode 100755
> index 2519213..0000000
> --- a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6eb.sh
> +++ /dev/null
> @@ -1,643 +0,0 @@
> -
> -#
> -# Bit Count
> -# ---------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_d_32r6eb
> -
> -#
> -# Bit move
> -# --------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmnz_v_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmz_v_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bsel_v_32r6eb
> -
> -#
> -# Bit Set
> -# -------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_d_32r6eb
> -
> -#
> -# Fixed Multiply
> -# --------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_w_32r6eb
> -
> -#
> -# Float Max Min
> -# -------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_d_32r6eb
> -
> -#
> -# Int Add
> -# -------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_d_32r6eb
> -
> -#
> -# Int Average
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_d_32r6eb
> -
> -#
> -# Int Compare
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_d_32r6eb
> -
> -#
> -# Int Divide
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_d_32r6eb
> -
> -#
> -# Int Dot Product
> -# ---------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_d_32r6eb
> -
> -#
> -# Int Max Min
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_d_32r6eb
> -
> -#
> -# Int Modulo
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_d_32r6eb
> -
> -#
> -# Int Multiply
> -# ------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_d_32r6eb
> -
> -#
> -# Int Subtract
> -# ------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_d_32r6eb
> -
> -#
> -# Interleave
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_d_32r6eb
> -
> -#
> -# Logic
> -# -----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_and_v.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_and_v_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_nor_v.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nor_v_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_or_v.c            \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_or_v_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_xor_v.c           \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_xor_v_32r6eb
> -
> -#
> -# Move
> -# ----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            move/test_msa_move_v.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_move_v_32r6eb
> -
> -#
> -# Pack
> -# ----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_d_32r6eb
> -
> -#
> -# Shift
> -# -----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_b.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_h.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_w.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_d.c          \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_d_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_b_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_h_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_w_32r6eb
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
> --EB -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_d_32r6eb
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh b/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
> deleted file mode 100755
> index 1e10ff7..0000000
> --- a/tests/tcg/mips/user/ase/msa/test_msa_compile_32r6el.sh
> +++ /dev/null
> @@ -1,643 +0,0 @@
> -
> -#
> -# Bit Count
> -# ---------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nloc_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nloc_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_nlzc_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nlzc_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc       bit-count/test_msa_pcnt_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pcnt_d_32r6el
> -
> -#
> -# Bit move
> -# --------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsl_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsl_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_binsr_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_binsr_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmnz_v.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmnz_v_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bmz_v.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bmz_v_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-move/test_msa_bsel_v.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_bsel_v_32r6el
> -
> -#
> -# Bit Set
> -# -------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bclr_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bclr_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bneg_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bneg_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         bit-set/test_msa_bset_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_bset_d_32r6el
> -
> -#
> -# Fixed Multiply
> -# --------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_madd_q_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_madd_q_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_maddr_q_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddr_q_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msub_q_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msub_q_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_msubr_q_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubr_q_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mul_q_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mul_q_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc  fixed-multiply/test_msa_mulr_q_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulr_q_w_32r6el
> -
> -#
> -# Float Max Min
> -# -------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_a_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmax_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmax_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_a_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc   float-max-min/test_msa_fmin_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_fmin_d_32r6el
> -
> -#
> -# Int Add
> -# -------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_add_a_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_add_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_a_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_adds_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_adds_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_addv_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_addv_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc         int-add/test_msa_hadd_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hadd_u_d_32r6el
> -
> -#
> -# Int Average
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_ave_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ave_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-average/test_msa_aver_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_aver_u_d_32r6el
> -
> -#
> -# Int Compare
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_b.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_h.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_w.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_ceq_d.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ceq_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_cle_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_cle_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-compare/test_msa_clt_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_clt_u_d_32r6el
> -
> -#
> -# Int Divide
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-divide/test_msa_div_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_div_u_d_32r6el
> -
> -#
> -# Int Dot Product
> -# ---------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dotp_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dotp_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_s_d.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpadd_u_d.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpadd_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_s_d.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_h.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_w.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc int-dot-product/test_msa_dpsub_u_d.c       \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_dpsub_u_d_32r6el
> -
> -#
> -# Int Max Min
> -# -----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_a_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_max_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_max_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_a_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_a_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc     int-max-min/test_msa_min_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_min_u_d_32r6el
> -
> -#
> -# Int Modulo
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_s_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      int-modulo/test_msa_mod_u_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mod_u_d_32r6el
> -
> -#
> -# Int Multiply
> -# ------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_maddv_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_maddv_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_msubv_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_msubv_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-multiply/test_msa_mulv_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_mulv_d_32r6el
> -
> -#
> -# Int Subtract
> -# ------------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_asub_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_asub_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_hsub_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_hsub_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_s_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_b.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_h.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_w.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subs_u_d.c        \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subs_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_b.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_h.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_w.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsus_u_d.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsus_u_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_b.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_h.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_w.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subsuu_s_d.c      \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subsuu_s_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc    int-subtract/test_msa_subv_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_subv_d_32r6el
> -
> -#
> -# Interleave
> -# ----------
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvev_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvev_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvod_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvod_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvl_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvl_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc      interleave/test_msa_ilvr_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_ilvr_d_32r6el
> -
> -#
> -# Logic
> -# -----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_and_v.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_and_v_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_nor_v.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_nor_v_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_or_v.c            \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_or_v_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc           logic/test_msa_xor_v.c           \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_xor_v_32r6el
> -
> -#
> -# Move
> -# ----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            move/test_msa_move_v.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_move_v_32r6el
> -
> -#
> -# Pack
> -# ----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckev_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckev_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_pckod_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_pckod_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            pack/test_msa_vshf_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o  /tmp/test_msa_vshf_d_32r6el
> -
> -#
> -# Shift
> -# -----
> -#
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sll_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sll_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_sra_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_sra_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srar_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srar_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_b.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_h.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_w.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srl_d.c          \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srl_d_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_b.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_b_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_h.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_h_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_w.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_w_32r6el
> -/opt/img/bin/mips-img-linux-gnu-gcc            shift/test_msa_srlr_d.c         \
> --EL -static -mabi=32 -march=mips32r6 -mmsa -o   /tmp/test_msa_srlr_d_32r6el
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
> new file mode 100755
> index 0000000..32dbf31
> --- /dev/null
> +++ b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5eb.sh
> @@ -0,0 +1,371 @@
> +PATH_TO_QEMU="../../../../../../mips-linux-user/qemu-mips"
> +
> +
> +#
> +# Bit Count
> +# ---------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_d_32r5eb
> +
> +#
> +# Bit move
> +# --------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmnz_v_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmz_v_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bsel_v_32r5eb
> +
> +#
> +# Bit Set
> +# -------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_d_32r5eb
> +
> +#
> +# Fixed Multiply
> +# --------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_w_32r5eb
> +
> +#
> +# Float Max Min
> +# -------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_d_32r5eb
> +
> +#
> +# Int Add
> +# -------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_d_32r5eb
> +
> +#
> +# Int Average
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_d_32r5eb
> +
> +#
> +# Int Compare
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_d_32r5eb
> +
> +#
> +# Int Divide
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_d_32r5eb
> +
> +#
> +# Int Dot Product
> +# ---------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_d_32r5eb
> +
> +#
> +# Int Max Min
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_d_32r5eb
> +
> +#
> +# Int Modulo
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_d_32r5eb
> +
> +#
> +# Int Multiply
> +# ------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_d_32r5eb
> +
> +#
> +# Int Subtract
> +# ------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_d_32r5eb
> +
> +#
> +# Interleave
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_d_32r5eb
> +
> +#
> +# Logic
> +# -----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_and_v_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nor_v_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_or_v_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_xor_v_32r5eb
> +
> +#
> +# Move
> +# ----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_move_v_32r5eb
> +
> +#
> +# Pack
> +# ----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_d_32r5eb
> +
> +#
> +# Shift
> +# -----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_d_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_b_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_h_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_w_32r5eb
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_d_32r5eb
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
> new file mode 100755
> index 0000000..a2e6092
> --- /dev/null
> +++ b/tests/tcg/mips/user/ase/msa/test_msa_run_32r5el.sh
> @@ -0,0 +1,371 @@
> +PATH_TO_QEMU="../../../../../../mipsel-linux-user/qemu-mipsel"
> +
> +
> +#
> +# Bit Count
> +# ---------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nloc_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nlzc_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pcnt_d_32r5el
> +
> +#
> +# Bit move
> +# --------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsl_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_binsr_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmnz_v_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bmz_v_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bsel_v_32r5el
> +
> +#
> +# Bit Set
> +# -------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bclr_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bneg_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_bset_d_32r5el
> +
> +#
> +# Fixed Multiply
> +# --------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_madd_q_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddr_q_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msub_q_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubr_q_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mul_q_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulr_q_w_32r5el
> +
> +#
> +# Float Max Min
> +# -------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmax_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_fmin_d_32r5el
> +
> +#
> +# Int Add
> +# -------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_add_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_adds_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_addv_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hadd_u_d_32r5el
> +
> +#
> +# Int Average
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ave_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_aver_u_d_32r5el
> +
> +#
> +# Int Compare
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ceq_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_cle_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_clt_u_d_32r5el
> +
> +#
> +# Int Divide
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_div_u_d_32r5el
> +
> +#
> +# Int Dot Product
> +# ---------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dotp_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpadd_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_dpsub_u_d_32r5el
> +
> +#
> +# Int Max Min
> +# -----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_max_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_a_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_min_u_d_32r5el
> +
> +#
> +# Int Modulo
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mod_u_d_32r5el
> +
> +#
> +# Int Multiply
> +# ------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_maddv_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_msubv_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_mulv_d_32r5el
> +
> +#
> +# Int Subtract
> +# ------------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_asub_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_hsub_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subs_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsus_u_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subsuu_s_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_subv_d_32r5el
> +
> +#
> +# Interleave
> +# ----------
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvev_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvod_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvl_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_ilvr_d_32r5el
> +
> +#
> +# Logic
> +# -----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_and_v_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_nor_v_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_or_v_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_xor_v_32r5el
> +
> +#
> +# Move
> +# ----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_move_v_32r5el
> +
> +#
> +# Pack
> +# ----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckev_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_pckod_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_vshf_d_32r5el
> +
> +#
> +# Shift
> +# -----
> +#
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sll_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_sra_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srar_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srl_d_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_b_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_h_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_w_32r5el
> +$PATH_TO_QEMU -cpu P5600  /tmp/test_msa_srlr_d_32r5el
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
> deleted file mode 100644
> index 6c95e45..0000000
> --- a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6eb.sh
> +++ /dev/null
> @@ -1,371 +0,0 @@
> -PATH_TO_QEMU="../../../../../../mips64-linux-user/qemu-mips64"
> -
> -
> -#
> -# Bit Count
> -# ---------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_d_32r6eb
> -
> -#
> -# Bit move
> -# --------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmnz_v_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmz_v_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bsel_v_32r6eb
> -
> -#
> -# Bit Set
> -# -------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_d_32r6eb
> -
> -#
> -# Fixed Multiply
> -# --------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_w_32r6eb
> -
> -#
> -# Float Max Min
> -# -------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_d_32r6eb
> -
> -#
> -# Int Add
> -# -------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_d_32r6eb
> -
> -#
> -# Int Average
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_d_32r6eb
> -
> -#
> -# Int Compare
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_d_32r6eb
> -
> -#
> -# Int Divide
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_d_32r6eb
> -
> -#
> -# Int Dot Product
> -# ---------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_d_32r6eb
> -
> -#
> -# Int Max Min
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_d_32r6eb
> -
> -#
> -# Int Modulo
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_d_32r6eb
> -
> -#
> -# Int Multiply
> -# ------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_d_32r6eb
> -
> -#
> -# Int Subtract
> -# ------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_d_32r6eb
> -
> -#
> -# Interleave
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_d_32r6eb
> -
> -#
> -# Logic
> -# -----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_and_v_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nor_v_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_or_v_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_xor_v_32r6eb
> -
> -#
> -# Move
> -# ----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_move_v_32r6eb
> -
> -#
> -# Pack
> -# ----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_d_32r6eb
> -
> -#
> -# Shift
> -# -----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_d_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_b_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_h_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_w_32r6eb
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_d_32r6eb
> diff --git a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh b/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh
> deleted file mode 100755
> index d4945da..0000000
> --- a/tests/tcg/mips/user/ase/msa/test_msa_run_32r6el.sh
> +++ /dev/null
> @@ -1,371 +0,0 @@
> -PATH_TO_QEMU="../../../../../../mips64el-linux-user/qemu-mips64el"
> -
> -
> -#
> -# Bit Count
> -# ---------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nloc_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nlzc_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pcnt_d_32r6el
> -
> -#
> -# Bit move
> -# --------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsl_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_binsr_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmnz_v_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bmz_v_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bsel_v_32r6el
> -
> -#
> -# Bit Set
> -# -------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bclr_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bneg_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_bset_d_32r6el
> -
> -#
> -# Fixed Multiply
> -# --------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_madd_q_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddr_q_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msub_q_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubr_q_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mul_q_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulr_q_w_32r6el
> -
> -#
> -# Float Max Min
> -# -------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmax_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_fmin_d_32r6el
> -
> -#
> -# Int Add
> -# -------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_add_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_adds_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_addv_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hadd_u_d_32r6el
> -
> -#
> -# Int Average
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ave_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_aver_u_d_32r6el
> -
> -#
> -# Int Compare
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ceq_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_cle_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_clt_u_d_32r6el
> -
> -#
> -# Int Divide
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_div_u_d_32r6el
> -
> -#
> -# Int Dot Product
> -# ---------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dotp_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpadd_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_dpsub_u_d_32r6el
> -
> -#
> -# Int Max Min
> -# -----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_max_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_a_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_min_u_d_32r6el
> -
> -#
> -# Int Modulo
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mod_u_d_32r6el
> -
> -#
> -# Int Multiply
> -# ------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_maddv_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_msubv_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_mulv_d_32r6el
> -
> -#
> -# Int Subtract
> -# ------------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_asub_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_hsub_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subs_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsus_u_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subsuu_s_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_subv_d_32r6el
> -
> -#
> -# Interleave
> -# ----------
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvev_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvod_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvl_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_ilvr_d_32r6el
> -
> -#
> -# Logic
> -# -----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_and_v_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_nor_v_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_or_v_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_xor_v_32r6el
> -
> -#
> -# Move
> -# ----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_move_v_32r6el
> -
> -#
> -# Pack
> -# ----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckev_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_pckod_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_vshf_d_32r6el
> -
> -#
> -# Shift
> -# -----
> -#
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sll_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_sra_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srar_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srl_d_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_b_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_h_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_w_32r6el
> -$PATH_TO_QEMU -cpu I6400  /tmp/test_msa_srlr_d_32r6el
> --
> 2.7.4

Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM Aleksandar Markovic
@ 2019-08-29 11:27   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 55+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-08-29 11:27 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel; +Cc: arikalo, Yongbok Kim, amarkovic

Hi Aleksandar,

On 8/19/19 2:07 PM, Aleksandar Markovic wrote:
> From: Yongbok Kim <yongbok.kim@mips.com>
> 
> The optional Data Scratch Pad RAM (DSPRAM) block provides a general scratch pad RAM
> used for temporary storage of data. The DSPRAM provides a connection to on-chip
> memory or memory-mapped registers, which are accessed in parallel with the L1 data
> cache to minimize access latency

Can you point me to a vm/kernel image using this feature?

> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  hw/mips/cps.c                    |  29 +++++++-
>  hw/misc/Makefile.objs            |   1 +
>  hw/misc/mips_dspram.c            | 153 +++++++++++++++++++++++++++++++++++++++
>  include/hw/mips/cps.h            |   2 +
>  include/hw/misc/mips_dspram.h    |  46 ++++++++++++
>  target/mips/cpu.h                |   9 ++-
>  target/mips/internal.h           |   3 +-

I suggest you to install scripts/git.orderfile, having files ordered
eases reviews.

>  target/mips/op_helper.c          |  18 +++++
>  target/mips/translate.c          |   8 ++
>  target/mips/translate_init.inc.c |   2 +
>  10 files changed, 266 insertions(+), 5 deletions(-)
>  create mode 100644 hw/misc/mips_dspram.c
>  create mode 100644 include/hw/misc/mips_dspram.h
> 
> diff --git a/hw/mips/cps.c b/hw/mips/cps.c
> index 0d459c4..c84bc64 100644
> --- a/hw/mips/cps.c
> +++ b/hw/mips/cps.c
> @@ -18,6 +18,7 @@
>   */
>  
>  #include "qemu/osdep.h"
> +#include "qemu/error-report.h"
>  #include "qapi/error.h"
>  #include "qemu/module.h"
>  #include "hw/mips/cps.h"
> @@ -91,7 +92,8 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
>  
>      cpu = MIPS_CPU(first_cpu);
>      env = &cpu->env;
> -    saar_present = (bool)env->saarp;
> +    saar_present = env->saarp;
> +    bool dspram_present = env->dspramp;
>  
>      /* Inter-Thread Communication Unit */
>      if (itu_present) {
> @@ -102,7 +104,8 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
>          object_property_set_bool(OBJECT(&s->itu), saar_present, "saar-present",
>                                   &err);
>          if (saar_present) {
> -            qdev_prop_set_ptr(DEVICE(&s->itu), "saar", (void *)&env->CP0_SAAR);
> +            qdev_prop_set_ptr(DEVICE(&s->itu), "saar",
> +                              (void *) &env->CP0_SAAR[0]);
>          }
>          object_property_set_bool(OBJECT(&s->itu), true, "realized", &err);
>          if (err != NULL) {
> @@ -113,6 +116,28 @@ static void mips_cps_realize(DeviceState *dev, Error **errp)
>          memory_region_add_subregion(&s->container, 0,
>                             sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->itu), 0));
>      }
> +    env->dspram = g_new0(MIPSDSPRAMState, 1);

Why not allocated this only if dspram_present?

> +
> +    /* Data Scratch Pad RAM */
> +    if (dspram_present) {
> +        if (!saar_present) {
> +            error_report("%s: DSPRAM requires SAAR registers", __func__);
> +            return;
> +        }
> +        object_initialize(&s->dspram, sizeof(MIPSDSPRAMState),
> +                          TYPE_MIPS_DSPRAM);
> +        qdev_set_parent_bus(DEVICE(&s->dspram), sysbus_get_default());
> +        qdev_prop_set_ptr(DEVICE(&s->dspram), "saar",
> +                          &env->CP0_SAAR[1]);
> +        object_property_set_bool(OBJECT(&s->dspram), true, "realized", &err);
> +        if (err != NULL) {
> +            error_report("%s: DSPRAM initialisation failed", __func__);
> +            error_propagate(errp, err);
> +            return;
> +        }
> +        memory_region_add_subregion(&s->container, 0,
> +                    sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->dspram), 0));
> +    }
>  
>      /* Cluster Power Controller */
>      sysbus_init_child_obj(OBJECT(dev), "cpc", &s->cpc, sizeof(s->cpc),
> diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs
> index e9aab51..5fcb4db 100644
> --- a/hw/misc/Makefile.objs
> +++ b/hw/misc/Makefile.objs
> @@ -60,6 +60,7 @@ obj-$(CONFIG_STM32F2XX_SYSCFG) += stm32f2xx_syscfg.o
>  obj-$(CONFIG_MIPS_CPS) += mips_cmgcr.o
>  obj-$(CONFIG_MIPS_CPS) += mips_cpc.o
>  obj-$(CONFIG_MIPS_ITU) += mips_itu.o
> +obj-$(CONFIG_MIPS_DSPRAM) += mips_dspram.o
>  obj-$(CONFIG_MPS2_FPGAIO) += mps2-fpgaio.o
>  obj-$(CONFIG_MPS2_SCC) += mps2-scc.o
>  
> diff --git a/hw/misc/mips_dspram.c b/hw/misc/mips_dspram.c
> new file mode 100644
> index 0000000..9bc155b
> --- /dev/null
> +++ b/hw/misc/mips_dspram.c
> @@ -0,0 +1,153 @@
> +/*
> + * Data Scratch Pad RAM
> + *
> + * Copyright (c) 2017 Imagination Technologies
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "cpu.h"
> +#include "qemu/log.h"
> +#include "exec/exec-all.h"
> +#include "hw/hw.h"
> +#include "hw/sysbus.h"
> +#include "sysemu/sysemu.h"
> +#include "hw/misc/mips_dspram.h"
> +
> +static void raise_exception(int excp)
> +{
> +    current_cpu->exception_index = excp;
> +    cpu_loop_exit(current_cpu);

This one might be worth a static inline in target/mips/cpu.h.

> +}
> +
> +static uint64_t dspram_read(void *opaque, hwaddr addr, unsigned size)
> +{
> +    MIPSDSPRAMState *s = (MIPSDSPRAMState *)opaque;
> +
> +    switch (size) {
> +    case 1:
> +    case 2:
> +        raise_exception(EXCP_AdEL);
> +        return 0;
> +    case 4:
> +        return *(uint32_t *) &s->ramblock[addr % (1 << s->size)];

Hmm is this endian safe?

Consider this case: migrating a VM from a LE to BE host, but maybe
we don't care.

> +    case 8:
> +        return *(uint64_t *) &s->ramblock[addr % (1 << s->size)];

I am a bit confused here. This scratch ram holds instructions of
target_ulong size or any size?

    if (size != TARGET_LONG_SIZE) {
       raise_exception(EXCP_AdEL);
       return 0;
    }

    return *(target_ulong *) &s->ramblock[addr % (1 << s->size)];

> +    }
> +    return 0;
> +}
> +
> +static void dspram_write(void *opaque, hwaddr addr, uint64_t data,
> +                         unsigned size)
> +{
> +    MIPSDSPRAMState *s = (MIPSDSPRAMState *)opaque;
> +
> +    switch (size) {

Ditto, target_ulong?

> +    case 1:
> +    case 2:
> +        raise_exception(EXCP_AdES);
> +        return;
> +    case 4:
> +        *(uint32_t *) &s->ramblock[addr % (1 << s->size)] = (uint32_t) data;

Ditto, endian safe?

> +        break;
> +    case 8:
> +        *(uint64_t *) &s->ramblock[addr % (1 << s->size)] = data;
> +        break;
> +    }
> +}
> +
> +void dspram_reconfigure(struct MIPSDSPRAMState *dspram)
> +{
> +    MemoryRegion *mr = &dspram->mr;
> +    hwaddr address;
> +    bool is_enabled;
> +
> +    address = ((*(uint64_t *) dspram->saar) & 0xFFFFFFFE000ULL) << 4;

or     addr = extract64(value, 13, 31) << 4;

> +    is_enabled = *(uint64_t *) dspram->saar & 1;
> +
> +    memory_region_transaction_begin();
> +    memory_region_set_size(mr, (1 << dspram->size));
> +    memory_region_set_address(mr, address);
> +    memory_region_set_enabled(mr, is_enabled);
> +    memory_region_transaction_commit();
> +}
> +
> +static const MemoryRegionOps dspram_ops = {
> +    .read = dspram_read,
> +    .write = dspram_write,
> +    .endianness = DEVICE_NATIVE_ENDIAN,
> +    .valid = {
> +        .unaligned = false,

If restricted to target_ulong, what about:

           .min_access_size = TARGET_LONG_SIZE,
           .max_access_size = TARGET_LONG_SIZE,

> +    }
> +};
> +
> +static void mips_dspram_init(Object *obj)
> +{
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
> +    MIPSDSPRAMState *s = MIPS_DSPRAM(obj);
> +
> +    memory_region_init_io(&s->mr, OBJECT(s), &dspram_ops, s,
> +                          "mips-dspram", (1 << s->size));
> +    sysbus_init_mmio(sbd, &s->mr);
> +}
> +
> +static void mips_dspram_realize(DeviceState *dev, Error **errp)
> +{
> +    MIPSDSPRAMState *s = MIPS_DSPRAM(dev);
> +
> +    /* some error handling here */

Yes, we should check s->size is pow2.

> +
> +    s->ramblock = g_malloc0(1 << s->size);

Nit, I'd use

       s->blocksize = 1 << s->size;

Then replace all '1 << s->size' by it.

> +}
> +
> +static void mips_dspram_reset(DeviceState *dev)
> +{
> +    MIPSDSPRAMState *s = MIPS_DSPRAM(dev);
> +
> +    *(uint64_t *) s->saar = s->size << 1;
> +    memset(s->ramblock, 0, (1 << s->size));
> +}
> +
> +static Property mips_dspram_properties[] = {
> +    DEFINE_PROP_PTR("saar", MIPSDSPRAMState, saar),
> +    /* default DSPRAM size is 64 KB */
> +    DEFINE_PROP_SIZE("size", MIPSDSPRAMState, size, 0x10),

'size' is misleading, any better suggestion?

The description in mips_dspram.h is also inacurate:

    /* 2 ^ SIZE */
    uint64_t size;

Isn't it the instructions count?

Thanks,

Phil.

> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void mips_dspram_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +
> +    dc->props = mips_dspram_properties;
> +    dc->realize = mips_dspram_realize;
> +    dc->reset = mips_dspram_reset;
> +}
> +
> +static const TypeInfo mips_dspram_info = {
> +    .name          = TYPE_MIPS_DSPRAM,
> +    .parent        = TYPE_SYS_BUS_DEVICE,
> +    .instance_size = sizeof(MIPSDSPRAMState),
> +    .instance_init = mips_dspram_init,
> +    .class_init    = mips_dspram_class_init,
> +};
> +
> +static void mips_dspram_register_types(void)
> +{
> +    type_register_static(&mips_dspram_info);
> +}
> +
> +type_init(mips_dspram_register_types);
> diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h
> index aab1af9..a637036 100644
> --- a/include/hw/mips/cps.h
> +++ b/include/hw/mips/cps.h
> @@ -25,6 +25,7 @@
>  #include "hw/intc/mips_gic.h"
>  #include "hw/misc/mips_cpc.h"
>  #include "hw/misc/mips_itu.h"
> +#include "hw/misc/mips_dspram.h"
>  
>  #define TYPE_MIPS_CPS "mips-cps"
>  #define MIPS_CPS(obj) OBJECT_CHECK(MIPSCPSState, (obj), TYPE_MIPS_CPS)
> @@ -41,6 +42,7 @@ typedef struct MIPSCPSState {
>      MIPSGICState gic;
>      MIPSCPCState cpc;
>      MIPSITUState itu;
> +    MIPSDSPRAMState dspram;
>  } MIPSCPSState;
>  
>  qemu_irq get_cps_irq(MIPSCPSState *cps, int pin_number);
> diff --git a/include/hw/misc/mips_dspram.h b/include/hw/misc/mips_dspram.h
> new file mode 100644
> index 0000000..ee99e17
> --- /dev/null
> +++ b/include/hw/misc/mips_dspram.h
> @@ -0,0 +1,46 @@
> +/*
> + * Data Scratch Pad RAM
> + *
> + * Copyright (c) 2017 Imagination Technologies
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef MIPS_DSPRAM_H
> +#define MIPS_DSPRAM_H
> +
> +#include "hw/sysbus.h"
> +
> +#define TYPE_MIPS_DSPRAM "mips-dspram"
> +#define MIPS_DSPRAM(obj) OBJECT_CHECK(MIPSDSPRAMState, (obj), TYPE_MIPS_DSPRAM)
> +
> +typedef struct MIPSDSPRAMState {
> +    /*< private >*/
> +    SysBusDevice parent_obj;
> +    /*< public >*/
> +
> +    /* 2 ^ SIZE */
> +    uint64_t size;
> +
> +    MemoryRegion mr;
> +
> +    /* SAAR */
> +    bool saar_present;
> +    void *saar;
> +
> +    /* ramblock */
> +    uint8_t *ramblock;
> +} MIPSDSPRAMState;
> +
> +#endif /* MIPS_DSPRAM_H */
> diff --git a/target/mips/cpu.h b/target/mips/cpu.h
> index 21c0615..90a2ed8 100644
> --- a/target/mips/cpu.h
> +++ b/target/mips/cpu.h
> @@ -453,6 +453,7 @@ struct TCState {
>  
>  };
>  
> +struct MIPSDSPRAMState;
>  struct MIPSITUState;
>  typedef struct CPUMIPSState CPUMIPSState;
>  struct CPUMIPSState {
> @@ -1035,8 +1036,8 @@ struct CPUMIPSState {
>      uint32_t CP0_Status_rw_bitmask; /* Read/write bits in CP0_Status */
>      uint32_t CP0_TCStatus_rw_bitmask; /* Read/write bits in CP0_TCStatus */
>      uint64_t insn_flags; /* Supported instruction set */
> -    int saarp;
> -
> +    bool saarp;
> +    bool dspramp;
>      /* Fields up to this point are cleared by a CPU reset */
>      struct {} end_reset_fields;
>  
> @@ -1051,6 +1052,7 @@ struct CPUMIPSState {
>      QEMUTimer *timer; /* Internal timer */
>      struct MIPSITUState *itu;
>      MemoryRegion *itc_tag; /* ITC Configuration Tags */
> +    struct MIPSDSPRAMState *dspram;
>      target_ulong exception_base; /* ExceptionBase input to the core */
>  };
>  
> @@ -1192,6 +1194,9 @@ void cpu_mips_soft_irq(CPUMIPSState *env, int irq, int level);
>  /* mips_itu.c */
>  void itc_reconfigure(struct MIPSITUState *tag);
>  
> +/* mips_dspram.c */
> +void dspram_reconfigure(struct MIPSDSPRAMState *dspram);
> +
>  /* helper.c */
>  target_ulong exception_resume_pc(CPUMIPSState *env);
>  
> diff --git a/target/mips/internal.h b/target/mips/internal.h
> index b2b41a5..f6d0d7a 100644
> --- a/target/mips/internal.h
> +++ b/target/mips/internal.h
> @@ -61,7 +61,8 @@ struct mips_def_t {
>      target_ulong CP0_EBaseWG_rw_bitmask;
>      uint64_t insn_flags;
>      enum mips_mmu_types mmu_type;
> -    int32_t SAARP;
> +    bool SAARP;
> +    bool DSPRAMP;
>  };
>  
>  extern const struct mips_def_t mips_defs[];
> diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
> index 9e2e02f..628da45 100644
> --- a/target/mips/op_helper.c
> +++ b/target/mips/op_helper.c
> @@ -1614,7 +1614,16 @@ void helper_mtc0_saar(CPUMIPSState *env, target_ulong arg1)
>                  itc_reconfigure(env->itu);
>              }
>              break;
> +#if defined(CONFIG_MIPS_DSPRAM)
> +        case 1:
> +            if (env->dspram) {
> +                dspram_reconfigure(env->dspram);
> +            }
> +            break;
> +#endif
>          }
> +    } else {
> +        helper_raise_exception(env, EXCP_RI);
>      }
>  }
>  
> @@ -1631,7 +1640,16 @@ void helper_mthc0_saar(CPUMIPSState *env, target_ulong arg1)
>                  itc_reconfigure(env->itu);
>              }
>              break;
> +#if defined(CONFIG_MIPS_DSPRAM)
> +        case 1:
> +            if (env->dspram) {
> +                dspram_reconfigure(env->dspram);
> +            }
> +            break;
> +#endif
>          }
> +    } else {
> +        helper_raise_exception(env, EXCP_RI);
>      }
>  }
>  
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index ca62800..4ebeabe 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -30368,6 +30368,8 @@ void cpu_state_reset(CPUMIPSState *env)
>      env->active_fpu.fcr31 = env->cpu_model->CP1_fcr31;
>      env->msair = env->cpu_model->MSAIR;
>      env->insn_flags = env->cpu_model->insn_flags;
> +    env->saarp = env->cpu_model->SAARP;
> +    env->dspramp = env->cpu_model->DSPRAMP;
>  
>  #if defined(CONFIG_USER_ONLY)
>      env->CP0_Status = (MIPS_HFLAG_UM << CP0St_KSU);
> @@ -30528,6 +30530,12 @@ void cpu_state_reset(CPUMIPSState *env)
>          msa_reset(env);
>      }
>  
> +    /* DSPRAM */
> +    if (env->dspramp) {
> +        /* Fixed DSPRAM size with Default Value */
> +        env->CP0_SAAR[1] = 0x10 << 1;
> +    }
> +
>      compute_hflags(env);
>      restore_fp_status(env);
>      restore_pamask(env);
> diff --git a/target/mips/translate_init.inc.c b/target/mips/translate_init.inc.c
> index 6d145a9..1df0901 100644
> --- a/target/mips/translate_init.inc.c
> +++ b/target/mips/translate_init.inc.c
> @@ -760,6 +760,8 @@ const mips_def_t mips_defs[] =
>          .PABITS = 48,
>          .insn_flags = CPU_MIPS64R6 | ASE_MSA,
>          .mmu_type = MMU_TYPE_R4000,
> +        .SAARP = 1,
> +        .DSPRAMP = 1,
>      },
>      {
>          .name = "Loongson-2E",
> 


^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions
  2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions Aleksandar Markovic
@ 2019-10-22  9:16   ` Aleksandar Markovic
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-10-22  9:16 UTC (permalink / raw)
  To: Aleksandar Markovic; +Cc: arikalo, philmd, qemu-devel, amarkovic

[-- Attachment #1: Type: text/plain, Size: 6834 bytes --]

On Monday, August 19, 2019, Aleksandar Markovic <
aleksandar.markovic@rt-rk.com> wrote:

> From: Yongbok Kim <yongbok.kim@mips.com>
>
> Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
> Reuse zlib crc32() and Linux crc32c(). Note that, at the time being,
> there is no MIPS CPU that supports CRC32 instructions (they are an
> optional part of MIPS64/32 R6 anf nanoMIPS ISAs).
>
> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> ---
>  disas/mips.c            |  8 ++++++++
>  target/mips/helper.h    |  2 ++
>  target/mips/op_helper.c | 22 ++++++++++++++++++++++
>  target/mips/translate.c | 41 +++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 73 insertions(+)
>
>
This solution is not optimal (see arm equivalent). Also, support for
nanomips crc instructions is not included. In spite of that:

Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>

All outstanding issues will be handled post-4.2.


diff --git a/disas/mips.c b/disas/mips.c
> index c3a3059..b9a5204 100644
> --- a/disas/mips.c
> +++ b/disas/mips.c
> @@ -1411,6 +1411,14 @@ const struct mips_opcode mips_builtin_opcodes[] =
>  {"evp",        "t",     0x41600004, 0xffe0ffff, TRAP|WR_t,            0,
> I32R6},
>  {"ginvi",      "v",     0x7c00003d, 0xfc1ffcff, TRAP | INSN_TLB,      0,
> I32R6},
>  {"ginvt",      "v",     0x7c0000bd, 0xfc1ffcff, TRAP | INSN_TLB,      0,
> I32R6},
> +{"crc32b",     "t,v,t", 0x7c00000f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32h",     "t,v,t", 0x7c00004f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32w",     "t,v,t", 0x7c00008f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32d",     "t,v,t", 0x7c0000cf, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I64R6},
> +{"crc32cb",    "t,v,t", 0x7c00010f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32ch",    "t,v,t", 0x7c00014f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32cw",    "t,v,t", 0x7c00018f, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I32R6},
> +{"crc32cd",    "t,v,t", 0x7c0001cf, 0xfc00ff3f, WR_d | RD_s | RD_t,   0,
> I64R6},
>
>  /* MSA */
>  {"sll.b",   "+d,+e,+f", 0x7800000d, 0xffe0003f, WR_VD|RD_VS|RD_VT,  0,
> MSA},
> diff --git a/target/mips/helper.h b/target/mips/helper.h
> index c7d35bd..0e61043 100644
> --- a/target/mips/helper.h
> +++ b/target/mips/helper.h
> @@ -40,6 +40,8 @@ DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
>  DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl)
>  #endif
>
> +DEF_HELPER_3(crc32, tl, tl, tl, i32)
> +DEF_HELPER_3(crc32c, tl, tl, tl, i32)
>  DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32)
>
>  #ifndef CONFIG_USER_ONLY
> diff --git a/target/mips/op_helper.c b/target/mips/op_helper.c
> index 3104904..5874029 100644
> --- a/target/mips/op_helper.c
> +++ b/target/mips/op_helper.c
> @@ -25,6 +25,8 @@
>  #include "exec/exec-all.h"
>  #include "exec/cpu_ldst.h"
>  #include "sysemu/kvm.h"
> +#include "qemu/crc32c.h"
> +#include <zlib.h>
>
>  /***********************************************************
> ******************/
>  /* Exceptions processing helpers */
> @@ -343,6 +345,26 @@ target_ulong helper_rotx(target_ulong rs, uint32_t
> shift, uint32_t shiftx,
>      return (int64_t)(int32_t)(uint32_t)tmp5;
>  }
>
> +/* these crc32 functions are based on target/arm/helper-a64.c */
> +target_ulong helper_crc32(target_ulong val, target_ulong m, uint32_t sz)
> +{
> +    uint8_t buf[8];
> +    target_ulong mask = ((sz * 8) == 64) ? -1ULL : ((1ULL << (sz * 8)) -
> 1);
> +
> +    m &= mask;
> +    stq_le_p(buf, m);
> +    return (int32_t) (crc32(val ^ 0xffffffff, buf, sz) ^ 0xffffffff);
> +}
> +
> +target_ulong helper_crc32c(target_ulong val, target_ulong m, uint32_t sz)
> +{
> +    uint8_t buf[8];
> +    target_ulong mask = ((sz * 8) == 64) ? -1ULL : ((1ULL << (sz * 8)) -
> 1);
> +    m &= mask;
> +    stq_le_p(buf, m);
> +    return (int32_t) (crc32c(val, buf, sz) ^ 0xffffffff);
> +}
> +
>  #ifndef CONFIG_USER_ONLY
>
>  static inline hwaddr do_translate_address(CPUMIPSState *env,
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index 3f73be0..3f9f113 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -452,6 +452,7 @@ enum {
>      OPC_LWE            = 0x2F | OPC_SPECIAL3,
>
>      /* R6 */
> +    OPC_CRC32          = 0x0F | OPC_SPECIAL3,
>      R6_OPC_PREF        = 0x35 | OPC_SPECIAL3,
>      R6_OPC_CACHE       = 0x25 | OPC_SPECIAL3,
>      R6_OPC_LL          = 0x36 | OPC_SPECIAL3,
> @@ -2550,6 +2551,7 @@ typedef struct DisasContext {
>      bool saar;
>      bool mi;
>      int gi;
> +    bool crcp;
>  } DisasContext;
>
>  #define DISAS_STOP       DISAS_TARGET_0
> @@ -27041,6 +27043,33 @@ static void decode_opc_special2_legacy(CPUMIPSState
> *env, DisasContext *ctx)
>      }
>  }
>
> +static void gen_crc32(DisasContext *ctx, int rd, int rs, int rt, int sz,
> +                      int crc32c)
> +{
> +    TCGv t0;
> +    TCGv t1;
> +    TCGv_i32 tsz = tcg_const_i32(1 << sz);
> +    if (rd == 0) {
> +        /* Treat as NOP. */
> +        return;
> +    }
> +    t0 = tcg_temp_new();
> +    t1 = tcg_temp_new();
> +
> +    gen_load_gpr(t0, rt);
> +    gen_load_gpr(t1, rs);
> +
> +    if (crc32c) {
> +        gen_helper_crc32c(cpu_gpr[rd], t0, t1, tsz);
> +    } else {
> +        gen_helper_crc32(cpu_gpr[rd], t0, t1, tsz);
> +    }
> +
> +    tcg_temp_free(t0);
> +    tcg_temp_free(t1);
> +    tcg_temp_free_i32(tsz);
> +}
> +
>  static void decode_opc_special3_r6(CPUMIPSState *env, DisasContext *ctx)
>  {
>      int rs, rt, rd, sa;
> @@ -27055,6 +27084,17 @@ static void decode_opc_special3_r6(CPUMIPSState
> *env, DisasContext *ctx)
>
>      op1 = MASK_SPECIAL3(ctx->opcode);
>      switch (op1) {
> +    case OPC_CRC32:
> +        if (unlikely(!ctx->crcp) ||
> +            unlikely((extract32(ctx->opcode, 6, 2) == 3) &&
> +                     (!(ctx->hflags & MIPS_HFLAG_64))) ||
> +            unlikely((extract32(ctx->opcode, 8, 3) >= 2))) {
> +            generate_exception_end(ctx, EXCP_RI);
> +        }
> +        gen_crc32(ctx, rt, rs, rt,
> +                  extract32(ctx->opcode, 6, 2),
> +                  extract32(ctx->opcode, 8, 3));
> +        break;
>      case R6_OPC_PREF:
>          if (rt >= 24) {
>              /* hint codes 24-31 are reserved and signal RI */
> @@ -30049,6 +30089,7 @@ static void mips_tr_init_disas_context(DisasContextBase
> *dcbase, CPUState *cs)
>      ctx->abs2008 = (env->active_fpu.fcr31 >> FCR31_ABS2008) & 1;
>      ctx->mi = (env->CP0_Config5 >> CP0C5_MI) & 1;
>      ctx->gi = (env->CP0_Config5 >> CP0C5_GI) & 3;
> +    ctx->crcp = (env->CP0_Config5 >> CP0C5_CRCP) & 1;
>      restore_cpu_state(env, ctx);
>  #ifdef CONFIG_USER_ONLY
>          ctx->mem_idx = MIPS_HFLAG_UM;
> --
> 2.7.4
>
>
>

[-- Attachment #2: Type: text/html, Size: 8984 bytes --]

^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
  2019-08-19 14:47   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
@ 2019-12-06 17:46     ` Philippe Mathieu-Daudé
  2019-12-06 19:45       ` [Qemu-devel] " Aleksandar Markovic
  0 siblings, 1 reply; 55+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-12-06 17:46 UTC (permalink / raw)
  To: qemu-devel, Aleksandar Markovic, Aleksandar Rikalo

Hi Aleksandar,

On 8/19/19 4:47 PM, Aleksandar Rikalo wrote:
> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
>  > Sent: Monday, August 19, 2019 2:07 PM
>  > To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
>  > Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic 
> <amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
>  > Subject: [EXTERNAL][PATCH v8 15/37] target/mips: Style improvements 
> in mips_malta.c
>  >
>  > From: Aleksandar Markovic <amarkovic@wavecomp.com>
>  >
>  > Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>  >
>  > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
>  > ---
>  >  hw/mips/mips_malta.c | 216 
> ++++++++++++++++++++++++++++++---------------------
>  >  1 file changed, 128 insertions(+), 88 deletions(-)
>  >
>  > diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
[...]>  > @@ -347,7 +362,8 @@ static uint64_t malta_fpga_read(void *opaque,
> hwaddr addr,
>  >
>  >      /* SWITCH Register */
>  >      case 0x00200:
>  > -        val = 0x00000000;              /* All switches closed */
>  > +        /* ori a3, a3, low(ram_low_size) */

I'm not sure what happened here, this change is incorrect.

>  > +        val = 0x00000000;
>  >          break;
>  >
>  >      /* STATUS Register */
>  > @@ -386,10 +402,11 @@ static uint64_t malta_fpga_read(void *opaque, 
> hwaddr addr,
>  >      /* GPINP Register */
>  >      case 0x00a08:
>  >          /* IN = OUT until a real I2C control is implemented */
>  > -        if (s->i2csel)
>  > +        if (s->i2csel) {
>  >              val = s->i2cout;
>  > -        else
>  > +        } else {
>  >              val = 0x00;
>  > +        }
>  >          break;
>  >
[...]
> 
> Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>
> 



^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
  2019-12-06 17:46     ` [PATCH " Philippe Mathieu-Daudé
@ 2019-12-06 19:45       ` Aleksandar Markovic
  2019-12-07  6:20         ` Aleksandar Markovic
  0 siblings, 1 reply; 55+ messages in thread
From: Aleksandar Markovic @ 2019-12-06 19:45 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Aleksandar Markovic, Aleksandar Rikalo, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 2202 bytes --]

On Friday, December 6, 2019, Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> Hi Aleksandar,
>
> On 8/19/19 4:47 PM, Aleksandar Rikalo wrote:
>
>> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
>>  > Sent: Monday, August 19, 2019 2:07 PM
>>  > To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
>>  > Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <
>> amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
>>  > Subject: [EXTERNAL][PATCH v8 15/37] target/mips: Style improvements in
>> mips_malta.c
>>  >
>>  > From: Aleksandar Markovic <amarkovic@wavecomp.com>
>>  >
>>  > Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>>  >
>>  > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
>>  > ---
>>  >  hw/mips/mips_malta.c | 216 ++++++++++++++++++++++++++++++
>> ---------------------
>>  >  1 file changed, 128 insertions(+), 88 deletions(-)
>>  >
>>  > diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>>
> [...]>  > @@ -347,7 +362,8 @@ static uint64_t malta_fpga_read(void *opaque,
>
>> hwaddr addr,
>>  >
>>  >      /* SWITCH Register */
>>  >      case 0x00200:
>>  > -        val = 0x00000000;              /* All switches closed */
>>  > +        /* ori a3, a3, low(ram_low_size) */
>>
>
> I'm not sure what happened here, this change is incorrect.
>
>
You are right, a strange case of a stray comment.

Do you want to send a patch-correction? So that I can select it for the
first mips queue...

Thanks for spotting it!
Aleksandar

 > +        val = 0x00000000;
>>  >          break;
>>  >
>>  >      /* STATUS Register */
>>  > @@ -386,10 +402,11 @@ static uint64_t malta_fpga_read(void *opaque,
>> hwaddr addr,
>>  >      /* GPINP Register */
>>  >      case 0x00a08:
>>  >          /* IN = OUT until a real I2C control is implemented */
>>  > -        if (s->i2csel)
>>  > +        if (s->i2csel) {
>>  >              val = s->i2cout;
>>  > -        else
>>  > +        } else {
>>  >              val = 0x00;
>>  > +        }
>>  >          break;
>>  >
>>
> [...]
>
>>
>> Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>
>>
>>
>
>

[-- Attachment #2: Type: text/html, Size: 4102 bytes --]

^ permalink raw reply	[flat|nested] 55+ messages in thread

* Re: [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c
  2019-12-06 19:45       ` [Qemu-devel] " Aleksandar Markovic
@ 2019-12-07  6:20         ` Aleksandar Markovic
  0 siblings, 0 replies; 55+ messages in thread
From: Aleksandar Markovic @ 2019-12-07  6:20 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Aleksandar Markovic, Aleksandar Rikalo, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 2560 bytes --]

On Friday, December 6, 2019, Aleksandar Markovic <
aleksandar.m.mail@gmail.com> wrote:

>
>
> On Friday, December 6, 2019, Philippe Mathieu-Daudé <philmd@redhat.com>
> wrote:
>
>> Hi Aleksandar,
>>
>> On 8/19/19 4:47 PM, Aleksandar Rikalo wrote:
>>
>>> From: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
>>>  > Sent: Monday, August 19, 2019 2:07 PM
>>>  > To: qemu-devel@nongnu.org <qemu-devel@nongnu.org>
>>>  > Cc: philmd@redhat.com <philmd@redhat.com>; Aleksandar Markovic <
>>> amarkovic@wavecomp.com>; Aleksandar Rikalo <arikalo@wavecomp.com>
>>>  > Subject: [EXTERNAL][PATCH v8 15/37] target/mips: Style improvements
>>> in mips_malta.c
>>>  >
>>>  > From: Aleksandar Markovic <amarkovic@wavecomp.com>
>>>  >
>>>  > Fixes mostly errors and warnings reported by 'checkpatch.pl -f'.
>>>  >
>>>  > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
>>>  > ---
>>>  >  hw/mips/mips_malta.c | 216 ++++++++++++++++++++++++++++++
>>> ---------------------
>>>  >  1 file changed, 128 insertions(+), 88 deletions(-)
>>>  >
>>>  > diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
>>>
>> [...]>  > @@ -347,7 +362,8 @@ static uint64_t malta_fpga_read(void
>> *opaque,
>>
>>> hwaddr addr,
>>>  >
>>>  >      /* SWITCH Register */
>>>  >      case 0x00200:
>>>  > -        val = 0x00000000;              /* All switches closed */
>>>  > +        /* ori a3, a3, low(ram_low_size) */
>>>
>>
>> I'm not sure what happened here, this change is incorrect.
>>
>>
> You are right, a strange case of a stray comment.
>
> Do you want to send a patch-correction? So that I can select it for the
> first mips queue...
>
>
Philippe,

I can merge, while applying, this one-line correction into Filip's patch on
the same file, no need for a separate patch.

Thanks again,
Aleksandar



> Thanks for spotting it!
> Aleksandar
>
>  > +        val = 0x00000000;
>>>  >          break;
>>>  >
>>>  >      /* STATUS Register */
>>>  > @@ -386,10 +402,11 @@ static uint64_t malta_fpga_read(void *opaque,
>>> hwaddr addr,
>>>  >      /* GPINP Register */
>>>  >      case 0x00a08:
>>>  >          /* IN = OUT until a real I2C control is implemented */
>>>  > -        if (s->i2csel)
>>>  > +        if (s->i2csel) {
>>>  >              val = s->i2cout;
>>>  > -        else
>>>  > +        } else {
>>>  >              val = 0x00;
>>>  > +        }
>>>  >          break;
>>>  >
>>>
>> [...]
>>
>>>
>>> Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com>
>>>
>>>
>>
>>

[-- Attachment #2: Type: text/html, Size: 4777 bytes --]

^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2019-12-07  6:21 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-19 12:07 [Qemu-devel] [PATCH v8 00/37] target/mips: Misc patches for 4.2 Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 01/37] target/mips: Add support for DSPRAM Aleksandar Markovic
2019-08-29 11:27   ` Philippe Mathieu-Daudé
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 02/37] target/mips: Amend CP0 WatchHi register implementation Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 03/37] target/mips: Amend CP0 MemoryMapID " Aleksandar Markovic
2019-08-19 14:39   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 04/37] target/mips: Add support for emulation of GINVT instruction Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 05/37] target/mips: Add support for emulation of CRC32 group of instructions Aleksandar Markovic
2019-10-22  9:16   ` Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 06/37] target/mips: Style improvements in cp0_timer.c Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 07/37] target/mips: Style improvements in cpu.c Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 08/37] target/mips: Style improvements in internal.h Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 09/37] target/mips: Style improvements in machine.c Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 10/37] target/mips: Style improvements in helper.c Aleksandar Markovic
2019-08-19 13:33   ` Thomas Huth
2019-08-19 13:56     ` [Qemu-devel] [EXTERNAL]Re: " Aleksandar Markovic
2019-08-19 14:40   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 11/37] target/mips: Style improvements in translate.c Aleksandar Markovic
2019-08-19 14:41   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 12/37] target/mips: Style improvements in cps.c Aleksandar Markovic
2019-08-19 14:44   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 13/37] target/mips: Style improvements in mips_fulong2e.c Aleksandar Markovic
2019-08-19 14:45   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 14/37] target/mips: Style improvements in mips_int.c Aleksandar Markovic
2019-08-19 14:46   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 15/37] target/mips: Style improvements in mips_malta.c Aleksandar Markovic
2019-08-19 14:47   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-12-06 17:46     ` [PATCH " Philippe Mathieu-Daudé
2019-12-06 19:45       ` [Qemu-devel] " Aleksandar Markovic
2019-12-07  6:20         ` Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 16/37] target/mips: Style improvements in mips_mipssim.c Aleksandar Markovic
2019-08-19 14:48   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 17/37] target/mips: Clean up handling of CP0 register 0 Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 18/37] target/mips: Clean up handling of CP0 register 1 Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 19/37] target/mips: Clean up handling of CP0 register 2 Aleksandar Markovic
2019-08-19 12:07 ` [Qemu-devel] [PATCH v8 20/37] target/mips: Clean up handling of CP0 register 5 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 21/37] target/mips: Clean up handling of CP0 register 6 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 22/37] target/mips: Clean up handling of CP0 register 7 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 23/37] target/mips: Clean up handling of CP0 register 8 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 24/37] target/mips: Clean up handling of CP0 register 10 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 25/37] target/mips: Clean up handling of CP0 register 11 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 26/37] target/mips: Clean up handling of CP0 register 12 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 27/37] target/mips: Clean up handling of CP0 register 15 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 28/37] target/mips: Clean up handling of CP0 register 16 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 29/37] target/mips: Clean up handling of CP0 register 17 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 30/37] target/mips: Clean up handling of CP0 register 20 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 31/37] target/mips: Clean up handling of CP0 register 23 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 32/37] target/mips: Clean up handling of CP0 register 24 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 33/37] target/mips: Clean up handling of CP0 register 26 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 34/37] target/mips: Clean up handling of CP0 register 30 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 35/37] target/mips: Clean up handling of CP0 register 31 Aleksandar Markovic
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 36/37] target/mips: tests/tcg: Add optional printing of more detailed failure info Aleksandar Markovic
2019-08-19 14:49   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo
2019-08-19 12:08 ` [Qemu-devel] [PATCH v8 37/37] target/mips: tests/tcg: Fix target configurations for MSA tests Aleksandar Markovic
2019-08-19 14:50   ` [Qemu-devel] [EXTERNAL][PATCH " Aleksandar Rikalo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.