This is the third part of vector instruction support for s390x. It is based on part 2, which is will send a pull-request for to Conny soon.
Part 1: Vector Support Instructions Part 2: Vector Integer Instructions Part 3: Vector String Instructions Part 4: Vector Floating-Point Instructions The current state can be found at (kept updated): https://github.com/davidhildenbrand/qemu/tree/vx With the current state I can boot Linux kernel + user space compiled with SIMD support. This allows to boot distributions compiled exclusively for z13, requiring SIMD support. Also, it is now possible to build a complete kernel using rpmbuild as quite some issues have been sorted out. In this part, all Vector String Instructions introduced with the "Vector Facility" are added. v1 -> v2: - Use the fancy bit-tricks from Richard to rewrite most string instructions - Create specialized variants for "VECTOR STRING RANGE COMPARE", so the compiler can optimize out the rt/!rt handling code. David Hildenbrand (5): s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL s390x/tcg: Implement VECTOR FIND ELEMENT EQUAL s390x/tcg: Implement VECTOR FIND ELEMENT NOT EQUAL s390x/tcg: Implement VECTOR ISOLATE STRING s390x/tcg: Implement VECTOR STRING RANGE COMPARE target/s390x/Makefile.objs | 2 +- target/s390x/helper.h | 38 +++ target/s390x/insn-data.def | 13 + target/s390x/translate_vx.inc.c | 185 ++++++++++++ target/s390x/vec.h | 40 +++ target/s390x/vec_string_helper.c | 473 +++++++++++++++++++++++++++++++ 6 files changed, 750 insertions(+), 1 deletion(-) create mode 100644 target/s390x/vec_string_helper.c -- 2.20.1