sse: don't use vec_cmpne for float vectors on xlC
@@ -776,7 +776,11 @@ simde_mm_cmpneq_ps (simde__m128 a, simde__m128 b) {
r_.neon_u32 = vmvnq_u32(vceqq_f32(a_.neon_f32, b_.neon_f32));
#elif defined(SIMDE_SSE_WASM_SIMD128)
r_.wasm_v128 = wasm_f32x4_ne(a_.wasm_v128, b_.wasm_v128);
- #elif defined(SIMDE_SSE_POWER_ALTIVEC) && (SIMDE_ARCH_POWER >= 900)
+ #elif defined(SIMDE_SSE_POWER_ALTIVEC) && (SIMDE_ARCH_POWER >= 900) && !defined(HEDLEY_IBM_VERSION)
+ /* vec_cmpne(vector float, vector float) is missing from XL C/C++ v16.1.1,
+ though the documentation (table 89 on page 432 of the IBM XL C/C++ for
+ Linux Compiler Reference, Version 16.1.1) shows that it should be
+ present. Both GCC and clang support it. */
r_.altivec_f32 = (vector float) vec_cmpne(a_.altivec_f32, b_.altivec_f32);
#elif defined(SIMDE_VECTOR_SUBSCRIPT_OPS)
r_.i32 = (__typeof__(r_.i32)) (a_.f32 != b_.f32);
