From owner-freebsd-questions@FreeBSD.ORG Wed Feb 18 22:54:12 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id 4C2D2106564A; Wed, 18 Feb 2009 22:54:08 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: freebsd-questions@freebsd.org Date: Wed, 18 Feb 2009 17:53:56 -0500 User-Agent: KMail/1.6.2 References: <499c7357.14098e0a.1394.ffffda2d@mx.google.com> In-Reply-To: <499c7357.14098e0a.1394.ffffda2d@mx.google.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200902181753.59988.jkim@FreeBSD.org> Cc: Kailash Kailash Subject: Re: FreeBSD 7.O compiled code is very slow X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Feb 2009 22:54:13 -0000 On Wednesday 18 February 2009 03:44 pm, Kailash Kailash wrote: > I am using FreeBSD 7.0 in 64 BIT mode. Same code compiled on BSD > 7.0 runs 50% speed (as expected by CPU and code architecture) > compared to BSD 6.2. Here is one real code with binary output. On > 3.0 GHz Woodcrest processor, I am able to copy from one cache to > another cache at the speed of 24Gbytes/second verses 12 > Gbytes/second. Any help is appreciated. You may try "-fno-ivopts". I think the bug is: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27440 Jung-uk Kim > Thanks, > > Kailash > > > > Source-code: > > #define BACKWARD_MEMCOPY_WITH_TYPE(dp, sp, len, type) > BACKWARD_MEMCOPY((type*)(dp), (const type*)(sp), > ((len)+(sizeof(type)-1))/sizeof(type)) > > > > #define BACKWARD_MEMCOPY(dp, sp, len) \ > > do { \ > > smwbits __len = len; /* must be signed value */ > \ > > while (--__len >= 0) \ > > (dp)[__len] = (sp)[__len]; \ > > } while (0) > > > > BSD 6.2 code > > 0x00000000004353b2 : mov > 0x8(%rbp,%rdx,8),%rax > > 0x00000000004353b7 : mov > %rax,0x48(%r12,%rdx,8) > > 0x00000000004353bc : dec %rdx > > 0x00000000004353bf : jns > 0x4353b2 > > > > BSD 7.0 code > > 0x000000000040cb80 : mov > 0xfffffffffffffff8(%rsi),%rax > > 0x000000000040cb84 : mov > %rax,0xfffffffffffffff8(%rcx) > > 0x000000000040cb88 : sub > $0x8,%rsi > > 0x000000000040cb8c : sub > $0x8,%rcx > > 0x000000000040cb90 : sub > $0x1,%rdx > > 0x000000000040cb94 : jns > 0x40cb80