On 02/07/2026 18:19, Alice Carlotti wrote:
On Mon, Jun 29, 2026 at 02:26:53PM +0000, Karl Meakin via Sourceware Forge
wrote:
From: Karl Meakin <[email protected]>
Port the `vreinterpret` family of intrinsics to the pragma-based framework.
...
diff --git a/gcc/config/aarch64/aarch64-neon-builtins-base.def
b/gcc/config/aarch64/aarch64-neon-builtins-base.def
index 78b0a39df07b..7257f59bbc56 100644
--- a/gcc/config/aarch64/aarch64-neon-builtins-base.def
+++ b/gcc/config/aarch64/aarch64-neon-builtins-base.def
@@ -17,6 +17,12 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+// Reinterpret
+#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
The instructions required to implement the vreinterpret intrinsics (i.e. no
instructions at all) are valid in streaming mode, so this gating is wrong.
Assuming you agree, can you send a follow-up patch to fix this?
Thanks,
Alice
I think it should be left as-is, for two reasons:
1. They are not declared to be streaming compatible in the ACLE
2. Though in practice they are no-ops when optimizations are enabled, at
-O0 they will generate NEON loads/stores which are not allowed in
streaming mode
+DEF_NEON_FUNCTION (vreinterpret, neon_reinterpret, ("D0,D1"))
+DEF_NEON_FUNCTION (vreinterpretq, neon_reinterpretq, ("Q0,Q1"))
+#undef REQUIRED_EXTENSIONS
+
// Lane manipulation
#define REQUIRED_EXTENSIONS nonstreaming_only (AARCH64_FL_SIMD)
DEF_NEON_FUNCTION (vcreate, all_neon, ("D0,su64"))