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"))


Reply via email to