FPI(3-BSD) RISC/os Reference Manual FPI(3-BSD)
NAME
fpi - floating-point interrupt analysis
SYNOPSIS
#include <fpi.h>
void fpi()
void printfpicounts()
int fpicounts[];
char *fpilist[];
DESCRIPTION
MIPS floating-point units generate floating-point interrupts
for some classes of operations that occur with low fre-
quency. In these cases the system software then emulates
the operation in software. As a program takes floating-
point interrupts its performance degrades since the opera-
tions are emulated in software. The routines and counters
described here are used to analyze the causes of floating-
point interrupts.
The routine fpi makes a fp_sigintr(2) (for -systype bsd) or
sysmips(2) [MIPS_FPISGINT] (for -systype svr3) system call
to cause floating-point interrupts to generate a SIGFPE. It
also sets up a special signal handler for SIGFPE's. On a
floating-point interrupt that signal handler determines the
precise cause of the interrupt and increments the appropri-
ate counter in fpi_counts[].
The routine printfpi_counts prints out the value of the
counters and their description on stderr as in the following
example:
source signaling NaN = 0
source quiet NaN = 10
source denormalized value = 23
move of zero = 83
negate of zero = 84
implemented only in software = 5
invalid operation = 96
divide by zero = 3837
destination overflow = 398
destination underflow = 489
The constants in the file <fpi.h> along the counters,
fpi_counts[], and the descriptive strings, fpi_list[], can
also be used to format messages.
LIMITATIONS
fpi can't be used with programs that normally generate
SIGFPE's.
Printed 11/19/92 Page 1
FPI(3-BSD) RISC/os Reference Manual FPI(3-BSD)
ALSO SEE
R2010 Floating Point Coprocessor Architecture
R2360 Floating Point Board Product Description
fp_sigintr(2). sysmips(2) [MIPS_FPISGINTR].
Page 2 Printed 11/19/92