698c5752c4
target/mips: Correct helper for MSA FCLASS.<W|D> instructions
...
Correct helper for MSA FCLASS.<W|D> instructions.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1562068213-11307-8-git-send-email-aleksandar.markovic@rt-rk.com >
2019-07-02 14:20:42 +02:00
807e6773a5
target/mips: Unroll loops for MSA float max/min instructions
...
Slight preformance improvement for MSA float max/min instructions.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1562068213-11307-7-git-send-email-aleksandar.markovic@rt-rk.com >
2019-07-02 14:20:39 +02:00
44da090ba0
target/mips: Correct comments in msa_helper.c
...
Fix some errors in comments for MSA helpers.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1562068213-11307-6-git-send-email-aleksandar.markovic@rt-rk.com >
2019-07-02 14:20:36 +02:00
5a6a1fabfc
target/mips: Fix big endian host behavior for interleave MSA instructions
...
Fix big endian host behavior for interleave MSA instructions. Previous
fix used TARGET_WORDS_BIGENDIAN instead of HOST_WORDS_BIGENDIAN, which
was a mistake.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1561543629-20327-9-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-26 13:25:56 +02:00
14f5d874bc
target/mips: Fix emulation of ILVR.<B|H|W> on big endian host
...
Fix emulation of ILVR.<B|H|W> on big endian host by applying
mapping of data element indexes from one endian to another.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1561038349-17105-5-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-21 11:31:13 +02:00
8e74bceb00
target/mips: Fix emulation of ILVL.<B|H|W> on big endian host
...
Fix emulation of ILVL.<B|H|W> on big endian host by applying
mapping of data element indexes from one endian to another.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1561038349-17105-4-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-21 11:31:10 +02:00
b000169e4e
target/mips: Fix emulation of ILVOD.<B|H|W> on big endian host
...
Fix emulation of ILVOD.<B|H|W> on big endian host by applying
mapping of data element indexes from one endian to another.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1561038349-17105-3-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-21 11:31:07 +02:00
98880cb5a6
target/mips: Fix emulation of ILVEV.<B|H|W> on big endian host
...
Fix emulation of ILVEV.<B|H|W> on big endian host by applying
mapping of data element indexes from one endian to another.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1561038349-17105-2-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-21 11:31:03 +02:00
5d161bc818
target/mips: Unroll loops in helpers for MSA logic instructions
...
Unroll loops in helpers for MSA logic instructions for better
performance.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1559838440-9866-5-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-07 11:53:07 +02:00
7471df9f9e
target/mips: Outline places for future MSA helpers
...
Outline places for future MSA helpers to follow the same organization
as in MSA tests.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1559838440-9866-4-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-07 11:52:50 +02:00
7cc8a7220d
target/mips: Fix block-comment-related issues in msa_helper.c
...
Fix block-comment-related issues reported by checkpatch for file
msa_helper.c.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1559838440-9866-3-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-06 21:06:33 +02:00
de1700d316
target/mips: Fix space-related format issues in msa_helper.c
...
Fix space-related format issues reported by checkpatch in file
msa_helper.c.
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Rikalo <arikalo@wavecomp.com >
Message-Id: <1559838440-9866-2-git-send-email-aleksandar.markovic@rt-rk.com >
2019-06-06 21:06:24 +02:00
0df911fd7f
target/mips: Improve performance of certain MSA instructions
...
Eliminate loops for better performance.
Following MSA instructions from "UNOP" group are affected:
- NLZC.<B|H|W|D>
- NLOC.<B|H|W|D>
- PCNT.<B|H|W|D>
Following MSA instructions from "BINOP" group are affected:
- ADD_A.<B|H|W|D>
- ADDS_A.<B|H|W|D>
- ADDS_S.<B|H|W|D>
- ADDS_U.<B|H|W|D>
- ADDV.<B|H|W|D>
- ASUB_S.<B|H|W|D>
- ASUB_U.<B|H|W|D>
- AVE_S.<B|H|W|D>
- AVE_U.<B|H|W|D>
- AVER_S.<B|H|W|D>
- AVER_U.<B|H|W|D>
- BCLR.<B|H|W|D>
- BNEG.<B|H|W|D>
- BSET.<B|H|W|D>
- CEQ.<B|H|W|D>
- CLE_S.<B|H|W|D>
- CLE_U.<B|H|W|D>
- CLT_S.<B|H|W|D>
- CLT_U.<B|H|W|D>
- DIV_S.<B|H|W|D>
- DIV_U.<B|H|W|D>
- DOTP_S.<B|H|W|D>
- DOTP_U.<B|H|W|D>
- HADD_S.<B|H|W|D>
- HADD_U.<B|H|W|D>
- HSUB_S.<B|H|W|D>
- HSUB_U.<B|H|W|D>
- MAX_A.<B|H|W|D>
- MAX_S.<B|H|W|D>
- MAX_U.<B|H|W|D>
- MIN_A.<B|H|W|D>
- MIN_S.<B|H|W|D>
- MIN_U.<B|H|W|D>
- MOD_S.<B|H|W|D>
- MOD_U.<B|H|W|D>
- MUL_Q.<B|H|W|D>
- MULR_Q.<B|H|W|D>
- MULV.<B|H|W|D>
- SLL.<B|H|W|D>
- SRA.<B|H|W|D>
- SRAR.<B|H|W|D>
- SRL.<B|H|W|D>
- SRLR.<B|H|W|D>
- SUBS_S.<B|H|W|D>
- SUBS_U.<B|H|W|D>
- SUBSUS_U.<B|H|W|D>
- SUBSUU_S.<B|H|W|D>
- SUBV.<B|H|W|D>
Following MSA instructions from "TEROP" group are affected:
- BINSL.<B|H|W|D>
- BINSR.<B|H|W|D>
- DPADD_S.<B|H|W|D>
- DPADD_U.<B|H|W|D>
- DPSUB_S.<B|H|W|D>
- DPSUB_U.<B|H|W|D>
- MADD_Q.<B|H|W|D>
- MADDR_Q.<B|H|W|D>
- MADDV.<B|H|W|D>
- MSUB_Q.<B|H|W|D>
- MSUBR_Q.<B|H|W|D>
- MSUBV.<B|H|W|D>
Additionally, following MSA instructionas are also affected:
- ILVL.<B|H|W|D>
- ILVR.<B|H|W|D>
- ILVEV.<B|H|W|D>
- ILVOD.<B|H|W|D>
- PCKEV.<B|H|W|D>
- PCKOD.<B|H|W|D>
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1551718283-4487-2-git-send-email-mateja.marjanovic@rt-rk.com >
2019-06-01 20:20:20 +02:00
c1c9a10fb1
target/mips: Refactor and fix INSERT.<B|H|W|D> instructions
...
The old version of the helper for the INSERT.<B|H|W|D> MSA instructions
has been replaced with four helpers that don't use switch, and change
the endianness of the given index, when executed on a big endian host.
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1554212605-16457-6-git-send-email-mateja.marjanovic@rt-rk.com >
2019-05-26 17:33:16 +02:00
41d2885827
target/mips: Refactor and fix COPY_U.<B|H|W> instructions
...
The old version of the helper for the COPY_U.<B|H|W> MSA instructions
has been replaced with four helpers that don't use switch, and change
the endianness of the given index, when executed on a big endian host.
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1554212605-16457-5-git-send-email-mateja.marjanovic@rt-rk.com >
2019-05-26 17:33:05 +02:00
631c467461
target/mips: Refactor and fix COPY_S.<B|H|W|D> instructions
...
The old version of the helper for the COPY_S.<B|H|W|D> MSA instructions
has been replaced with four helpers that don't use switch, and change
the endianness of the given index, when executed on a big endian host.
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1554212605-16457-4-git-send-email-mateja.marjanovic@rt-rk.com >
2019-05-26 17:32:57 +02:00
cf122bf8d2
target/mips: Make the results of MOD_<U|S>.<B|H|W|D> the same as on hardware
...
MSA instructions MOD_<U|S>.<B|H|W|D> when dividing by zero,
didn't return the same value when executed on a referent hardware
(FPGA MIPS 64 r6, little endian) and when executed on QEMU, which
is not a real bug, because the result when dividing by zero is
UNPREDICTABLE [1] (page 255, 256).
[1] MIPS Architecture for Programmers
Volume IV-j: The MIPS64 SIMD
Architecture Module, Revision 1.12
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1554207110-9113-3-git-send-email-mateja.marjanovic@rt-rk.com >
2019-05-26 17:32:37 +02:00
d2a40a5f69
target/mips: Make the results of DIV_<U|S>.<B|H|W|D> the same as on hardware
...
MSA instructions DIV_<U|S>.<B|H|W|D> when dividing by zero,
didn't return the same value when executed on a referent hardware
(FPGA MIPS 64 r6, little endian) and when executed on QEMU, which
is not a real bug, because the result when dividing by zero is
UNPREDICTABLE [1] (page 141, 142).
[1] MIPS Architecture for Programmers
Volume IV-j: The MIPS64 SIMD
Architecture Module, Revision 1.12
Signed-off-by: Mateja Marjanovic <mateja.marjanovic@rt-rk.com >
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com >
Message-Id: <1554207110-9113-2-git-send-email-mateja.marjanovic@rt-rk.com >
2019-05-26 17:32:31 +02:00
4accd4a89f
target/mips: Remove floatX_maybe_silence_nan from conversions
...
This is now handled properly by the generic softfloat code.
Cc: Aurelien Jarno <aurelien@aurel32.net >
Cc: Yongbok Kim <yongbok.kim@mips.com >
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2018-05-17 15:27:15 -07:00
94f5c480e9
mips: Tweak location of ';' in macros
...
It is more typical to provide the ';' by the caller of a macro
than to embed it in the macro itself; this is because syntax
highlight engines can get confused if a macro is called without
a semicolon before the closing '}'.
Signed-off-by: Eric Blake <eblake@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20171201232433.25193-3-eblake@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2018-01-16 14:54:51 +01:00
26aa3d9aec
mips: introduce internal.h and cleanup cpu.h
...
no logical change, only code movement (and fix a comment typo).
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Tested-by: Igor Mammedov <imammedo@redhat.com >
Tested-by: James Hogan <james.hogan@imgtec.com >
Acked-by: Eduardo Habkost <ehabkost@redhat.com >
Signed-off-by: Yongbok Kim <yongbok.kim@imgtec.com >
2017-09-21 13:24:34 +01:00
fcf5ef2ab5
Move target-* CPU file into a target/ folder
...
We've currently got 18 architectures in QEMU, and thus 18 target-xxx
folders in the root folder of the QEMU source tree. More architectures
(e.g. RISC-V, AVR) are likely to be included soon, too, so the main
folder of the QEMU sources slowly gets quite overcrowded with the
target-xxx folders.
To disburden the main folder a little bit, let's move the target-xxx
folders into a dedicated target/ folder, so that target-xxx/ simply
becomes target/xxx/ instead.
Acked-by: Laurent Vivier <laurent@vivier.eu > [m68k part]
Acked-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de > [tricore part]
Acked-by: Michael Walle <michael@walle.cc > [lm32 part]
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com > [s390x part]
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com > [s390x part]
Acked-by: Eduardo Habkost <ehabkost@redhat.com > [i386 part]
Acked-by: Artyom Tarasenko <atar4qemu@gmail.com > [sparc part]
Acked-by: Richard Henderson <rth@twiddle.net > [alpha part]
Acked-by: Max Filippov <jcmvbkbc@gmail.com > [xtensa part]
Reviewed-by: David Gibson <david@gibson.dropbear.id.au > [ppc part]
Acked-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com > [crisµblaze part]
Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn > [unicore32 part]
Signed-off-by: Thomas Huth <thuth@redhat.com >
2016-12-20 21:52:12 +01:00