On 07/17/2012 07:02 AM, Loren Merritt wrote: > 25% faster on penryn (even though I didn't predict that by counting uops). > 25% faster on sandybridge. > No change on bulldozer. > > But even though I successfully predicted that this is an improvement, I don't > understand its performance. > 6x load, 12x punpckldq, 6x store, 4x scalar: > Should take 12 cycles on penryn, 7 on sandybridge, 12 on bulldozer. > Instead, I measure 25 cycles per iteration on penryn, 19 on sandybridge, 96 > on bulldozer. > > SBUTTERFLYPS works for a sse version. I would expect that to be slower on > sandybridge, because even though they have identical semantics and each > cost 1 uop, unpcklps only gets 1 execution unit whereas punpckldq can > chose among 2. But instead I measure SBUTTERFLYPS as the same speed as > this patch.
I can confirm that this is about 25% faster on sandybridge. For SBUTTERFLYPS I'm getting the same speed as SBUTTERFLY for AVX, but slower for SSE2. So maybe it has something to do with 3-op? I'm getting basically no change on athlon64. Thanks! Justin _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
