s390x/tcg: Implement Vector-Enhancements Facility 2 for s390x
Goal
The emulation part of QEMU (currently TCG) for the s390x architecture lacks some facilities that were introduced with Z15 and used by GCC and LLVM with -march=z15. The goal of this request is to implement the Vector-Enhancements Facility 2 for the s390x tcg frontend so that s390x user and softmmu targets will be able to handle code containing instructions of that facility.
Technical details
- Implement the TCG variant for the Vector-Enhancements Facility 2 containing
- VECTOR LOAD BYTE REVERSED ELEMENTS (VLBR)
- VECTOR LOAD ELEMENTS REVERSED (VLER)
- VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO (VLLEBRZ)
- VECTOR LOAD BYTE REVERSED ELEMENT (VLEBRH, VLEBRF, VLEBRG)
- VECTOR LOAD BYTE REVERSED ELEMENT AND REPLOCATE (VLBRREP)
- VECTOR STORE BYTE REVERSED ELEMENTS (VSTBR)
- VECTOR STORE ELEMENTS REVERSED (VSTER)
- VECTOR STORE BYTE REVERSED ELEMENT (VSTEBRH, VSTEBRF, VSTEBRG)
- VECTOR SHIFT LEFT DOUBLE BY BIT (VSLD)
- VECTOR SHIFT RIGHT DOUBLE BY BIT (VSRD)
- VECTOR STRING SEARCH (VSTRS)
and changes to
- VECTOR SHIFT LEFT (VSL)
- VECTOR SHIFT RIGHT ARITHMETIC (VSRA)
- VECTOR SHIFT RIGHT LOGICAL (VSRL)
- VECTOR FP CONVERT FROM FIXED (VCFPS)
- VECTOR FP CONVERT FROM LOGICAL (VCFPL)
- VECTOR FP CONVERT TO FIXED (VCSFP)
- VECTOR FP CONVERT TO LOGICAL (VCLFP)
- Enable S390_FEAT_VECTOR_ENH2 in the QEMU_MAX cpu model
- Add testcases for the TCG implementation.