diff options
| author | Nazar Kazakov <nazar.kazakov@codethink.co.uk> | 2023-04-28 15:47:47 +0100 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2023-05-02 13:05:45 -0700 |
| commit | 4221aa4a882403fc7d6d22ad6af9a58c8a5badf6 (patch) | |
| tree | 4ecfe32c9affe83555c1ada467232fd69a367e93 /accel/tcg/tcg-runtime-gvec.c | |
| parent | 31fe256d32d70c83232c68c6e2d136b533e1dda0 (diff) | |
| download | focaccia-qemu-4221aa4a882403fc7d6d22ad6af9a58c8a5badf6.tar.gz focaccia-qemu-4221aa4a882403fc7d6d22ad6af9a58c8a5badf6.zip | |
tcg: Add tcg_gen_gvec_andcs
Add tcg expander and helper functions for and-compliment vector with scalar operand. Signed-off-by: Nazar Kazakov <nazar.kazakov@codethink.co.uk> Message-Id: <20230428144757.57530-10-lawrence.hunter@codethink.co.uk> [rth: Split out of larger patch.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'accel/tcg/tcg-runtime-gvec.c')
| -rw-r--r-- | accel/tcg/tcg-runtime-gvec.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/accel/tcg/tcg-runtime-gvec.c b/accel/tcg/tcg-runtime-gvec.c index ac7d28c251..97399493d5 100644 --- a/accel/tcg/tcg-runtime-gvec.c +++ b/accel/tcg/tcg-runtime-gvec.c @@ -550,6 +550,17 @@ void HELPER(gvec_ands)(void *d, void *a, uint64_t b, uint32_t desc) clear_high(d, oprsz, desc); } +void HELPER(gvec_andcs)(void *d, void *a, uint64_t b, uint32_t desc) +{ + intptr_t oprsz = simd_oprsz(desc); + intptr_t i; + + for (i = 0; i < oprsz; i += sizeof(uint64_t)) { + *(uint64_t *)(d + i) = *(uint64_t *)(a + i) & ~b; + } + clear_high(d, oprsz, desc); +} + void HELPER(gvec_xors)(void *d, void *a, uint64_t b, uint32_t desc) { intptr_t oprsz = simd_oprsz(desc); |