tcg: Use memset for large vector byte replication
authorRichard Henderson <richard.henderson@linaro.org>
Tue, 15 Dec 2020 17:47:59 +0000 (11:47 -0600)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 4 Jan 2021 16:32:58 +0000 (06:32 -1000)
commit6d3ef04893bdea3e7aa08be3cce5141902836a31
treeeae5ae6605ba168477024c0497e77c7c0c1e74ee
parent41192db338588051f21501abc13743e62b0a5605
tcg: Use memset for large vector byte replication

In f47db80cc07, we handled odd-sized tail clearing for
the case of hosts that have vector operations, but did
not handle the case of hosts that do not have vector ops.

This was ok until e2e7168a214b, which changed the encoding
of simd_desc such that the odd sizes are impossible.

Add memset as a tcg helper, and use that for all out-of-line
byte stores to vectors.  This includes, but is not limited to,
the tail clearing operation in question.

Cc: qemu-stable@nongnu.org
Buglink: https://bugs.launchpad.net/bugs/1907817
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
accel/tcg/tcg-runtime.h
include/exec/helper-proto.h
tcg/tcg-op-gvec.c