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. 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-builtins.def | 13 - gcc/config/aarch64/aarch64-simd.md | 23 +- gcc/config/aarch64/aarch64.cc | 44 + gcc/config/aarch64/arm_fp16.h | 28 +- gcc/config/aarch64/arm_neon.h | 2111 +---------------- 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 | 9 +- .../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 +- 29 files changed, 2547 insertions(+), 2132 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
