]> git.ipfire.org Git - thirdparty/gcc.git/commit
Optimize A < B ? A : B to MIN_EXPR.
authorliuhongt <hongtao.liu@intel.com>
Tue, 19 Dec 2023 02:39:06 +0000 (10:39 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 11 Jan 2024 01:20:17 +0000 (09:20 +0800)
commit6686e16fda419067b91614835dd743ebb82717ea
treefac882981a734386575829fe9bb93df289e8748d
parent96a9355a3d5b24f010fa6ad0b51bba5cc3f334f1
Optimize A < B ? A : B to MIN_EXPR.

Similar for A < B ? B : A to MAX_EXPR.
There're codes in the frontend to optimize such pattern but failed to
handle testcase in the PR since it's exposed at gimple level when
folding backend builtins.

pr95906 now can be optimized to MAX_EXPR as it's commented in the
testcase.

// FIXME: this should further optimize to a MAX_EXPR
 typedef signed char v16i8 __attribute__((vector_size(16)));
 v16i8 f(v16i8 a, v16i8 b)

gcc/ChangeLog:

PR target/104401
* match.pd (VEC_COND_EXPR: A < B ? A : B -> MIN_EXPR): New patten match.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr104401.c: New test.
* gcc.dg/tree-ssa/pr95906.c: Adjust testcase.
gcc/match.pd
gcc/testsuite/gcc.dg/tree-ssa/pr95906.c
gcc/testsuite/gcc.target/i386/pr104401.c [new file with mode: 0644]