From owner-freebsd-arm@FreeBSD.ORG Thu May 7 04:44:15 2009 Return-Path: Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CBC9106566B for ; Thu, 7 May 2009 04:44:15 +0000 (UTC) (envelope-from venkiece2005@gmail.com) Received: from mail-gx0-f211.google.com (mail-gx0-f211.google.com [209.85.217.211]) by mx1.freebsd.org (Postfix) with ESMTP id 71E718FC12 for ; Thu, 7 May 2009 04:44:10 +0000 (UTC) (envelope-from venkiece2005@gmail.com) Received: by gxk7 with SMTP id 7so864458gxk.19 for ; Wed, 06 May 2009 21:44:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=/8LDrft9/lMqPrREAMaUeNwfraXG8igcThrSq2GZveo=; b=jlh+0Ovyij/RBGwHIM8APc8gAFA5J33iVzmWBkpH0eqcCg+zqwkpnyCgrtPbP2CbFs PIlxxo/RSmjy9MYDSMZbxaxwJToj+0jGuZWAfnyAJcfoJj66BZTJ9/EJV4PsZvHzZCSU jBgufZd7GR1oPnhxOwJYuWQS0vftrK3U3Na70= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=SSoDotX5J2HlNZD6qOvYwRPHwxPY9t+HrYrCTilcGE6dYwCyMkPfJ7TSlQITP6sn2g Oy9YMog5zp8viEQkfemHCTeX4WLARQVJkIUkNZpyoneIP1lf8hoQOE3aqRYT4mqqVCup WpyH2clBDF/5xqjx1LQKihomuSo8ZjTa/XR4o= MIME-Version: 1.0 Received: by 10.151.134.13 with SMTP id l13mr3688112ybn.217.1241671002845; Wed, 06 May 2009 21:36:42 -0700 (PDT) In-Reply-To: <200905051637.n45GbE7Q057469@casselton.net> References: <20090505.081701.569396874.imp@bsdimp.com> <200905051637.n45GbE7Q057469@casselton.net> Date: Thu, 7 May 2009 10:06:42 +0530 Message-ID: <6d53329e0905062136x58b4ca4eh9ebd9f45c34e565@mail.gmail.com> From: venki kaps To: Mark Tinguely Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: channa.kad@gmail.com, freebsd-arm@freebsd.org Subject: Re: strncmp issue X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 May 2009 04:44:15 -0000 Hi Tinguely, Thanks for the fix. i am also agreeing with you. A small doubt: ENTRY(strncmp) /* if (len == 0) return 0 */ cmp r2, #0 moveq r0, #0 RETc(eq) /* ip == last src address to compare */ add ip, r0, r2 1: ldrb r2, [r0], #1 ldrb r3, [r1], #1 cmp ip, r0 beq 2f <---- if (strlen(str1) > len) break; cmp r2, #0 beq 2f <----- if (*str1++ == 0) break; cmpcs r2, r3 <----- if (*str1 == *str2) return s1-s2; beq 1b 2: sub r0, r2, r3 RET END(strncmp) Expecting beq 2f after cmp r2, #0 to break the loop. Is it good to use? OR Is cmp r2, #1 enough? Regards, Venkappa On Tue, May 5, 2009 at 10:07 PM, Mark Tinguely wrote: > > > Is the hand rolled assembler still better than what gcc can produce? > > > > Warner > > Assuming my additional conditional branch, we can save at least an add and > a branch in the comparison loop with the hard rolled assembler over the > "cc -O2 head/lib/libc/string/strncmp.c" code. > > If the conditional branch can be deleted, then even better. > > --Mark. >