https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122216

            Bug ID: 122216
           Summary: MVE: lsll and asrl intrinsics do not match actual
                    instructions
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: clyon at gcc dot gnu.org
          Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---
            Target: arm

As reported in
https://gcc.gnu.org/pipermail/gcc-patches/2025-August/692431.html
the MVE asrl and lsll intrinsics current implementation does not support
negative shift amounts, unlike the underlying expected instructions.

This is because the current implementation uses C shift operators, instead of
calling directly the builtins.

I posted a fix which re-implements these intrinsics using the new framework:
https://gcc.gnu.org/pipermail/gcc-patches/2025-August/693454.html

but this fix is only partial, because we have to handle cases where RTL faces
out-of-range shift amounts.   A patch for this is being discussed in
https://forge.sourceware.org/gcc/gcc-TEST/pulls/68

Reply via email to