100 lines
3.4 KiB
C
100 lines
3.4 KiB
C
/* speExcCommon.h - common definitions for IEEE-754 compatibility FP handler */
|
|
|
|
/*
|
|
* Copyright (c) 2012 Wind River Systems, Inc.
|
|
*
|
|
* The right to copy, distribute, modify or otherwise make use
|
|
* of this software may be licensed only pursuant to the terms
|
|
* of an applicable Wind River license agreement.
|
|
*/
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01b,20jul12,zgl WIND00364435: corrected some definitions
|
|
01a,17may12,vp Written.
|
|
*/
|
|
|
|
#ifndef __INCspeExcCommonh
|
|
#define __INCspeExcCommonh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* defines */
|
|
|
|
#define _SPEFSCR_SOVH (0x80000000)
|
|
#define _SPEFSCR_OVH (0x40000000)
|
|
#define _SPEFSCR_FGH (0x20000000)
|
|
#define _SPEFSCR_FXH (0x10000000)
|
|
#define _SPEFSCR_FINVH (0x08000000) /* Status bit: invalid op. for high vector operations */
|
|
#define _SPEFSCR_FDBZH (0x04000000) /* Status bit: divide by zero for high vector operations */
|
|
#define _SPEFSCR_FUNFH (0x02000000) /* Status bit: underflow for high vector operations */
|
|
#define _SPEFSCR_FOVFH (0x01000000) /* Status bit: overflow for high vector operations */
|
|
#define _SPEFSCR_FINXS (0x00200000) /* Sticky */
|
|
#define _SPEFSCR_FINVS (0x00100000) /* Sticky */
|
|
#define _SPEFSCR_FDBZS (0x00080000) /* Sticky */
|
|
#define _SPEFSCR_FUNFS (0x00040000) /* Sticky */
|
|
#define _SPEFSCR_FOVFS (0x00020000) /* Sticky */
|
|
#define _SPEFSCR_SOV (0x00008000)
|
|
#define _SPEFSCR_OV (0x00004000)
|
|
#define _SPEFSCR_FG (0x00002000)
|
|
#define _SPEFSCR_FX (0x00001000) /* Status bit: inexact */
|
|
#define _SPEFSCR_FINV (0x00000800) /* Status bit: invalid op. for scalar/low vector operations */
|
|
#define _SPEFSCR_FDBZ (0x00000400) /* Status bit: divide by zero for scalar/low vector operations */
|
|
#define _SPEFSCR_FUNF (0x00000200) /* Status bit: underflow for scalar/low vector operations */
|
|
#define _SPEFSCR_FOVF (0x00000100) /* Status bit: overflow for scalar/low vector operations */
|
|
#define _SPEFSCR_EXC_ENABLE_MASK (0x0000007C)
|
|
#define _SPEFSCR_FINXE (0x00000040) /* Exception Enable bit */
|
|
#define _SPEFSCR_FINVE (0x00000020) /* Exception Enable bit */
|
|
#define _SPEFSCR_FDBZE (0x00000010) /* Exception Enable bit */
|
|
#define _SPEFSCR_FUNFE (0x00000008) /* Exception Enable bit */
|
|
#define _SPEFSCR_FOVFE (0x00000004) /* Exception Enable bit */
|
|
#define _SPEFSCR_FRMC (0x00000003) /* Rounding mode */
|
|
|
|
#define _SPEFSCR_FRMC_NRST (0x00000000) /* Round to nearest */
|
|
#define _SPEFSCR_FRMC_ZERO (0x00000001) /* Round towards zero */
|
|
#define _SPEFSCR_FRMC_PINF (0x00000002) /* Round towards +Infinity */
|
|
#define _SPEFSCR_FRMC_NINF (0x00000003) /* Round towards -Infinity */
|
|
|
|
/* typedefs */
|
|
|
|
typedef enum
|
|
{
|
|
POSITIVE = 0,
|
|
NEGATIVE = 1
|
|
} SIGN_TYPE;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
EQUAL = 0,
|
|
LESS_THAN = 1,
|
|
GREATER_THAN = 2,
|
|
UNORDERED = 3
|
|
} COMP_CODE;
|
|
|
|
/* forward declarations */
|
|
|
|
IMPORT unsigned int vxEfdctui(double);
|
|
IMPORT unsigned int vxEfdctuiz(double);
|
|
IMPORT signed int vxEfdctsi(double);
|
|
IMPORT signed int vxEfdctsiz(double);
|
|
IMPORT unsigned int vxEfdctuf(double);
|
|
IMPORT signed int vxEfdctsf(double);
|
|
|
|
IMPORT unsigned int vxEfsctui(float);
|
|
IMPORT unsigned int vxEfsctuiz(float);
|
|
IMPORT signed int vxEfsctsi(float);
|
|
IMPORT signed int vxEfsctsiz(float);
|
|
IMPORT unsigned int vxEfsctuf(float);
|
|
IMPORT signed int vxEfsctsf(float);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCspeExcCommonh */
|
|
|