Hi all,

In this PR we have the wrong return type for some intrinsics. It should be 
unsigned, but we implement it as signed.
Fix this by adjusting the type qualifiers used when creating the builtins and 
fixing the type in the arm_neon.h intrinsic.
With the adjustment in qualifiers we now don't need to cast the result when 
returning.

Bootstrapped and tested on aarch64-none-linux-gnu.

Pushing to master.
Thanks,
Kyrill

gcc/
        PR target/96313
        * config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
        qualifiers.
        * config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
        Remove unnecessary result cast.
        (vqmovun_s32): Likewise.
        (vqmovun_s64): Likewise.
        (vqmovunh_s16): Likewise.  Fix return type.
        (vqmovuns_s32): Likewise.
        (vqmovund_s64): Likewise.

gcc/testsuite/
        PR target/96313
        * gcc.target/aarch64/pr96313.c: New test.
        * gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16): Adjust
        return type.
        (test_vqmovuns_s32): Likewise.
        (test_vqmovund_s64): Likewise.

Attachment: vqmovun.patch
Description: vqmovun.patch

Reply via email to