mirror of
https://github.com/postgres/postgres.git
synced 2025-05-31 03:21:24 +03:00
Fix broken cast on MSVC
Per buildfarm animal drongo, casting a vector type to the same type causes a compile error. We still need the cast on ARM64, so invent a wrapper function that does the casting only where necessary. Discussion: https://www.postgresql.org/message-id/CAFBsxsEouaTwbmpqV%2BEW2%3DwFbhw2vHRe26NQTRcd0%3DNaOFDy7A%40mail.gmail.com
This commit is contained in:
parent
82739d4a80
commit
c6a43c25a8
@ -151,7 +151,7 @@ pg_lfind32(uint32 key, uint32 *base, uint32 nelem)
|
|||||||
result = vector32_or(tmp1, tmp2);
|
result = vector32_or(tmp1, tmp2);
|
||||||
|
|
||||||
/* see if there was a match */
|
/* see if there was a match */
|
||||||
if (vector8_is_highbit_set((Vector8) result))
|
if (vector32_is_highbit_set(result))
|
||||||
{
|
{
|
||||||
Assert(assert_result == true);
|
Assert(assert_result == true);
|
||||||
return true;
|
return true;
|
||||||
|
@ -274,6 +274,28 @@ vector8_is_highbit_set(const Vector8 v)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Exactly like vector32_is_highbit_set except for the input type, so it
|
||||||
|
* looks at each byte separately.
|
||||||
|
*
|
||||||
|
* XXX x86 uses the same underlying type for 8-bit, 16-bit, and 32-bit
|
||||||
|
* integer elements, but Arm does not, hence the need for a separate
|
||||||
|
* function. We could instead adopt the behavior of Arm's vmaxvq_u32(), i.e.
|
||||||
|
* check each 32-bit element, but that would require an additional mask
|
||||||
|
* operation on x86.
|
||||||
|
*/
|
||||||
|
#ifndef USE_NO_SIMD
|
||||||
|
static inline bool
|
||||||
|
vector32_is_highbit_set(const Vector32 v)
|
||||||
|
{
|
||||||
|
#if defined(USE_NEON)
|
||||||
|
return vector8_is_highbit_set((Vector8) v);
|
||||||
|
#else
|
||||||
|
return vector8_is_highbit_set(v);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif /* ! USE_NO_SIMD */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the bitwise OR of the inputs
|
* Return the bitwise OR of the inputs
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user