------- Comment #2 from changpeng dot fang at amd dot com 2010-05-18 19:39 ------- I have a patch to fix the test cases: http://gcc.gnu.org/ml/gcc-patches/2010-05/msg01359.html
For prefetch-6.c, patch http://gcc.gnu.org/ml/gcc-cvs/2010-05/msg00567.html applies the insn to prefetch ratio heuristic to loops with known trip count, and thus filtered one prefetch out. Add --param min-insn-to-prefetch-ratio=6 (default is 10) fixes the problem. For prefetch-7.c, patch http://gcc.gnu.org/ml/gcc-cvs/2010-05/msg00566.html does not generate prefetch if the loop is far from being sufficiently unrolled required by the prefetching. In this case, prefetching requires the loop to be unrolled 16 times, but the loop is not unrolled due to the parameter constraint. We remove --param max-unrolled-insns=1 to allow unrolling and thus generating prefetches. The movnti count is also adjusted. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44185