Commit b5774ad3 authored by Evan Nemerson's avatar Evan Nemerson

neon/cagt: implement vcagt{s_f32,d_f64}

parent 5d0df2c8
...@@ -34,6 +34,34 @@ HEDLEY_DIAGNOSTIC_PUSH ...@@ -34,6 +34,34 @@ HEDLEY_DIAGNOSTIC_PUSH
SIMDE_DISABLE_UNWANTED_DIAGNOSTICS SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
SIMDE_BEGIN_DECLS_ SIMDE_BEGIN_DECLS_
SIMDE_FUNCTION_ATTRIBUTES
uint32_t
simde_vcagts_f32(simde_float32_t a, simde_float32_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vcagts_f32(a, b);
#else
return (simde_math_fabsf(a) > simde_math_fabsf(b)) ? ~UINT32_C(0) : UINT32_C(0);
#endif
}
#if defined(SIMDE_ARM_NEON_A64V8_ENABLE_NATIVE_ALIASES)
#undef vcagts_f32
#define vcagts_f32(a, b) simde_vcagts_f32((a), (b))
#endif
SIMDE_FUNCTION_ATTRIBUTES
uint64_t
simde_vcagtd_f64(simde_float64_t a, simde_float64_t b) {
#if defined(SIMDE_ARM_NEON_A64V8_NATIVE)
return vcagtd_f64(a, b);
#else
return (simde_math_fabs(a) > simde_math_fabs(b)) ? ~UINT64_C(0) : UINT64_C(0);
#endif
}
#if defined(SIMDE_ARM_NEON_A64V8_ENABLE_NATIVE_ALIASES)
#undef vcagtd_f64
#define vcagtd_f64(a, b) simde_vcagtd_f64((a), (b))
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_uint32x2_t simde_uint32x2_t
simde_vcagt_f32(simde_float32x2_t a, simde_float32x2_t b) { simde_vcagt_f32(simde_float32x2_t a, simde_float32x2_t b) {
...@@ -47,7 +75,7 @@ simde_vcagt_f32(simde_float32x2_t a, simde_float32x2_t b) { ...@@ -47,7 +75,7 @@ simde_vcagt_f32(simde_float32x2_t a, simde_float32x2_t b) {
SIMDE_VECTORIZE SIMDE_VECTORIZE
for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) { for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) {
r_.values[i] = (simde_math_fabsf(a_.values[i]) > simde_math_fabsf(b_.values[i])) ? 0xffffffff : 0; r_.values[i] = simde_vcagts_f32(a_.values[i], b_.values[i]);
} }
return simde_uint32x2_from_private(r_); return simde_uint32x2_from_private(r_);
...@@ -71,7 +99,7 @@ simde_vcagt_f64(simde_float64x1_t a, simde_float64x1_t b) { ...@@ -71,7 +99,7 @@ simde_vcagt_f64(simde_float64x1_t a, simde_float64x1_t b) {
SIMDE_VECTORIZE SIMDE_VECTORIZE
for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) { for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) {
r_.values[i] = (simde_math_fabs(a_.values[i]) > simde_math_fabs(b_.values[i])) ? 0xffffffffffffffff : 0; r_.values[i] = simde_vcagtd_f64(a_.values[i], b_.values[i]);
} }
return simde_uint64x1_from_private(r_); return simde_uint64x1_from_private(r_);
...@@ -97,7 +125,7 @@ simde_vcagtq_f32(simde_float32x4_t a, simde_float32x4_t b) { ...@@ -97,7 +125,7 @@ simde_vcagtq_f32(simde_float32x4_t a, simde_float32x4_t b) {
SIMDE_VECTORIZE SIMDE_VECTORIZE
for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) { for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) {
r_.values[i] = (simde_math_fabsf(a_.values[i]) > simde_math_fabsf(b_.values[i])) ? 0xffffffff : 0; r_.values[i] = simde_vcagts_f32(a_.values[i], b_.values[i]);
} }
return simde_uint32x4_from_private(r_); return simde_uint32x4_from_private(r_);
...@@ -123,7 +151,7 @@ simde_vcagtq_f64(simde_float64x2_t a, simde_float64x2_t b) { ...@@ -123,7 +151,7 @@ simde_vcagtq_f64(simde_float64x2_t a, simde_float64x2_t b) {
SIMDE_VECTORIZE SIMDE_VECTORIZE
for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) { for (size_t i = 0 ; i < (sizeof(r_.values) / sizeof(r_.values[0])) ; i++) {
r_.values[i] = (simde_math_fabs(a_.values[i]) > simde_math_fabs(b_.values[i])) ? 0xffffffffffffffff : 0; r_.values[i] = simde_vcagtd_f64(a_.values[i], b_.values[i]);
} }
return simde_uint64x2_from_private(r_); return simde_uint64x2_from_private(r_);
......
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