From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
Anton Johansson <anjo@rev.ng>
Subject: [RFC-PATCH-for-11.0 v3 20/21] target/mips: Use big-endian variant of cpu_ld/st_data*() for MSA
Date: Fri, 21 Nov 2025 14:45:02 +0100 [thread overview]
Message-ID: <20251121134503.30914-21-philmd@linaro.org> (raw)
In-Reply-To: <20251121134503.30914-1-philmd@linaro.org>
MSA vectors are accessed in big endianness.
Per the "MIPS® SIMD Architecture" (MD00926 rev 1.03):
3.1 Registers Layout
MSA vectors are stored in memory starting from the 0th element at
the lowest byte address. The byte order of each element follows the
big- or little-endian convention of the system configuration.
Use the explicit big-endian variants of cpu_ld/st_data*().
Running files in tests/tcg/mips/user/ase/msa shows:
NLOC.B | PASS: 80 | FAIL: 0 | elapsed time: 0.21 ms |
NLOC.H | PASS: 80 | FAIL: 0 | elapsed time: 0.22 ms |
NLOC.W | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
NLOC.D | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
NLZC.B | PASS: 80 | FAIL: 0 | elapsed time: 0.19 ms |
NLZC.H | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
NLZC.W | PASS: 80 | FAIL: 0 | elapsed time: 0.21 ms |
NLZC.D | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
PCNT.B | PASS: 80 | FAIL: 0 | elapsed time: 0.17 ms |
PCNT.H | PASS: 80 | FAIL: 0 | elapsed time: 0.19 ms |
PCNT.W | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
PCNT.D | PASS: 80 | FAIL: 0 | elapsed time: 0.19 ms |
BINSL.B | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
BINSL.H | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
BINSL.W | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
BINSL.D | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
BINSR.B | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
BINSR.H | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
BINSR.W | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
BINSR.D | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
BMNZ.V | PASS: 112 | FAIL: 0 | elapsed time: 0.65 ms |
BMZ.V | PASS: 112 | FAIL: 0 | elapsed time: 0.59 ms |
BSEL.V | PASS: 112 | FAIL: 0 | elapsed time: 0.60 ms |
BCLR.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BCLR.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BCLR.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BCLR.D | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
BNEG.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BNEG.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
BNEG.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BNEG.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BSET.B | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
BSET.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BSET.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
BSET.D | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
MADD_Q.H | PASS: 112 | FAIL: 0 | elapsed time: 0.60 ms |
MADD_Q.W | PASS: 112 | FAIL: 0 | elapsed time: 0.83 ms |
MADDR_Q.H | PASS: 112 | FAIL: 0 | elapsed time: 0.62 ms |
MADDR_Q.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MSUB_Q.H | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
MSUB_Q.W | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
MSUBR_Q.H | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MSUBR_Q.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MUL_Q.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MUL_Q.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MULR_Q.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MULR_Q.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
FMAX_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.36 ms |
FMAX_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
FMAX.W | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
FMAX.D | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
FMIN_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.36 ms |
FMIN_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
FMIN.W | PASS: 80 | FAIL: 0 | elapsed time: 0.35 ms |
FMIN.D | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ADD_A.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADD_A.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADD_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADD_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
ADDS_A.B | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
ADDS_A.H | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
ADDS_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.80 ms |
ADDS_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ADDS_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDS_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDV.B | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ADDV.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ADDV.W | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ADDV.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HADD_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HADD_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HADD_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HADD_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HADD_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
HADD_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVE_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
AVE_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
AVER_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
AVER_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AVER_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CEQ.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
CEQ.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CEQ.W | PASS: 80 | FAIL: 0 | elapsed time: 0.38 ms |
CEQ.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLE_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLE_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLE_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLE_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
CLE_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
CLE_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
CLE_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
CLE_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
CLT_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
CLT_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
CLT_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLT_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLT_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLT_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
CLT_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
CLT_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
DIV_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
DIV_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
DIV_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DIV_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DIV_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.39 ms |
DIV_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
DIV_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DIV_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DOTP_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DOTP_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.35 ms |
DOTP_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DOTP_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DOTP_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
DOTP_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
DPADD_S.H | PASS: 112 | FAIL: 0 | elapsed time: 0.59 ms |
DPADD_S.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPADD_S.D | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
DPADD_U.H | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPADD_U.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPADD_U.D | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPSUB_S.H | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPSUB_S.W | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
DPSUB_S.D | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
DPSUB_U.H | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
DPSUB_U.W | PASS: 112 | FAIL: 0 | elapsed time: 0.59 ms |
DPSUB_U.D | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MAX_A.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_A.H | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
MAX_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
MAX_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.35 ms |
MAX_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.35 ms |
MAX_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MAX_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MAX_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_A.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MIN_A.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_A.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_A.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.33 ms |
MIN_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MIN_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MIN_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MOD_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
MOD_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
MOD_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MOD_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MOD_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.37 ms |
MOD_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
MOD_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MOD_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MADDV.B | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
MADDV.H | PASS: 112 | FAIL: 0 | elapsed time: 0.63 ms |
MADDV.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MADDV.D | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
MSUBV.B | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MSUBV.H | PASS: 112 | FAIL: 0 | elapsed time: 0.65 ms |
MSUBV.W | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
MSUBV.D | PASS: 112 | FAIL: 0 | elapsed time: 0.65 ms |
MULV.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MULV.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MULV.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
MULV.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.44 ms |
ASUB_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ASUB_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ASUB_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HSUB_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HSUB_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
HSUB_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
HSUB_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HSUB_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
HSUB_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
SUBS_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SUBS_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.38 ms |
SUBS_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SUBS_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBS_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBS_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
SUBS_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
SUBS_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUS_U.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUS_U.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SUBSUS_U.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUS_U.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUU_S.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUU_S.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
SUBSUU_S.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBSUU_S.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBV.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBV.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBV.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SUBV.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVEV.B | PASS: 80 | FAIL: 0 | elapsed time: 0.35 ms |
ILVEV.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
ILVEV.W | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
ILVEV.D | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
ILVOD.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVOD.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVOD.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVOD.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVL.B | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
ILVL.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVL.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVL.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVR.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVR.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
ILVR.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
ILVR.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
AND.V | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
NOR.V | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
OR.V | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
XOR.V | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
MOVE.V | PASS: 80 | FAIL: 0 | elapsed time: 0.18 ms |
PCKEV.B | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
PCKEV.H | PASS: 112 | FAIL: 0 | elapsed time: 0.56 ms |
PCKEV.W | PASS: 112 | FAIL: 0 | elapsed time: 0.68 ms |
PCKEV.D | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
PCKOD.B | PASS: 112 | FAIL: 0 | elapsed time: 0.61 ms |
PCKOD.H | PASS: 112 | FAIL: 0 | elapsed time: 0.62 ms |
PCKOD.W | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
PCKOD.D | PASS: 112 | FAIL: 0 | elapsed time: 0.58 ms |
VSHF.B | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
VSHF.H | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
VSHF.W | PASS: 112 | FAIL: 0 | elapsed time: 0.62 ms |
VSHF.D | PASS: 112 | FAIL: 0 | elapsed time: 0.57 ms |
SLL.B | PASS: 80 | FAIL: 0 | elapsed time: 0.34 ms |
SLL.H | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SLL.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SLL.D | PASS: 80 | FAIL: 0 | elapsed time: 0.38 ms |
SRA.B | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
SRA.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
SRA.W | PASS: 80 | FAIL: 0 | elapsed time: 0.37 ms |
SRA.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRAR.B | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SRAR.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SRAR.W | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
SRAR.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRL.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRL.H | PASS: 80 | FAIL: 0 | elapsed time: 0.32 ms |
SRL.W | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRL.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRLR.B | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
SRLR.H | PASS: 80 | FAIL: 0 | elapsed time: 0.29 ms |
SRLR.W | PASS: 80 | FAIL: 0 | elapsed time: 0.31 ms |
SRLR.D | PASS: 80 | FAIL: 0 | elapsed time: 0.30 ms |
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/mips/tcg/msa_helper.c | 51 ++++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 20 deletions(-)
diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c
index f554b3d10ee..d6ce17abf9a 100644
--- a/target/mips/tcg/msa_helper.c
+++ b/target/mips/tcg/msa_helper.c
@@ -8231,8 +8231,8 @@ void helper_msa_ld_b(CPUMIPSState *env, uint32_t wd,
uint64_t d0, d1;
/* Load 8 bytes at a time. Vector element ordering makes this LE. */
- d0 = cpu_ldq_le_data_ra(env, addr + 0, ra);
- d1 = cpu_ldq_le_data_ra(env, addr + 8, ra);
+ d0 = cpu_ldq_be_data_ra(env, addr + 0, ra);
+ d1 = cpu_ldq_be_data_ra(env, addr + 8, ra);
pwd->d[0] = d0;
pwd->d[1] = d1;
}
@@ -8248,9 +8248,9 @@ void helper_msa_ld_h(CPUMIPSState *env, uint32_t wd,
* Load 8 bytes at a time. Use little-endian load, then for
* big-endian target, we must then swap the four halfwords.
*/
- d0 = cpu_ldq_le_data_ra(env, addr + 0, ra);
- d1 = cpu_ldq_le_data_ra(env, addr + 8, ra);
- if (mips_env_is_bigendian(env)) {
+ d0 = cpu_ldq_be_data_ra(env, addr + 0, ra);
+ d1 = cpu_ldq_be_data_ra(env, addr + 8, ra);
+ if (!mips_env_is_bigendian(env)) {
d0 = bswap16x4(d0);
d1 = bswap16x4(d1);
}
@@ -8269,9 +8269,9 @@ void helper_msa_ld_w(CPUMIPSState *env, uint32_t wd,
* Load 8 bytes at a time. Use little-endian load, then for
* big-endian target, we must then bswap the two words.
*/
- d0 = cpu_ldq_le_data_ra(env, addr + 0, ra);
- d1 = cpu_ldq_le_data_ra(env, addr + 8, ra);
- if (mips_env_is_bigendian(env)) {
+ d0 = cpu_ldq_be_data_ra(env, addr + 0, ra);
+ d1 = cpu_ldq_be_data_ra(env, addr + 8, ra);
+ if (!mips_env_is_bigendian(env)) {
d0 = bswap32x2(d0);
d1 = bswap32x2(d1);
}
@@ -8286,8 +8286,12 @@ void helper_msa_ld_d(CPUMIPSState *env, uint32_t wd,
uintptr_t ra = GETPC();
uint64_t d0, d1;
- d0 = cpu_ldq_data_ra(env, addr + 0, ra);
- d1 = cpu_ldq_data_ra(env, addr + 8, ra);
+ d0 = cpu_ldq_be_data_ra(env, addr + 0, ra);
+ d1 = cpu_ldq_be_data_ra(env, addr + 8, ra);
+ if (!mips_env_is_bigendian(env)) {
+ d0 = bswap64(d0);
+ d1 = bswap64(d1);
+ }
pwd->d[0] = d0;
pwd->d[1] = d1;
}
@@ -8320,8 +8324,8 @@ void helper_msa_st_b(CPUMIPSState *env, uint32_t wd,
ensure_writable_pages(env, addr, mmu_idx, ra);
/* Store 8 bytes at a time. Vector element ordering makes this LE. */
- cpu_stq_le_data_ra(env, addr + 0, pwd->d[0], ra);
- cpu_stq_le_data_ra(env, addr + 8, pwd->d[1], ra);
+ cpu_stq_be_data_ra(env, addr + 0, pwd->d[0], ra);
+ cpu_stq_be_data_ra(env, addr + 8, pwd->d[1], ra);
}
void helper_msa_st_h(CPUMIPSState *env, uint32_t wd,
@@ -8337,12 +8341,12 @@ void helper_msa_st_h(CPUMIPSState *env, uint32_t wd,
/* Store 8 bytes at a time. See helper_msa_ld_h. */
d0 = pwd->d[0];
d1 = pwd->d[1];
- if (mips_env_is_bigendian(env)) {
+ if (!mips_env_is_bigendian(env)) {
d0 = bswap16x4(d0);
d1 = bswap16x4(d1);
}
- cpu_stq_le_data_ra(env, addr + 0, d0, ra);
- cpu_stq_le_data_ra(env, addr + 8, d1, ra);
+ cpu_stq_be_data_ra(env, addr + 0, d0, ra);
+ cpu_stq_be_data_ra(env, addr + 8, d1, ra);
}
void helper_msa_st_w(CPUMIPSState *env, uint32_t wd,
@@ -8358,12 +8362,12 @@ void helper_msa_st_w(CPUMIPSState *env, uint32_t wd,
/* Store 8 bytes at a time. See helper_msa_ld_w. */
d0 = pwd->d[0];
d1 = pwd->d[1];
- if (mips_env_is_bigendian(env)) {
+ if (!mips_env_is_bigendian(env)) {
d0 = bswap32x2(d0);
d1 = bswap32x2(d1);
}
- cpu_stq_le_data_ra(env, addr + 0, d0, ra);
- cpu_stq_le_data_ra(env, addr + 8, d1, ra);
+ cpu_stq_be_data_ra(env, addr + 0, d0, ra);
+ cpu_stq_be_data_ra(env, addr + 8, d1, ra);
}
void helper_msa_st_d(CPUMIPSState *env, uint32_t wd,
@@ -8372,9 +8376,16 @@ void helper_msa_st_d(CPUMIPSState *env, uint32_t wd,
wr_t *pwd = &(env->active_fpu.fpr[wd].wr);
int mmu_idx = mips_env_mmu_index(env);
uintptr_t ra = GETPC();
+ uint64_t d0, d1;
ensure_writable_pages(env, addr, mmu_idx, GETPC());
- cpu_stq_data_ra(env, addr + 0, pwd->d[0], ra);
- cpu_stq_data_ra(env, addr + 8, pwd->d[1], ra);
+ d0 = pwd->d[0];
+ d1 = pwd->d[1];
+ if (!mips_env_is_bigendian(env)) {
+ d0 = bswap64(d0);
+ d1 = bswap64(d1);
+ }
+ cpu_stq_be_data_ra(env, addr + 0, d0, ra);
+ cpu_stq_be_data_ra(env, addr + 8, d1, ra);
}
--
2.51.0
next prev parent reply other threads:[~2025-11-22 3:13 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-21 13:44 [RFC-PATCH-for-11.0 v3 00/21] accel/tcg: Remove most MO_TE uses in cpu_ld/st_code/data() Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 01/21] accel/tcg: Add endianness variants of cpu_ld{uw, l, q}_code() Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 02/21] target/alpha: Use little-endian variant of cpu_ldl_code() Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 03/21] target/loongarch: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 04/21] target/sparc: Use big-endian " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 05/21] target/s390x: Use big-endian variant of cpu_ld{uw, l}_code() Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 06/21] target/riscv: Use little-endian variant of cpu_ld{l, q}_code() Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 07/21] target/ppc: Replace cpu_ldl_code() by explicit endianness variants Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 08/21] target/mips: Replace cpu_ld{uw, l}_code() " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 09/21] accel/tcg: Remove non-explicit endian cpu_ld*_code() helpers Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 10/21] target/hexagon: Use little-endian variant of cpu_ld/st_data*() Philippe Mathieu-Daudé
2025-11-22 2:26 ` Brian Cain
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 11/21] target/tricore: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 12/21] target/rx: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 13/21] target/m68k: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 14/21] target/s390x: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 15/21] target/sparc: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 16/21] target/i386: " Philippe Mathieu-Daudé
2025-11-21 13:44 ` [RFC-PATCH-for-11.0 v3 17/21] target/hppa: " Philippe Mathieu-Daudé
2025-11-21 13:45 ` [RFC-PATCH-for-11.0 v3 18/21] target/riscv: Use little-endian variant of cpu_ld/st_data*() for vector Philippe Mathieu-Daudé
2025-11-21 13:45 ` [RFC-PATCH-for-11.0 v3 19/21] target/sh4: Replace cpu_stl_data() by explicit endianness variants Philippe Mathieu-Daudé
2025-11-21 13:45 ` Philippe Mathieu-Daudé [this message]
2025-11-21 13:45 ` [RFC-PATCH-for-11.0 v3 21/21] accel/tcg: Remove non-explicit endian cpu_ld/st*_data*() helpers Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251121134503.30914-21-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=anjo@rev.ng \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).