diff options
author | Hu, Lin1 <lin1.hu@intel.com> | 2024-09-02 10:24:31 +0800 |
---|---|---|
committer | Haochen Jiang <haochen.jiang@intel.com> | 2024-09-02 10:24:31 +0800 |
commit | 86f5031c804220274a9bbebd26b8ebf47a2207ac (patch) | |
tree | a4318ed7c083e733ef8c69f3ffa0c7dcc6e1681e /gcc/tree-vectorizer.h | |
parent | b1f9fbb6da1a3ced57c3668cecc9f9449e1b237e (diff) | |
download | gcc-86f5031c804220274a9bbebd26b8ebf47a2207ac.zip gcc-86f5031c804220274a9bbebd26b8ebf47a2207ac.tar.gz gcc-86f5031c804220274a9bbebd26b8ebf47a2207ac.tar.bz2 |
i386: Optimize ordered and nonequal
Currently, when we input !__builtin_isunordered (a, b) && (a != b), gcc
will emit
ucomiss %xmm1, %xmm0
movl $1, %ecx
setp %dl
setnp %al
cmovne %ecx, %edx
andl %edx, %eax
movzbl %al, %eax
In fact,
xorl %eax, %eax
ucomiss %xmm1, %xmm0
setne %al
is better.
gcc/ChangeLog:
* match.pd: Optimize (and ordered non-equal) to
(not (or unordered equal))
gcc/testsuite/ChangeLog:
* gcc.target/i386/optimize_one.c: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions