[Bug tree-optimization/49064] [x86/x64]: broken alias analysis leads vectorizer to emit poor code
piotr.wyderski at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri May 20 13:02:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49064
--- Comment #3 from Piotr Wyderski <piotr.wyderski at gmail dot com> 2011-05-20 12:50:49 UTC ---
#include <cstdint>
#include <emmintrin.h>
struct X {
__m128i* m_Data;
std::size_t m_Len;
void xor_all(const X& v1, const X& v2);
void xor_all2(const X& v1, const X& v2);
};
void X::xor_all(const X& v1, const X& v2) {
for(std::size_t i = 0; i != m_Len; ++i) {
m_Data[i] = v1.m_Data[i] ^ v2.m_Data[i];
}
}
void X::xor_all2(const X& v1, const X& v2) {
__m128i* p0 = m_Data;
__m128i* p1 = v1.m_Data;
__m128i* p2 = v2.m_Data;
for(std::size_t i = 0; i != m_Len; ++i) {
p0[i] = p1[i] ^ p2[i];
}
}
$ g++ -std=gnu++0x -msse2 -O2 -DNDEBUG testcase.cpp
More information about the Gcc-bugs
mailing list