tcg: Fix out-of-line generic vector compares
authorRichard Henderson <richard.henderson@linaro.org>
Fri, 6 Apr 2018 00:53:38 +0000 (00:53 +0000)
committerRichard Henderson <richard.henderson@linaro.org>
Fri, 6 Apr 2018 13:08:50 +0000 (23:08 +1000)
A mistake in the type passed to sizeof, that happens to work
when the out-of-line fallback itself is using host vectors,
but fails when using only the base types.

Tested-by: Emilio G. Cota <cota@braap.org>
Reported-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
accel/tcg/tcg-runtime-gvec.c

index 8bf8d6391209b25c3e6b0fa2427cfcd5cc56678e..90340e56e09e3f48673843c44e2905e4412a609b 100644 (file)
@@ -705,7 +705,7 @@ void HELPER(NAME)(void *d, void *a, void *b, uint32_t desc)                \
 {                                                                          \
     intptr_t oprsz = simd_oprsz(desc);                                     \
     intptr_t i;                                                            \
-    for (i = 0; i < oprsz; i += sizeof(vec64)) {                           \
+    for (i = 0; i < oprsz; i += sizeof(TYPE)) {                            \
         *(TYPE *)(d + i) = DO_CMP0(*(TYPE *)(a + i) OP *(TYPE *)(b + i));  \
     }                                                                      \
     clear_high(d, oprsz, desc);                                            \