Commit a9e5faa4 authored by Evan Nemerson's avatar Evan Nemerson

neon/uqadd: clang prior to 9 used incorrect types for the scalar funcs

The second parameter was signed, but should have been unsigned.
parent 1431602f
......@@ -37,7 +37,11 @@ SIMDE_FUNCTION_ATTRIBUTES
int8_t
simde_vuqaddb_s8(int8_t a, uint8_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vuqaddb_s8(a, b);
#if defined(SIMDE_BUG_CLANG_GIT_4EC445B8)
return vuqaddb_s8(a, HEDLEY_STATIC_CAST(int8_t, b));
#else
return vuqaddb_s8(a, b);
#endif
#else
int16_t r_ = HEDLEY_STATIC_CAST(int16_t, a) + HEDLEY_STATIC_CAST(int16_t, b);
return (r_ < INT8_MIN) ? INT8_MIN : ((r_ > INT8_MAX) ? INT8_MAX : HEDLEY_STATIC_CAST(int8_t, r_));
......@@ -52,7 +56,11 @@ SIMDE_FUNCTION_ATTRIBUTES
int16_t
simde_vuqaddh_s16(int16_t a, uint16_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vuqaddh_s16(a, b);
#if defined(SIMDE_BUG_CLANG_GIT_4EC445B8)
return vuqaddh_s16(a, HEDLEY_STATIC_CAST(int16_t, b));
#else
return vuqaddh_s16(a, b);
#endif
#else
int32_t r_ = HEDLEY_STATIC_CAST(int32_t, a) + HEDLEY_STATIC_CAST(int32_t, b);
return (r_ < INT16_MIN) ? INT16_MIN : ((r_ > INT16_MAX) ? INT16_MAX : HEDLEY_STATIC_CAST(int16_t, r_));
......@@ -67,7 +75,11 @@ SIMDE_FUNCTION_ATTRIBUTES
int32_t
simde_vuqadds_s32(int32_t a, uint32_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vuqadds_s32(a, b);
#if defined(SIMDE_BUG_CLANG_GIT_4EC445B8)
return vuqadds_s32(a, HEDLEY_STATIC_CAST(int32_t, b));
#else
return vuqadds_s32(a, b);
#endif
#else
int64_t r_ = HEDLEY_STATIC_CAST(int64_t, a) + HEDLEY_STATIC_CAST(int64_t, b);
return (r_ < INT32_MIN) ? INT32_MIN : ((r_ > INT32_MAX) ? INT32_MAX : HEDLEY_STATIC_CAST(int32_t, r_));
......@@ -82,7 +94,11 @@ SIMDE_FUNCTION_ATTRIBUTES
int64_t
simde_vuqaddd_s64(int64_t a, uint64_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vuqaddd_s64(a, b);
#if defined(SIMDE_BUG_CLANG_GIT_4EC445B8)
return vuqaddd_s64(a, HEDLEY_STATIC_CAST(int64_t, b));
#else
return vuqaddd_s64(a, b);
#endif
#else
/* TODO: I suspect there is room for improvement here. This is
* just the first thing that worked, and I don't feel like messing
......
......@@ -834,6 +834,9 @@ HEDLEY_DIAGNOSTIC_POP
# if SIMDE_DETECT_CLANG_VERSION_CHECK(10,0,0) && SIMDE_DETECT_CLANG_VERSION_NOT(11,0,0)
# define SIMDE_BUG_CLANG_BAD_VI64_OPS
# endif
# if SIMDE_DETECT_CLANG_VERSION_NOT(9,0,0)
# define SIMDE_BUG_CLANG_GIT_4EC445B8
# endif
# endif
# if defined(SIMDE_ARCH_POWER)
# define SIMDE_BUG_CLANG_46770
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment