Port the following families of NEON intrinsics to the pragma-based framework, and adds assembly tests for them:
* vcage * vcagt * vcale * vcalt * vceq * vceqz * vcge * vcgez * vcgt * vcgtz * vcle * vclez * vclt * vcltz * vtst There is a slight regression in the fcage_f64.c/fcagt_f64.c/fcale_f64.c/fcalt_f64.c tests: I believe it is because vcage_f64 now expands to GIMPLE rather than a call to __builtin_aarch64_fcage, and then the conversion of a 0-or-1 bool to a 0-or-minus-1 bool is undone. I think it is a minor regression, but I would be grateful if anyone has any suggestions to fix it. ChangeLog: * V1: Initial revision. * V2: * Restore original definitions of the comparison functions in arm_fp16.h rather than open-coding them * Use nonnegative_constant_operand rather than aarch64_nonnegative_vector_p in aarch64_fac<optab><mode><vczle><vczbe>_const Karl Meakin (1): aarch64: Port NEON comparison intrinsics to pragma-based framework gcc/config/aarch64/aarch64-acle-builtins.h | 28 + .../aarch64/aarch64-neon-builtins-base.cc | 153 ++ .../aarch64/aarch64-neon-builtins-base.def | 154 +- gcc/config/aarch64/aarch64-protos.h | 1 + gcc/config/aarch64/aarch64-simd.md | 22 +- gcc/config/aarch64/aarch64.cc | 31 + gcc/config/aarch64/arm_neon.h | 2111 +---------------- gcc/config/aarch64/predicates.md | 3 + gcc/testsuite/gcc.target/aarch64/neon/vcage.c | 62 + gcc/testsuite/gcc.target/aarch64/neon/vcagt.c | 62 + gcc/testsuite/gcc.target/aarch64/neon/vcale.c | 62 + gcc/testsuite/gcc.target/aarch64/neon/vcalt.c | 62 + gcc/testsuite/gcc.target/aarch64/neon/vceq.c | 218 ++ gcc/testsuite/gcc.target/aarch64/neon/vceqz.c | 218 ++ gcc/testsuite/gcc.target/aarch64/neon/vcge.c | 190 ++ gcc/testsuite/gcc.target/aarch64/neon/vcgez.c | 126 + gcc/testsuite/gcc.target/aarch64/neon/vcgt.c | 190 ++ gcc/testsuite/gcc.target/aarch64/neon/vcgtz.c | 126 + gcc/testsuite/gcc.target/aarch64/neon/vcle.c | 190 ++ gcc/testsuite/gcc.target/aarch64/neon/vclez.c | 126 + gcc/testsuite/gcc.target/aarch64/neon/vclt.c | 190 ++ gcc/testsuite/gcc.target/aarch64/neon/vcltz.c | 125 + gcc/testsuite/gcc.target/aarch64/neon/vtst.c | 160 ++ .../aarch64/simd/facgt_constpool_1.c | 13 +- .../gcc.target/aarch64/simd/vcage_f64.c | 2 +- .../gcc.target/aarch64/simd/vcagt_f64.c | 2 +- .../gcc.target/aarch64/simd/vcale_f64.c | 2 +- .../gcc.target/aarch64/simd/vcalt_f64.c | 2 +- 28 files changed, 2523 insertions(+), 2108 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcage.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcagt.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcale.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcalt.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vceq.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vceqz.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcge.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcgez.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcgt.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcgtz.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcle.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vclez.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vclt.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vcltz.c create mode 100644 gcc/testsuite/gcc.target/aarch64/neon/vtst.c -- 2.51.0
