------- Comment #3 from ubizjak at gmail dot com 2007-10-31 10:31 ------- Smaller testcase:
--cut here-- void blockmove_NtoN_blend_noremap32 (const unsigned int *srcdata, int srcwidth, int srcheight, int srcmodulo, unsigned int *dstdata, int dstmodulo, int srcshift) { unsigned int *end; srcmodulo -= srcwidth; dstmodulo -= srcwidth; while (srcheight) { end = dstdata + srcwidth; while (dstdata <= end - 8) { dstdata[0] |= srcdata[0] << srcshift; dstdata[1] |= srcdata[1] << srcshift; dstdata[2] |= srcdata[2] << srcshift; dstdata[3] |= srcdata[3] << srcshift; dstdata[4] |= srcdata[4] << srcshift; dstdata[5] |= srcdata[5] << srcshift; dstdata[6] |= srcdata[6] << srcshift; dstdata[7] |= srcdata[7] << srcshift; dstdata += 8; srcdata += 8; } while (dstdata < end) *(dstdata++) |= *(srcdata++) << srcshift; srcdata += srcmodulo; dstdata += dstmodulo; srcheight--; } } --cut here-- Confirmed on x86_64 and i686-sse2 with -O2 -ftree-vectorize. -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2007-10-31 10:31:46 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33953