Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Issue 3539003: Fix up RET instructions in sysdeps/i386/fpu (Closed)

Created:
10 years, 2 months ago by Mark Seaborn
Modified:
9 years, 5 months ago
CC:
native-client-reviews_googlegroups.com
Base URL:
ssh://gitrw.chromium.org/nacl-glibc
Visibility:
Public.

Description

Fix up RET instructions in sysdeps/i386/fpu Use NACLRET in order to pass the validator. This was automated with: perl -pi -e 's/^((\S+:)?\s*)ret(\s*)$/$1NACLRET$3/' $(find sysdeps/i386/fpu -name '*.S') This fixes all cases of RET in libm.so and from fpu files in libc.so, except for the trickier "RET $n" instructions. I considered switching to C versions of these routines (e.g. in sysdeps/ieee754/flt-32), but some are significantly more complicated (a large function inside of a few instructions) and have probably bitrotted through lack of use. Using the C versions would involve pulling in code such as __ieee754_rem_pio2f() from sysdeps/ieee754/flt-32/e_rem_pio2f.c which is not mentioned in any makefile and has probably been dead code for a while. BUG=http://code.google.com/p/nativeclient/issues/detail?id=876 TEST=run_float_math_test (with another change applied to fix SETUP_PIC_REG)

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+278 lines, -278 lines) Patch
M sysdeps/i386/fpu/e_acos.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_acosf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_acosh.S View 2 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_acoshf.S View 2 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_acoshl.S View 2 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_asin.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_asinf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_atan2.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_atan2f.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_atanh.S View 2 chunks +4 lines, -4 lines 0 comments Download
M sysdeps/i386/fpu/e_atanhf.S View 2 chunks +4 lines, -4 lines 0 comments Download
M sysdeps/i386/fpu/e_atanhl.S View 3 chunks +4 lines, -4 lines 0 comments Download
M sysdeps/i386/fpu/e_exp.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp10.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp10f.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp10l.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp2.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp2f.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_exp2l.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_expf.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/e_fmod.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_fmodf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_hypot.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_hypotf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_log.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log10.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log10f.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log10l.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log2.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log2f.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_log2l.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_logf.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_logl.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/e_pow.S View 10 chunks +14 lines, -14 lines 0 comments Download
M sysdeps/i386/fpu/e_powf.S View 10 chunks +14 lines, -14 lines 0 comments Download
M sysdeps/i386/fpu/e_powl.S View 11 chunks +15 lines, -15 lines 0 comments Download
M sysdeps/i386/fpu/e_remainder.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_remainderf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_remainderl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_scalb.S View 3 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_scalbf.S View 3 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_scalbl.S View 3 chunks +5 lines, -5 lines 0 comments Download
M sysdeps/i386/fpu/e_sqrt.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/e_sqrtf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_asinh.S View 4 chunks +6 lines, -6 lines 0 comments Download
M sysdeps/i386/fpu/s_asinhf.S View 4 chunks +6 lines, -6 lines 0 comments Download
M sysdeps/i386/fpu/s_asinhl.S View 4 chunks +6 lines, -6 lines 0 comments Download
M sysdeps/i386/fpu/s_atan.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_atanf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_cbrt.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_cbrtf.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_cbrtl.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_ceil.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_ceilf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_ceill.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_cexpf.S View 7 chunks +7 lines, -7 lines 0 comments Download
M sysdeps/i386/fpu/s_copysign.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_copysignf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_copysignl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_cos.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_cosf.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_cosl.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_expm1.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_expm1f.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_expm1l.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_fabs.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fabsf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fabsl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fdim.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_fdimf.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_fdiml.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_finite.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_finitef.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_finitel.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_floor.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_floorf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_floorl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fma.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmaf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmal.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmax.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmaxf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmaxl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fmin.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fminf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_fminl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_frexp.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_frexpf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_frexpl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_ilogb.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_ilogbf.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_ilogbl.S View 1 chunk +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_llrint.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_llrintf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_llrintl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_log1p.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/s_log1pf.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/s_log1pl.S View 1 chunk +3 lines, -3 lines 0 comments Download
M sysdeps/i386/fpu/s_logb.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_logbf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_lrint.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_lrintf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_lrintl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_nearbyint.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_nearbyintf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_nearbyintl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_remquo.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_remquof.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_remquol.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_rint.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_rintf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_scalbn.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_scalbnf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_scalbnl.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_significand.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_significandf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_sin.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_sincos.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_sincosf.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_sincosl.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_sinf.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_sinl.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_tan.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_tanf.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_tanl.S View 2 chunks +2 lines, -2 lines 0 comments Download
M sysdeps/i386/fpu/s_trunc.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_truncf.S View 1 chunk +1 line, -1 line 0 comments Download
M sysdeps/i386/fpu/s_truncl.S View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 4 (0 generated)
Mark Seaborn
10 years, 2 months ago (2010-09-29 16:27:00 UTC) #1
pasko-google - do not use
This LGTM as a specific improvement to make more code pass validation. Though I would ...
10 years, 2 months ago (2010-09-30 09:39:37 UTC) #2
khim
All these functions are implementable in C: they are part of POSIX standard so they ...
10 years, 2 months ago (2010-09-30 10:20:14 UTC) #3
Mark Seaborn
10 years, 2 months ago (2010-09-30 11:16:46 UTC) #4
On 2010/09/30 09:39:37, pasko wrote:
> This LGTM as a specific improvement to make more code pass
> validation.
>
> Though I would like to raise a question (to Victor and Mark) on
> whether we want to expose this to external developers
> now. Regardless of the answer I think you should commit this today.

OK, committed.

> As far as I can see this exposes a lot of math functions with their
> x87 implementations. So if once we want to make things fast on Atom,
> we would have to replace this stuff with SSE2 variants (and some of
> it would be hard to implement whether it's C or SSE2). Should we
> rather be more restrictive now and not export these things until we
> are specifically asked to do so? This affects portability of many
> applications, of course, but how important is that?

Can you file an issue for this?  Would I be right in thinking that x87
is just slow on Atom?

> How much of this functionality can be quickly and safely replaced by
> C versions or SSE versions (including from newer glibc)?

The first function I hit while running run_float_math_test was
finitef() (sysdeps/i386/fpu/s_finitef.S), which has a nice and simple
C implementation in sysdeps/ieee754/flt-32/s_finitef.c.

But later functions have more complex C implementations and I don't
know enough about floating point maths to know how to test this
properly or feel confident in enabling the C versions.

Mark

Powered by Google App Engine
This is Rietveld 408576698