]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Make C/C++ operations possible on SVE ACLE types.
authorTejas Belagod <tejas.belagod@arm.com>
Fri, 26 Jul 2024 09:17:43 +0000 (14:47 +0530)
committerTejas Belagod <tejas.belagod@arm.com>
Fri, 29 Nov 2024 11:24:29 +0000 (16:54 +0530)
This patch changes the TYPE_INDIVISBLE flag to 0 to enable SVE ACLE types to be
treated as GNU vectors and have the same semantics with operations that are
defined on GNU vectors.

gcc/ChangeLog:

* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Flip
TYPE_INDIVISBLE flag for SVE ACLE vector types.

gcc/config/aarch64/aarch64-sve-builtins.cc

index 0fec1cd439e729dca495aac4dea054a25ede20a7..adbadd303d401d70acaeab3c216516a0748c56d4 100644 (file)
@@ -4576,6 +4576,9 @@ register_builtin_types ()
              vectype = build_truth_vector_type_for_mode (BYTES_PER_SVE_VECTOR,
                                                          VNx16BImode);
              num_pr = 1;
+             /* Leave svbool_t as indivisible for now.  We don't yet support
+                C/C++ operators on predicates.  */
+             TYPE_INDIVISIBLE_P (vectype) = 1;
            }
          else
            {
@@ -4592,12 +4595,12 @@ register_builtin_types ()
                          && TYPE_ALIGN (vectype) == 128
                          && known_eq (size, BITS_PER_SVE_VECTOR));
              num_zr = 1;
+             TYPE_INDIVISIBLE_P (vectype) = 0;
            }
          vectype = build_distinct_type_copy (vectype);
          gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype));
          SET_TYPE_STRUCTURAL_EQUALITY (vectype);
          TYPE_ARTIFICIAL (vectype) = 1;
-         TYPE_INDIVISIBLE_P (vectype) = 1;
          make_type_sizeless (vectype);
        }
       if (num_pr)