FPMODE(1) FPMODE(1) NAME fpmode - run a command in specified floating point and/or memory mode SYNOPSIS fpmode precise|performance|smm|nsmm|spec|nonspec command [ arguments ] DESCRIPTION fpmode executes command, forcing it to use the specified floating point exception and memory access mode. This is only meaningful on processors that support multiple modes. On these processors, the default mode is usually performance mode (also called imprecise exception mode) and non- sequential memory (nsmm) mode. On all other processors, the default is precise exception and sequential (smm) mode. The R8000 is the only processor which supports both a precise exception mode and a performance mode. All other processors support only precise exceptions, though automatic flushing of denormalized results to zero may be controlled through the setting of the FS bit in the FP control and status register by calling set_fpc_csr(). In precise exception mode, all floating point exceptions/interrupts are reported on the instruction that caused the exception, so floating point signal handlers can clean up the FP state and continue execution. In performance mode, floating point interrupts are asynchronous and the reported program counter is meaningless. Precise mode is provided as a means of debugging processes and/or backward compatibility for programs that have knowledge of the FP state. It causes significant performance degradation. When a program is run in performance mode on an R8000, the floating point processor automatically flushes all denormalized results to zero regardless of the setting of the FS (flush denormalized results to zero) bit in the FP control and status register. This bit is turned on at exec() time. Turning it off (by calling set_fpc_csr()) will cause performance degradation. When the same program is run in precise mode, the FS bit is turned off at exec() time (for backward compatibility with older processors). Note that this means a given program may generate different results when run in performance and precise modes. Non-sequential memory access mode allows the processor to do floating point and integer memory operations out of order, thus possibly providing better performance. This is only supported on R8000 processors. Turning on speculative execution (spec) mode tells the kernel to ignore all memory access faults generated by the program. This mode is used by the compiler to provide better performance in some cases by allowing eager instruction scheduling. Note that this may also cause significantly worse performance if used indiscriminately and should be avoided when debugging since it masks potential problems. The floating point mode is inherited across fork() and exec() system calls. To modify both exception and memory modes, use fpmode twice; e.g., fpmode precise fpmode smm command SEE ALSO syssgi(2), get_fpc_csr(3), set_fpc_csr(3). WARNINGS In the case of the following command fpmode precise command1; command2 fpmode applies only to command1. The command fpmode precise (command1; command2) is syntactically incorrect. Page 2