From owner-freebsd-current@FreeBSD.ORG Sat Sep 15 09:15:06 2012 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A3AC41065670; Sat, 15 Sep 2012 09:15:06 +0000 (UTC) (envelope-from rdivacky@vlakno.cz) Received: from vlakno.cz (vlakno.cz [46.28.110.116]) by mx1.freebsd.org (Postfix) with ESMTP id 206C68FC0A; Sat, 15 Sep 2012 09:15:05 +0000 (UTC) Received: by vlakno.cz (Postfix, from userid 1002) id 09BE07F3847; Sat, 15 Sep 2012 11:14:56 +0200 (CEST) Date: Sat, 15 Sep 2012 11:14:56 +0200 From: Roman Divacky To: Steve Kargl Message-ID: <20120915091455.GA93876@freebsd.org> References: <504F4645.4070900@FreeBSD.org> <504F4A6B.4010001@coosemans.org> <504F5101.8090906@FreeBSD.org> <505101C3.70203@freebsd.org> <20120913020833.GA8255@troutmask.apl.washington.edu> <1347550332.1110.108.camel@revolution.hippie.lan> <20120913161024.GA13846@troutmask.apl.washington.edu> <20120914202319.GB5244@lor.one-eyed-alien.net> <20120915001808.GA70215@troutmask.apl.washington.edu> <20120915010600.GA70426@troutmask.apl.washington.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120915010600.GA70426@troutmask.apl.washington.edu> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: Ian Lepore , Brooks Davis , current@freebsd.org, Dimitry Andric , toolchain@freebsd.org, Tijl Coosemans , Nathan Whitehorn Subject: Re: Clang as default compiler November 4th X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Sep 2012 09:15:07 -0000 LLVM by default turns these: case LibFunc::copysign: case LibFunc::copysignf: case LibFunc::copysignl: case LibFunc::fabs: case LibFunc::fabsf: case LibFunc::fabsl: case LibFunc::sin: case LibFunc::sinf: case LibFunc::sinl: case LibFunc::cos: case LibFunc::cosf: case LibFunc::cosl: case LibFunc::sqrt: case LibFunc::sqrtf: case LibFunc::sqrtl: case LibFunc::floor: case LibFunc::floorf: case LibFunc::floorl: case LibFunc::nearbyint: case LibFunc::nearbyintf: case LibFunc::nearbyintl: case LibFunc::ceil: case LibFunc::ceilf: case LibFunc::ceill: case LibFunc::rint: case LibFunc::rintf: case LibFunc::rintl: case LibFunc::trunc: case LibFunc::truncf: case LibFunc::truncl: case LibFunc::log2: case LibFunc::log2f: case LibFunc::log2l: case LibFunc::exp2: case LibFunc::exp2f: case LibFunc::exp2l: from lib calls to direct code (ie. instruction or sequence of). This is not a "bug" but feature ;) I am not sure what the rules for the transformation should be. Allow it only with -ffast-math ? Disallow it on i386? Really, no idea. Steve, you tested on i386? Can you test on amd64? Do you guys have any opinion what to do here? On Fri, Sep 14, 2012 at 06:06:00PM -0700, Steve Kargl wrote: > On Fri, Sep 14, 2012 at 05:18:08PM -0700, Steve Kargl wrote: > > > > A third class of failure appears to be that clang emits > > i387 fpu instructions for at least sinf and cosf instead > > of calls to the library routines. AFAIK, the library > > routines are faster and more accurate. > > > > Yep. Clang has problems with at least sinf on i386 FreeBSD. > > % pwd > /usr/home/kargl/trunk/math/sine > > % make clean && make CC=cc testf > cc -o testf -O2 -pipe -static -I/usr/local/include -I../mp testf.c \ > -L/usr/local/lib -L../mp -lsgk -lmpfr -lgmp -lm > > % ./testf -m 0 -M 1e20 -r > ULP Range | > -----------+------------------------- > [0.0:0.6] | 1006424 (100.00%) > (0.6:0.7] | 0 ( 0.00%) > (0.7:0.8] | 0 ( 0.00%) > (0.8:0.9] | 0 ( 0.00%) > (0.9:1.0] | 0 ( 0.00%) > (1.0:2.0] | 0 ( 0.00%) > (2.0:3.0] | 0 ( 0.00%) > 3.0 < ULP | 0 ( 0.00%) > -----------+------------------------- > Count | 1006424 > Max ULP | 0.50084 > Max ULP x | 53462490661259313152.000000 0x1.72f876p+65 > > % make clean && make CC=clang testf > clang -o testf -O2 -pipe -static -I/usr/local/include -I../mp testf.c \ > -L/usr/local/lib -L../mp -lsgk -lmpfr -lgmp -lm > > % ./testf -m 0 -M 1e20 -r > ULP Range | > -----------+------------------------- > [0.0:0.6] | 1 ( 0.00%) > (0.6:0.7] | 0 ( 0.00%) > (0.7:0.8] | 0 ( 0.00%) > (0.8:0.9] | 0 ( 0.00%) > (0.9:1.0] | 0 ( 0.00%) > (1.0:2.0] | 0 ( 0.00%) > (2.0:3.0] | 0 ( 0.00%) > 3.0 < ULP | 999998 (100.00%) > -----------+------------------------- > Count | 999999 > Max ULP | 1328505256679420125050194353979392.00000 > Max ULP x | 75516780764213542912.000000 0x1.06006p+66 > > -- > Steve > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"