Revised based on the comment and moved it into existing patterns as. gcc/ChangeLog:
* match.pd: Extend A CMP 0 ? A : -A into (type)A CMP 0 ? A : -A. Extend A CMP 0 ? A : -A into (type) A CMP 0 ? A : -A. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/absfloat16.c: New test. Signed-off-by: Kugan Vivekanandarajah <kvivekana...@nvidia.com> Bootstrapped and regression test on aarch64-linux-gnu. Is this OK for trunk? Thanks, Kugan ________________________________ From: Andrew Pinski <pins...@gmail.com> Sent: Monday, 15 July 2024 5:30 AM To: Kugan Vivekanandarajah <kvivekana...@nvidia.com> Cc: gcc-patches@gcc.gnu.org <gcc-patches@gcc.gnu.org>; richard.guent...@gmail.com <richard.guent...@gmail.com> Subject: Re: [PATCH] MATCH: add abs support for half float External email: Use caution opening links or attachments On Sun, Jul 14, 2024 at 1:12 AM Kugan Vivekanandarajah <kvivekana...@nvidia.com> wrote: > > This patch extends abs detection in matched for half float. > > Bootstrapped and regression test on aarch64-linux-gnu. Is this OK for trunk? This is basically this pattern: ``` /* A >=/> 0 ? A : -A same as abs (A) */ (for cmp (ge gt) (simplify (cnd (cmp @0 zerop) @1 (negate @1)) (if (!HONOR_SIGNED_ZEROS (TREE_TYPE(@0)) && !TYPE_UNSIGNED (TREE_TYPE(@0)) && bitwise_equal_p (@0, @1)) (if (TYPE_UNSIGNED (type)) (absu:type @0) (abs @0))))) ``` except extended to handle an optional convert. Why didn't you just extend the above pattern to handle the convert instead? Also I think you have an issue with unsigned types with the comparison. Also you should extend the -abs(A) pattern right below it in a similar fashion. Thanks, Andrew Pinski > > gcc/ChangeLog: > > * match.pd: Add pattern to convert (type)A >=/> 0 ? A : -A into abs (A) for > half float. > > gcc/testsuite/ChangeLog: > > * gcc.dg/tree-ssa/absfloat16.c: New test. > > Signed-off-by: Kugan Vivekanandarajah <kvivekana...@nvidia.com> >
0001-abshalffloat-v2.patch
Description: 0001-abshalffloat-v2.patch