From owner-svn-src-head@FreeBSD.ORG Tue Jan 10 08:02:14 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0780B1065675; Tue, 10 Jan 2012 08:02:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (cl-327.ede-01.nl.sixxs.net [IPv6:2001:7b8:2ff:146::2]) by mx1.freebsd.org (Postfix) with ESMTP id B4B9A8FC20; Tue, 10 Jan 2012 08:02:13 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7:0:c412:ce36:3c98:43b8] (unknown [IPv6:2001:7b8:3a7:0:c412:ce36:3c98:43b8]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id CDFCC5C37; Tue, 10 Jan 2012 09:02:12 +0100 (CET) Message-ID: <4F0BF083.90003@FreeBSD.org> Date: Tue, 10 Jan 2012 09:02:11 +0100 From: Dimitry Andric Organization: The FreeBSD Project User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20120106 Thunderbird/10.0 MIME-Version: 1.0 To: Eitan Adler References: <201201031947.q03JlXnx039684@svn.freebsd.org> <20120110040219.GE52468@funkthat.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, John-Mark Gurney , "Pedro F. Giffuni" , src-committers@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r229415 - head/lib/libvgl X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2012 08:02:14 -0000 On 2012-01-10 05:48, Eitan Adler wrote: > On Mon, Jan 9, 2012 at 11:02 PM, John-Mark Gurney wrote: >> Last time I did benchmarking on this ~10 years ago, it was slower to >> use xor instead of using assignments... > > I'd be shocked if the compiler didn't optimize this away to an XCHG. Even with our ancient gcc 4.2 (on i386): VGLLine: [...] movl 12(%ebp), %edx movl 16(%ebp), %eax movl $1, -56(%ebp) xchgl %eax, %edx movl %edx, 12(%ebp) movl 24(%ebp), %edx movl %eax, 16(%ebp) movl %ecx, %eax xchgl %edx, %esi movl %edx, 24(%ebp) movl -84(%ebp), %edx xchgl %eax, %edx movl %eax, -80(%ebp) movl %edx, -84(%ebp) With clang, the corresponding local variables seem to have been optimized away entirely (or rather, moved around).