Summary: | unnecessary additions in loop [x86, x86_64] | ||
---|---|---|---|
Product: | gcc | Reporter: | Julian Taylor <jtaylor.debian> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | UNCONFIRMED --- | ||
Severity: | normal | CC: | crazylht, hjl.tools, hp |
Priority: | P3 | Keywords: | missed-optimization |
Version: | 4.8.0 | ||
Target Milestone: | --- | ||
Host: | Target: | x86_64-linux-gnu | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | ||
Attachments: | code |
Description
Julian Taylor
2013-01-31 10:43:17 UTC
Created attachment 29313 [details]
code
these three lines is missing at the top of the attachment #include <complex.h> #include <pmmintrin.h> #define UNLIKELY(x) __builtin_expect((x),0) Can you try a new compiler, 4.4 is no longer maintained? it is still the case in 4.8 svn r195604 (built on i586 fedora 11) and the versions in between, 4.4 is the oldest I tested. This is just IV-OPTs going wrong. One thing which I will note does improve the code is doing: __m128 n = _mm_cmpneq_ps(res, res); int need = _mm_movemask_ps(n); if (UNLIKELY(need)) { comp_mult(r, a, b, i); } else _mm_store_ps((float*)&r[i], res); |