forked from weaselab/conflict-set
Fix NEON type mismatch in conflictMask16 for gcc/aarch64 + USE_64_BIT=1
vcgtq_s64 returns uint64x2_t but vmovn_s64 requires int64x2_t. clang accepts the implicit conversion via lax vector conversions, but gcc does not. Add an explicit vreinterpretq_s64_u64 so the code compiles with gcc on aarch64 when USE_64_BIT=1. This path is otherwise untested in CI (aarch64 matrices use USE_64_BIT=0; the 64-bit-versions matrix uses amd64 AVX compare16). Closes #80
This commit is contained in:
+2
-1
@@ -2135,7 +2135,8 @@ inline uint8x16_t conflictMask16(const InternalVersionT *vs,
|
||||
int32x2_t r32[8];
|
||||
const auto *vsp = reinterpret_cast<const int64_t *>(vs);
|
||||
for (int j = 0; j < 8; ++j) {
|
||||
r32[j] = vmovn_s64(vcgtq_s64(vld1q_s64(vsp + 2 * j), rvVec));
|
||||
r32[j] = vmovn_s64(
|
||||
vreinterpretq_s64_u64(vcgtq_s64(vld1q_s64(vsp + 2 * j), rvVec)));
|
||||
}
|
||||
uint32x4_t w4[4];
|
||||
for (int k = 0; k < 4; ++k) {
|
||||
|
||||
Reference in New Issue
Block a user