~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/arch/arm/nwfpe/todo.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 TODO LIST
  2 =========
  3 
  4 ::
  5 
  6   POW{cond}<S|D|E>{P,M,Z} Fd, Fn, <Fm,#value> - power
  7   RPW{cond}<S|D|E>{P,M,Z} Fd, Fn, <Fm,#value> - reverse power
  8   POL{cond}<S|D|E>{P,M,Z} Fd, Fn, <Fm,#value> - polar angle (arctan2)
  9 
 10   LOG{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - logarithm to base 10
 11   LGN{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - logarithm to base e
 12   EXP{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - exponent
 13   SIN{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - sine
 14   COS{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - cosine
 15   TAN{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - tangent
 16   ASN{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - arcsine
 17   ACS{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - arccosine
 18   ATN{cond}<S|D|E>{P,M,Z} Fd, <Fm,#value> - arctangent
 19 
 20 These are not implemented.  They are not currently issued by the compiler,
 21 and are handled by routines in libc.  These are not implemented by the FPA11
 22 hardware, but are handled by the floating point support code.  They should
 23 be implemented in future versions.
 24 
 25 There are a couple of ways to approach the implementation of these.  One
 26 method would be to use accurate table methods for these routines.  I have
 27 a couple of papers by S. Gal from IBM's research labs in Haifa, Israel that
 28 seem to promise extreme accuracy (in the order of 99.8%) and reasonable speed.
 29 These methods are used in GLIBC for some of the transcendental functions.
 30 
 31 Another approach, which I know little about is CORDIC.  This stands for
 32 Coordinate Rotation Digital Computer, and is a method of computing
 33 transcendental functions using mostly shifts and adds and a few
 34 multiplications and divisions.  The ARM excels at shifts and adds,
 35 so such a method could be promising, but requires more research to
 36 determine if it is feasible.
 37 
 38 Rounding Methods
 39 ----------------
 40 
 41 The IEEE standard defines 4 rounding modes.  Round to nearest is the
 42 default, but rounding to + or - infinity or round to zero are also allowed.
 43 Many architectures allow the rounding mode to be specified by modifying bits
 44 in a control register.  Not so with the ARM FPA11 architecture.  To change
 45 the rounding mode one must specify it with each instruction.
 46 
 47 This has made porting some benchmarks difficult.  It is possible to
 48 introduce such a capability into the emulator.  The FPCR contains
 49 bits describing the rounding mode.  The emulator could be altered to
 50 examine a flag, which if set forced it to ignore the rounding mode in
 51 the instruction, and use the mode specified in the bits in the FPCR.
 52 
 53 This would require a method of getting/setting the flag, and the bits
 54 in the FPCR.  This requires a kernel call in ArmLinux, as WFC/RFC are
 55 supervisor only instructions.  If anyone has any ideas or comments I
 56 would like to hear them.
 57 
 58 NOTE:
 59  pulled out from some docs on ARM floating point, specifically
 60  for the Acorn FPE, but not limited to it:
 61 
 62  The floating point control register (FPCR) may only be present in some
 63  implementations: it is there to control the hardware in an implementation-
 64  specific manner, for example to disable the floating point system.  The user
 65  mode of the ARM is not permitted to use this register (since the right is
 66  reserved to alter it between implementations) and the WFC and RFC
 67  instructions will trap if tried in user mode.
 68 
 69  Hence, the answer is yes, you could do this, but then you will run a high
 70  risk of becoming isolated if and when hardware FP emulation comes out
 71 
 72                 -- Russell.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php