]> git.ipfire.org Git - thirdparty/gcc.git/commit
AArch64: Support C/C++ operations on svbool_t
authorTejas Belagod <tejas.belagod@arm.com>
Mon, 6 Jan 2025 05:53:44 +0000 (11:23 +0530)
committerTejas Belagod <tejas.belagod@arm.com>
Mon, 10 Nov 2025 16:09:28 +0000 (16:09 +0000)
commitfc604ad3aef53e144c6d2b8557cb14b93d5e6492
treee34e5a5f58aee61a66b62258d16b781e6362de7d
parentdbc9d1dade3fa53be7bbef3b90691ab6a84323a3
AArch64: Support C/C++ operations on svbool_t

Support a subset of C/C++ operations (bitwise, conditional etc.) on svbool_t.

gcc/c-family/ChangeLog:

* c-common.cc (c_build_vec_convert): Support vector boolean
types for __builtin_convertvector ().

gcc/c/ChangeLog:

* c-typeck.cc (build_binary_op): Support vector boolean types.

gcc/cp/ChangeLog:

* typeck.cc (cp_build_binary_op): Likewise.
* call.cc (build_conditional_expr): Support vector booleans.
* cvt.cc (ocp_convert): Call target hook to resolve conversion
between standard and non-standard booleans.

gcc/ChangeLog:

* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Make
SVE vector boolean type equivalent to GNU vectors.
* config/aarch64/aarch64-sve.md (extend<vpred><mode>2,
zero_extend<vpred><mode>2, trunc<mode><vpred>2, vec_cmp<mode><mode>):
New patterns to support additional operations on predicate modes.
* config/aarch64/aarch64.cc (aarch64_valid_vector_boolean_op): New.
(aarch64_invalid_unary_op): Consider vector bool types.
(aarch64_invalid_binary_op): Likewise.
(aarch64_convert_to_type): Define target hook and handle standard to
non-standard bool conversion.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/sve/acle/general/cops_bool.c: New.
gcc/c-family/c-common.cc
gcc/c/c-typeck.cc
gcc/config/aarch64/aarch64-sve-builtins.cc
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/aarch64.cc
gcc/cp/call.cc
gcc/cp/cvt.cc
gcc/cp/typeck.cc
gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c [new file with mode: 0644]