On 02/03/2024 05:15, Richard Henderson wrote:
I whipped this up over the Christmas break, but I'm just now
getting around to posting. I have not attempted to model the
newer cpus that have these features, but it is possible to
enable the features manually via -cpu properties.
Possibly the first 6 or 7 patches should be taken sooner than
later because they fix bugs in existing VIS[12] code.
I remove cpu_fpr[], so that we can use gvec on the same memory.
r~
Nice! Since all of my SPARC bits and pieces are done with QEMU sun4m/sun4u, I don't
really have much in the way that can test the newer VIS instructions. Do you have any
particular suite that you've been using for testing, or future plans for particular CPUs?
Generally I'm okay for this to be merged if there is a way for the new VIS
instructions to be easily tested, given that they're not currently enabled by default.
Richard Henderson (41):
linux-user/sparc: Add more hwcap bits for sparc64
target/sparc: Fix FEXPAND
target/sparc: Fix FMUL8x16
target/sparc: Fix FMUL8x16A{U,L}
target/sparc: Fix FMULD8*X16
target/sparc: Fix FPMERGE
target/sparc: Split out do_ms16b
target/sparc: Perform DFPREG/QFPREG in decodetree
target/sparc: Remove gen_dest_fpr_D
target/sparc: Remove cpu_fpr[]
target/sparc: Use gvec for VIS1 parallel add/sub
target/sparc: Implement FMAf extension
target/sparc: Add feature bits for VIS 3
target/sparc: Implement ADDXC, ADDXCcc
target/sparc: Implement CMASK instructions
target/sparc: Implement FCHKSM16
target/sparc: Implement FHADD, FHSUB, FNHADD, FNADD
target/sparc: Implement FNMUL
target/sparc: Implement FLCMP
target/sparc: Implement FMEAN16
target/sparc: Implement FPADD64 FPSUB64
target/sparc: Implement FPADDS, FPSUBS
target/sparc: Implement FPCMPEQ8, FPCMPNE8, FPCMPULE8, FPCMPUGT8
target/sparc: Implement FSLL, FSRL, FSRA, FSLAS
target/sparc: Implement LDXEFSR
target/sparc: Implement LZCNT
target/sparc: Implement MOVsTOw, MOVdTOx, MOVwTOs, MOVxTOd
target/sparc: Implement PDISTN
target/sparc: Implement UMULXHI
target/sparc: Implement XMULX
target/sparc: Enable VIS3 feature bit
target/sparc: Implement IMA extension
target/sparc: Add feature bit for VIS4
target/sparc: Implement FALIGNDATAi
target/sparc: Implement 8-bit FPADD, FPADDS, and FPADDUS
target/sparc: Implement VIS4 comparisons
target/sparc: Implement FPMIN, FPMAX
target/sparc: Implement SUBXC, SUBXCcc
target/sparc: Implement MWAIT
target/sparc: Implement monitor asis
target/sparc: Enable VIS4 feature bit
target/sparc/asi.h | 4 +
target/sparc/helper.h | 36 +-
linux-user/elfload.c | 51 +-
target/sparc/cpu.c | 12 +
target/sparc/fop_helper.c | 104 ++++
target/sparc/ldst_helper.c | 4 +
target/sparc/translate.c | 960 +++++++++++++++++++++++++++++----
target/sparc/vis_helper.c | 526 +++++++++++-------
target/sparc/cpu-feature.h.inc | 4 +
target/sparc/insns.decode | 338 +++++++++---
10 files changed, 1626 insertions(+), 413 deletions(-)
ATB,
Mark.