]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Update comment explaining code layout
authorAlfie Richards <alfie.richards@arm.com>
Fri, 16 Jan 2026 12:09:17 +0000 (12:09 +0000)
committerAlfie Richards <alfie.richards@arm.com>
Tue, 20 Jan 2026 14:50:06 +0000 (14:50 +0000)
gcc/ChangeLog:

* config/aarch64/aarch64.md: Update comment.
* config/aarch64/aarch64-simd.md: Change comment to refer to
aarch64.md.
* config/aarch64/aarch64-sme.md: Likewise.
* config/aarch64/aarch64-sve.md: Likewise.
* config/aarch64/aarch64-sve2.md: Likewise.
* config/aarch64/aarch64-sve-builtins.def: Update comment.
* config/aarch64/aarch64-sve-builtins-base.def: Update to refer
to aarch64-sve-builtins.def.
* config/aarch64/aarch64-sve-builtins-sme.def: Likewise.
* config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.

gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/aarch64-sme.md
gcc/config/aarch64/aarch64-sve-builtins-base.def
gcc/config/aarch64/aarch64-sve-builtins-sme.def
gcc/config/aarch64/aarch64-sve-builtins-sve2.def
gcc/config/aarch64/aarch64-sve-builtins.def
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/aarch64-sve2.md
gcc/config/aarch64/aarch64.md

index 0ef7339a40a77be91200af3aa3230f41821fa626..505e8b1126fa021a22f1ee37cecae1fc8098ae78 100644 (file)
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
-;; Code organisation:
-;
-;; The lines of is an instruction is aarch64, simd, sve, sve2, or sme are
-;; a little blurry.
-;;
-;; Therefore code is organised by the following rough principles:
-;;
-;; - aarch64.md: For shared parts of the architecture (such as defining
-;;     registers and constants) and for instructions that operate on non-SIMD
-;;     registers.
-;; - aarch64-simd.md: For instructions that operate on non-scaling SIMD
-;;     registers.
-;; - aarch64-sve.md for SVE instructions that are pre SVE2.
-;; - aarch64-sme.md for any scalable SIMD instruction that is incompatible with
-;;     non-streaming mode. This usually means it uses the ZA or ZT register.
-;; - aarch64-sve2.md for any scalable SIMD instruction that either is
-;;     streaming compatible, or theoretically could be later.
+;; Code organization: See block comment at the top of aarch64.md.
 
 ;; The following define_subst rules are used to produce patterns representing
 ;; the implicit zeroing effect of 64-bit Advanced SIMD operations, in effect
index a2faa4b2bb733f36785b9d17914ca55b3044f3a2..72823e528ded7c6c6f1a8bad99190a6a8e4254b9 100644 (file)
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
-;; Code organisation:
-;
-;; The lines of is an instruction is aarch64, simd, sve, sve2, or sme are
-;; a little blurry.
-;;
-;; Therefore code is organised by the following rough principles:
-;;
-;; - aarch64.md: For shared parts of the architecture (such as defining
-;;     registers and constants) and for instructions that operate on non-SIMD
-;;     registers.
-;; - aarch64-simd.md: For instructions that operate on non-scaling SIMD
-;;     registers.
-;; - aarch64-sve.md for SVE instructions that are pre SVE2.
-;; - aarch64-sme.md for any scalable SIMD instruction that is incompatible with
-;;     non-streaming mode. This usually means it uses the ZA or ZT register.
-;; - aarch64-sve2.md for any scalable SIMD instruction that either is
-;;     streaming compatible, or theoretically could be later.
+;; Code organization: See block comment at the top of aarch64.md.
 
 ;; The file is organised into the following sections (search for the full
 ;; line):
index 0a3a7a0e144e78a6fe8babbaa49766db74bf7353..9914e060f4d5ef54634d35f0a9db7e3156d71940 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* Code organisation:
-
-   The lines defining if an intrinsic is for sve, sve2, sme, and sme2 can get
-   a little blurry.
-
-   Therefore code is organised by the following rough principles:
-
-   - aarch64-sve-builtins-sme.def for any intrinsic that is fundamentally
-     incompatible with non-streaming mode. This usually means it uses the ZA
-     or ZT register.
-   - aarch64-sve-builtins-sve2.def for any intrinsic that that is a streaming mode
-     intrinsic, but either is non-streaming compatible, or theoretically could
-     be later.
-   - aarch64-sve-builtins-base.def for SVE intrinsics that are pre SVE2.
-   - aarch64-sve-builtins.def for common data types and group definitions used
-     across all files.  */
+/* Code organization: See block comment at the top of
+   aarch64-sve-builtins.def.  */
 
 #define REQUIRED_EXTENSIONS ssve (0)
 DEF_SVE_FUNCTION (svabd, binary_opt_n, all_arith, mxz)
index 9f126e8647a29a07a6d646281245df11adb168be..4feb47952874f02be908dff90c1cebce1cd36e36 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* Code organisation:
-
-   The lines defining if an intrinsic is for sve, sve2, sme, and sme2 can get
-   a little blurry.
-
-   Therefore code is organised by the following rough principles:
-
-   - aarch64-sve-builtins-sme.def for any intrinsic that is fundamentally
-     incompatible with non-streaming mode. This usually means it uses the ZA
-     or ZT register.
-   - aarch64-sve-builtins-sve2.def for any intrinsic that that is a streaming mode
-     intrinsic, but either is non-streaming compatible, or theoretically could
-     be later.
-   - aarch64-sve-builtins-base.def for SVE intrinsics that are pre SVE2.
-   - aarch64-sve-builtins.def for common data types and group definitions used
-     across all files.  */
+/* Code organization: See block comment at the top of
+   aarch64-sve-builtins.def.  */
 
 #ifndef DEF_SME_FUNCTION_GS
 #define DEF_SME_FUNCTION_GS(NAME, SHAPE, TYPES, GROUPS, PREDS) \
index 8765021d951f16f0044ec4074789c074d154352c..19249a5887514ecec4e9108a6ee504c3341e3436 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* Code organisation:
-
-   The lines defining if an intrinsic is for sve, sve2, sme, and sme2 can get
-   a little blurry.
-
-   Therefore code is organised by the following rough principles:
-
-   - aarch64-sve-builtins-sme.def for any intrinsic that is fundamentally
-     incompatible with non-streaming mode. This usually means it uses the ZA
-     or ZT register.
-   - aarch64-sve-builtins-sve2.def for any intrinsic that that is a streaming mode
-     intrinsic, but either is non-streaming compatible, or theoretically could
-     be later.
-   - aarch64-sve-builtins-base.def for SVE intrinsics that are pre SVE2.
-   - aarch64-sve-builtins.def for common data types and group definitions used
-     across all files.  */
+/* Code organization: See block comment at the top of
+   aarch64-sve-builtins.def.  */
 
 #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2, 0)
 DEF_SVE_FUNCTION (svaba, ternary_opt_n, all_integer, none)
index ecd434bda35ec5a358482291e86899e13d551753..6ad257643b69e996f35400895e9cbe97c642ec74 100644 (file)
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
-/* Code organisation:
-
-   The lines defining if an intrinsic is for sve, sve2, sme, and sme2 can get
-   a little blurry.
-
-   Therefore code is organised by the following rough principles:
-
-   - aarch64-sve-builtins-sme.def for any intrinsic that is fundamentally
-     incompatible with non-streaming mode. This usually means it uses the ZA
-     or ZT register.
-   - aarch64-sve-builtins-sve2.def for any intrinsic that that is a streaming mode
-     intrinsic, but either is non-streaming compatible, or theoretically could
-     be later.
-   - aarch64-sve-builtins-base.def for SVE intrinsics that are pre SVE2.
-   - aarch64-sve-builtins.def for common data types and group definitions used
-     across all files.  */
+/* Code organization:
+
+   The taxonomic lines dividing intrinsics into sve, sve2, and sme are perhaps
+   a little non-obvious.
+
+   The code is organized by the following rough principles:
+
+   - aarch64-sve-builtins.def for common data types, groups, and other
+       supporting definitions used across all files.
+   - aarch64-sve-builtins-base.def for the baseline SVE intrinsics which predate
+       SVE2 and SME.
+   - aarch64-sve-builtins-sve2.def for any scalable SIMD intrinsic that is
+       enabled by an SVE2+ or SME+ extension and doesn't directly touch SME
+       state (such as ZA or ZT0) and only involves regular SVE vectors and
+       predicates.
+   - aarch64-sve-builtins-sme.def for any SME+ instinsic that is clearly
+       streaming mode only.  This usually means it uses the ZA or ZT0 registers,
+       or other SME state.  */
 
 #ifndef DEF_SVE_MODE
 #define DEF_SVE_MODE(A, B, C, D)
index b77a04cd2d2d4a56453c659609be53e61b6f2476..846ed5c65d2594043d153fa14e508a7e281fde0f 100644 (file)
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
-;; Code organisation:
-;
-;; The lines of is an instruction is aarch64, simd, sve, sve2, or sme are
-;; a little blurry.
-;;
-;; Therefore code is organised by the following rough principles:
-;;
-;; - aarch64.md: For shared parts of the architecture (such as defining
-;;     registers and constants) and for instructions that operate on non-SIMD
-;;     registers.
-;; - aarch64-simd.md: For instructions that operate on non-scaling SIMD
-;;     registers.
-;; - aarch64-sve.md for SVE instructions that are pre SVE2.
-;; - aarch64-sme.md for any scalable SIMD instruction that is incompatible with
-;;     non-streaming mode. This usually means it uses the ZA or ZT register.
-;; - aarch64-sve2.md for any scalable SIMD instruction that either is
-;;     streaming compatible, or theoretically could be later.
+;; Code organization: See block comment at the top of aarch64.md.
 
 ;; The file is organised into the following sections (search for the full
 ;; line):
index c63796542acb74e9f99e100ec7edd9d937fde355..4a2d2c1cb8ce3369b52f6a67c3e0c9cca36a7d5e 100644 (file)
 ;; You should have received a copy of the GNU General Public License
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
-; 
-;; Code organisation:
-;
-;; The lines of is an instruction is aarch64, simd, sve, sve2, or sme are
-;; a little blurry.
-;;
-;; Therefore code is organised by the following rough principles:
-;;
-;; - aarch64.md: For shared parts of the architecture (such as defining
-;;     registers and constants) and for instructions that operate on non-SIMD
-;;     registers.
-;; - aarch64-simd.md: For instructions that operate on non-scaling SIMD
-;;     registers.
-;; - aarch64-sve.md for SVE instructions that are pre SVE2.
-;; - aarch64-sme.md for any scalable SIMD instruction that is incompatible with
-;;     non-streaming mode. This usually means it uses the ZA or ZT register.
-;; - aarch64-sve2.md for any scalable SIMD instruction that either is
-;;     streaming compatible, or theoretically could be later.
+
+;; Code organization: See block comment at the top of aarch64.md.
 
 ;; The file is organised into the following sections (search for the full
 ;; line):
index 58e57fd65a7933126ef9af240e6d7bc69facc0ec..568e5814afc246baa3dd77bfea0896b89f0c0441 100644 (file)
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
-;; Code organisation:
+;; Code organization:
 ;
-;; The lines of is an instruction is aarch64, simd, sve, sve2, or sme are
-;; a little blurry.
+;; The taxonomic lines dividing instructions into aarch64, simd, sve, sve2,
+;; and sme are perhaps a little non-obvious.
 ;;
-;; Therefore code is organised by the following rough principles:
+;; The code is organized by the following rough principles:
 ;;
-;; - aarch64.md: For shared parts of the architecture (such as defining
-;;     registers and constants) and for instructions that operate on non-SIMD
+;; - aarch64.md for shared parts of the architecture (such as defining
+;;     registers and constants) and for instructions that operate on
+;;     general-purpose registers.
+;; - aarch64-simd.md for instructions that operate on Advanced SIMD
 ;;     registers.
-;; - aarch64-simd.md: For instructions that operate on non-scaling SIMD
-;;     registers.
-;; - aarch64-sve.md for SVE instructions that are pre SVE2.
-;; - aarch64-sme.md for any scalable SIMD instruction that is incompatible with
-;;     non-streaming mode. This usually means it uses the ZA or ZT register.
-;; - aarch64-sve2.md for any scalable SIMD instruction that either is
-;;     streaming compatible, or theoretically could be later.
+;; - aarch64-sve.md for the baseline SVE instructions which predate SVE2 and
+;;     SME.
+;; - aarch64-sve2.md for any scalable SIMD instruction that is enabled by an
+;;     SVE2+ or SME+ extension and doesn't directly touch SME state (such as ZA,
+;;     or ZT0) and only involves regular SVE vectors and predicates.
+;; - aarch64-sme.md for any scalable SIMD instruction that is clearly
+;;     streaming mode only.  This usually means it uses the ZA or ZT0 register
+;;     or other SME state.
 
 ;; Register numbers
 (define_constants