[PATCH v1 1/2] Aarch64: Add test for non-commutative SIMD intrinsic

2024-07-03 Thread alfie.richards
This adds a test for non-commutative SIMD NEON intrinsics. Specifically addp is non-commutative and has a bug in the current big-endian implementation. gcc/testsuite/ChangeLog: * gcc.target/aarch64/vector_intrinsics_asm.c: New test. --- .../aarch64/vector_intrinsics_asm.c | 3

[PATCH v1 0/2] Aarch64: addp NEON big-endian fix [PR114890]

2024-07-03 Thread alfie.richards
From: Alfie Richards Hi All, This fixes a case where the operands for the addp NEON intrinsic were erroneously swapped. Regtested on aarch64-unknown-linux-gnu Ok for master and GCC14.2? Kind regards, Alfie Richards Alfie Richards (2): Aarch64: Add test for non-commutative SIMD intrinsic

[PATCH v1 2/2] Aarch64, bugfix: Fix NEON bigendian addp intrinsic [PR114890]

2024-07-03 Thread alfie.richards
This change removes code that switches the operands in bigendian mode erroneously. This fixes the related test also. gcc/ChangeLog: PR target/114890 * config/aarch64/aarch64-simd.md: Remove bigendian operand swap. gcc/testsuite/ChangeLog: PR target/114890 * gcc

[PATCH] [PATCH] C: Support target_version FMV for the C front end

2024-10-22 Thread alfie.richards
From: Alfie Richards This patch adds support for `target_version` function multiversioning to the C frontend. The functionality and behavior matches the CPP frontend. This is likely to need to be changed later down the line for the Aarch64 backend to match the ACLE but that is future work. Note

[PATCH v2 0/1] Support for FMV in C front end.

2024-10-24 Thread alfie.richards
From: Alfie Richards This update serves to provide a minor cleanup and to CC in relevant maintainers. Additionally, I looked into the behavior of FMV on x86 with this patch and found the assembly looks reasonable, however the assembler produces an error for duplicate definitons so have left this

[PATCH v2 1/1] C: Support Function multiversionsing in the C front end

2024-10-24 Thread alfie.richards
This patch adds support for `target_version` function multiversioning to the C frontend, specifically intended for enabling this for Aarch64 targets. The functionality and behavior matches the CPP frontend. This is likely to need to be changed later down the line for Aarch64 targets to match the

[PATCH v3] C: Support Function multiversionsing in the C front end

2024-11-04 Thread alfie.richards
Hi, Joseph pointed out a pretty major flaw that this previously did not merge fmv declarations and definitons or check properly for duplicate definitons. I rewrote the fmv logic and moved it to pushdecl resulting in a patch that I much prefer. The logic in pushdecl now detects the FMV case and a

[PATCH v2] C and CPP: Add flag to generate resolver at default version implementation.

2024-11-05 Thread alfie.richards
Hi all, Updating this patch to rebase ontop of the new version of the C FMV patch. As I mentioned in that series, we are very keen to get ACLE Compliant FMV support for Aarch64 in for GCC 15. I am aware this is a busy period for all though. Regtested on Aarch64, X86 Bootstrapped on aarch64-none-

[PATCH] C and CPP: Add flag to generate resolver at default version implementation.

2024-10-30 Thread alfie.richards
Hi all, This patch adds the TARGET_CREATE_FMV_DISPATCHER_AT_DEFAULT_IMPL hook which changes FMV behavior for target_version functions to match the Arm C Language Extension. The functional differences consist of: 1. Generating the resolver for the dispatched symbol at the site of the default ve

[PATCH v3 1/1] CPP: Add flag to generate resolver at default version implementation.

2024-11-26 Thread alfie.richards
This patch adds the TARGET_CREATE_FMV_DISPATCHER_AT_DEFAULT_IMPL flag which changes FMV behavior for target_version functions to match the Arm C Language Extension. The functional differences consist of: 1. Generating the resolver for the dispatched symbol at the site of the default version de

[PATCH v3 0/1] CPP: Add flag to generate resolver at default version implementation.

2024-11-26 Thread alfie.richards
From: Alfie Richards Hello, I have changed this patch to not rely on the C multiversion patch. I still plan to get that patch up eventually, but I think it requires some more work and feedback. This patch now just changes the FMV dispatcher generation for Aarch64 to comply with the ACLE. If po

[PATCH v4 0/1] C: Support Function multiversioning in the C front end

2024-11-15 Thread alfie.richards
From: Alfie Richards Hi Joseph and all, I worked through Josephs feedback, and as I fixed certain issues I came to the conclusion he was correct that a rethink was required. I reworked this to only have the one FMV binding for each function set which gets replaced with the dispatched symbol dec

[PATCH v4 1/1] C: Support Function multiversioning in the C front end

2024-11-15 Thread alfie.richards
This patch adds support for `target_version` function multiversioning to the C frontend, specifically intended for enabling this for Aarch64 targets. The functionality and behavior matches the CPP frontend. Which is to say it is not ACLE compliant, as I have another patch achieving this. The maj

[PATCH v4 1/1] C++: Add flag to generate resolver at default version implementation.

2024-12-05 Thread alfie.richards
This patch adds the TARGET_CREATE_FMV_DISPATCHER_AT_DEFAULT_IMPL flag which changes FMV behavior for target_version functions to match the Arm C Language Extension. The functional differences consist of: 1. Generating the resolver for the dispatched symbol at the site of the default version de

[PATCH v4 0/1] C++: Add flag to generate resolver at default version implementation

2024-12-05 Thread alfie.richards
From: Alfie Richards Hi Jason, Thank you for the feedback! Hopefully that is all addressed in this version. Again regtested and I think this version is functionally identical to the previous. Kind regards, Alfie Richards Alfie Richards (1): C++: Add flag to generate resolver at default ver

[committed] Regenerate aarch64.opt.urls

2025-01-21 Thread alfie.richards
This updates aarch64.opt.urls after my patch earlier today. Pushing directly as it;s an obvious fix. gcc/ChangeLog: * config/aarch64/aarch64.opt.urls: Regenerate --- gcc/config/aarch64/aarch64.opt.urls | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc/config/aarch64/aarch64.op

[PATCH v4 1/1] Add warning for non-spec compliant FMV in Aarch64

2025-01-17 Thread alfie.richards
This patch adds a warning when FMV is used for Aarch64. The reasoning for this is the ACLE [1] spec for FMV has diverged significantly from the current implementation and we want to prevent potential future compatability issues. There is a patch for an ACLE compliant version of target_version an

[PATCH v4 0/1] FMV AArch64 warning

2025-01-17 Thread alfie.richards
From: Alfie Richards Hi, Thank you Richard for catching that! It's good to know about keeping it around. Rebased onto master, fixed up a new test, and addressed your comment. Kind regards, Alfie Alfie Richards (1): Add warning for non-spec compliant FMV in Aarch64 gcc/config/aarch64/aarch

[PATCH v5 1/1] Add warning for non-spec compliant FMV in Aarch64

2025-01-17 Thread alfie.richards
This patch adds a warning when FMV is used for Aarch64. The reasoning for this is the ACLE [1] spec for FMV has diverged significantly from the current implementation and we want to prevent potential future compatability issues. There is a patch for an ACLE compliant version of target_version an

[PATCH v5 0/1] FMV AArch64 warning

2025-01-17 Thread alfie.richards
From: Alfie Richards Appologies, forgot to commit my changes before sending. Alfie Richards (1): Add warning for non-spec compliant FMV in Aarch64 gcc/config/aarch64/aarch64.cc | 9 + gcc/config/aarch64/aarch64.opt | 4 gcc/doc/invoke.texi

[PATCH v2] Add warning for non-spec compliant FMV in Aarch64

2025-01-09 Thread alfie.richards
This patch adds a warning when FMV is used for Aarch64. The reasoning for this is the ACLE [1] spec for FMV has diverged significantly from the current implementation and we want to prevent potential future compatability issues. There is a patch for an ACLE compliant version of target_version an

[PATCH v3 0/1] FMV AArch64 warning

2025-01-17 Thread alfie.richards
From: Alfie Richards Hi both, I updated this patch as in other work I found a more natural place for this warning to be issued. I also implemented Kyrylo's suggestion to only issue the warning once. I don't yet have commit access so if this patch is okay would either of you be okay to commit i

[PATCH v3 1/1] Add warning for non-spec compliant FMV in Aarch64

2025-01-17 Thread alfie.richards
This patch adds a warning when FMV is used for Aarch64. The reasoning for this is the ACLE [1] spec for FMV has diverged significantly from the current implementation and we want to prevent potential future compatability issues. There is a patch for an ACLE compliant version of target_version an

[PATCH] Add warning for use of non-spec FMV in Aarch64

2025-01-09 Thread alfie.richards
This patch adds a warning whenever FMV is used for Aarch64. The reasoning for this is the ACLE [1] spec for FMV has diverged significantly from the current implementation and we want to prevent future compatability issues. There is a patch for and ACLE compliant version of target_version and targ