Fix signedness error in 9f225e992 for gcc
authorJohn Naylor <john.naylor@postgresql.org>
Wed, 6 Mar 2024 08:54:25 +0000 (15:54 +0700)
committerJohn Naylor <john.naylor@postgresql.org>
Wed, 6 Mar 2024 08:55:55 +0000 (15:55 +0700)
The first argument of vshrq_n_s8 needs to be a signed vector type,
but it was passed unsigned. Clang is more lax with conversion, but
gcc needs a cast.

Fix by me, tested by Masahiko Sawada

Per buildfarm members splitfin, batta, widowbird, snakefly, parula,
massasauga

Discussion: https://postgr.es/m/20240306074106.mg6w4koohdlworbs%40alap3.anarazel.de

src/include/port/simd.h

index 326b4faff5151828b95fd94e6df97b9d66c4bfa4..597496f2fb7eddf20257fd597796265b5e09fefa 100644 (file)
@@ -323,7 +323,7 @@ vector8_highbit_mask(const Vector8 v)
        1 << 4, 1 << 5, 1 << 6, 1 << 7,
    };
 
-   uint8x16_t  masked = vandq_u8(vld1q_u8(mask), (uint8x16_t) vshrq_n_s8(v, 7));
+   uint8x16_t  masked = vandq_u8(vld1q_u8(mask), (uint8x16_t) vshrq_n_s8((int8x16_t) v, 7));
    uint8x16_t  maskedhi = vextq_u8(masked, masked, 8);
 
    return (uint32) vaddvq_u16((uint16x8_t) vzip1q_u8(masked, maskedhi));