[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gcc-3.1.1



>実際どれくらい遅いかは個々の product の manual に書いてあったりするの
>かな.  64 byte のほうはともかく, 8 byte の loop の方はもうすこし詳しく
>比較したほうがいいかも.

たぶん前後関係に依存すると思うのでそう簡単ではないと思います。

じゃあ、最後の lwz だけ lwzu にする形ではどうでしょうか。
テストしていませんが、こんな感じ。

			asm volatile (
				"addic 0,0,0;"		/* clear carry */
				"mtctr %1;"		/* load loop count */
				"1:"
				"lwz 7,4(%2);"		/* load current data
							   word */
				"lwzu 8,8(%2);"
				"adde %0,%0,7;"		/* add to sum */
				"adde %0,%0,8;"
				"bdnz 1b;"		/* loop */
				"addze %0,%0;"		/* add carry bit */
				: "+r"(sum)
				: "r"(n), "b"(w - 4)
				: "7", "8");		/* clobber r7, r8 */

64バイトの方もこっちのほうがいいのかも。