You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note the cast on the first argument to __builtin_neon_vget_lane_i64; vget_lane_i64 takes an int64x1_t, not a poly64x1_t, so code which calls this macro ends up emitting a -Wvector-conversion diagnostic:
error: incompatible vector types passing 'poly64x1_t' (vector of 1 'poly64_t' value) to parameter of type 'attribute((vector_size(1 * sizeof(long)))) long' (vector of 1 'long' value) [-Werror,-Wvector-conversion]
Extended Description
vget_lane_p64 is defined in arm_neon.h as:
#define vget_lane_p64(__p0, __p1) extension ({
poly64x1_t __s0 = __p0;
poly64_t __ret;
__ret = (poly64_t) __builtin_neon_vget_lane_i64((poly64x1_t)__s0, __p1);
__ret;
})
Note the cast on the first argument to __builtin_neon_vget_lane_i64; vget_lane_i64 takes an int64x1_t, not a poly64x1_t, so code which calls this macro ends up emitting a -Wvector-conversion diagnostic:
error: incompatible vector types passing 'poly64x1_t' (vector of 1 'poly64_t' value) to parameter of type 'attribute((vector_size(1 * sizeof(long)))) long' (vector of 1 'long' value) [-Werror,-Wvector-conversion]
For an example, you can use:
#include <arm_neon.h>
poly64_t foo (poly64x1_t v);
poly64_t
foo (poly64x1_t v) {
return vget_lane_p64(v, 0);
}
Or, on Compiler Explorer: https://godbolt.org/z/GWf6fq
It looks like this is a problem on all the vget*_lane_p64 functions.
The text was updated successfully, but these errors were encountered: