/********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:29:50 by OpenVMS SDL EV3-3 */ /* Source: 30-MAR-2010 17:29:22 $1$DGA7274:[STARLET_H.SRC]STARDEFFL.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $IEEEDEF ***/ #ifndef __IEEEDEF_LOADED #define __IEEEDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif #define IEEE$K_VERSION_NUMBER 2 /* */ /* IEEE Floating Point control definitions. */ /* */ /* */ /* The following values are used to set the precision control and rounding control fields via */ /* SYS$IEEE_SET_PRECISION_MODE and SYS$IEEE_SET_ROUNDING_MODE. (Note that one can not set */ /* precision mode on Alpha). */ /* */ #define IEEE$C_PM_NO_CHANGE -1 /* No change. Just get previous value */ #define IEEE$C_PM_SINGLE 0 /* Single Precision */ #define IEEE$C_PM_UNUSED 1 /* This value has no meaning */ #define IEEE$C_PM_DOUBLE 2 /* Double Precision */ #define IEEE$C_PM_DOUBLE_EXTENDED 3 /* Double-Extended Precision */ #define IEEE$C_PM_MAX 3 /* Maximum legal value */ #define IEEE$C_RM_NO_CHANGE -1 /* No change. Just get previous value */ #define IEEE$C_RM_NEAREST 0 /* Nearest (or even) */ #define IEEE$C_RM_DOWN 1 /* -Infinity (down) */ #define IEEE$C_RM_UP 2 /* +Infinity (up) */ #define IEEE$C_RM_TRUNCATE 3 /* Zero (truncate/chop) */ #define IEEE$C_RM_MAX 3 /* Maximum legal value */ /* */ /* The following structure defines bits for the (software) IEEE Floating Point */ /* control register on Alpha, and for the values passed to SYS$IEEE_SET_FP_CONTROL */ /* on all architectures (except VAX where it does not exist). */ /* */ #define IEEE$M_TRAP_ENABLE_INV 0x2 #define IEEE$M_TRAP_ENABLE_DZE 0x4 #define IEEE$M_TRAP_ENABLE_OVF 0x8 #define IEEE$M_TRAP_ENABLE_UNF 0x10 #define IEEE$M_TRAP_ENABLE_INE 0x20 #define IEEE$M_TRAP_ENABLE_DNOE 0x40 #define IEEE$M_MAP_DNZ 0x2000 #define IEEE$M_MAP_UMZ 0x4000 #define IEEE$M_INHERIT 0x8000 #define IEEE$M_STATUS_INV 0x20000 #define IEEE$M_STATUS_DZE 0x40000 #define IEEE$M_STATUS_OVF 0x80000 #define IEEE$M_STATUS_UNF 0x100000 #define IEEE$M_STATUS_INE 0x200000 #define IEEE$M_STATUS_DNO 0x400000 #define IEEE$M_PC 0x1800000 #define IEEE$M_RC 0x6000000 #define IEEE$M_WPFP 0x8000000 #ifdef __NEW_STARLET typedef struct _ieee { __union { unsigned __int64 ieee$q_flags; /* Internal flags */ __struct { unsigned ieee$v_spare_0 : 1; /* Bit 0 - reserved */ /* Trap enable flags */ unsigned ieee$v_trap_enable_inv : 1; /* invalid operation */ unsigned ieee$v_trap_enable_dze : 1; /* divide by zero */ unsigned ieee$v_trap_enable_ovf : 1; /* overflow */ unsigned ieee$v_trap_enable_unf : 1; /* underflow */ unsigned ieee$v_trap_enable_ine : 1; /* inexact */ unsigned ieee$v_trap_enable_dnoe : 1; /* denormal operand exception enable */ unsigned ieee$v_spare_7_12 : 6; /* reserved */ unsigned ieee$v_map_dnz : 1; /* denormal operands mapped to 0.0 */ unsigned ieee$v_map_umz : 1; /* underflows mapped to 0.0 */ unsigned ieee$v_inherit : 1; /* inherit FP state on thread create */ unsigned ieee$v_spare_16 : 1; /* reserved */ unsigned ieee$v_status_inv : 1; /* invalid operation */ unsigned ieee$v_status_dze : 1; /* divide by zero */ unsigned ieee$v_status_ovf : 1; /* overflow */ unsigned ieee$v_status_unf : 1; /* underflow */ unsigned ieee$v_status_ine : 1; /* inexact */ unsigned ieee$v_status_dno : 1; /* denormal operand */ /* Precision, rounding, and WPFP are not currently supported on Alpha. */ unsigned ieee$v_pc : 2; /* Precision control */ unsigned ieee$v_rc : 2; /* Rounding control */ unsigned ieee$v_wpfp : 1; /* Whole program floating point mode */ unsigned ieee$v_spare_28_31 : 4; /* reserved */ } ieee$r_fill_19_; } ieee$r_fill_18_; } IEEE; #if !defined(__VAXC) #define ieee$q_flags ieee$r_fill_18_.ieee$q_flags #define ieee$v_trap_enable_inv ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_inv #define ieee$v_trap_enable_dze ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_dze #define ieee$v_trap_enable_ovf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_ovf #define ieee$v_trap_enable_unf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_unf #define ieee$v_trap_enable_ine ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_ine #define ieee$v_trap_enable_dnoe ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_dnoe #define ieee$v_map_dnz ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_map_dnz #define ieee$v_map_umz ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_map_umz #define ieee$v_inherit ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_inherit #define ieee$v_status_inv ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_inv #define ieee$v_status_dze ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_dze #define ieee$v_status_ovf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_ovf #define ieee$v_status_unf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_unf #define ieee$v_status_ine ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_ine #define ieee$v_status_dno ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_dno #define ieee$v_pc ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_pc #define ieee$v_rc ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_rc #define ieee$v_wpfp ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_wpfp #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ typedef struct _ieee { __union { unsigned int ieee$q_flags [2]; /* Internal flags */ __struct { unsigned ieee$v_spare_0 : 1; /* Bit 0 - reserved */ /* Trap enable flags */ unsigned ieee$v_trap_enable_inv : 1; /* invalid operation */ unsigned ieee$v_trap_enable_dze : 1; /* divide by zero */ unsigned ieee$v_trap_enable_ovf : 1; /* overflow */ unsigned ieee$v_trap_enable_unf : 1; /* underflow */ unsigned ieee$v_trap_enable_ine : 1; /* inexact */ unsigned ieee$v_trap_enable_dnoe : 1; /* denormal operand exception enable */ unsigned ieee$v_spare_7_12 : 6; /* reserved */ unsigned ieee$v_map_dnz : 1; /* denormal operands mapped to 0.0 */ unsigned ieee$v_map_umz : 1; /* underflows mapped to 0.0 */ unsigned ieee$v_inherit : 1; /* inherit FP state on thread create */ unsigned ieee$v_spare_16 : 1; /* reserved */ unsigned ieee$v_status_inv : 1; /* invalid operation */ unsigned ieee$v_status_dze : 1; /* divide by zero */ unsigned ieee$v_status_ovf : 1; /* overflow */ unsigned ieee$v_status_unf : 1; /* underflow */ unsigned ieee$v_status_ine : 1; /* inexact */ unsigned ieee$v_status_dno : 1; /* denormal operand */ /* Precision, rounding, and WPFP are not currently supported on Alpha. */ unsigned ieee$v_pc : 2; /* Precision control */ unsigned ieee$v_rc : 2; /* Rounding control */ unsigned ieee$v_wpfp : 1; /* Whole program floating point mode */ unsigned ieee$v_spare_28_31 : 4; /* reserved */ } ieee$r_fill_19_; } ieee$r_fill_18_; } ieee; #if !defined(__VAXC) #define ieee$q_flags ieee$r_fill_18_.ieee$q_flags #define ieee$v_trap_enable_inv ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_inv #define ieee$v_trap_enable_dze ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_dze #define ieee$v_trap_enable_ovf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_ovf #define ieee$v_trap_enable_unf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_unf #define ieee$v_trap_enable_ine ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_ine #define ieee$v_trap_enable_dnoe ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_trap_enable_dnoe #define ieee$v_map_dnz ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_map_dnz #define ieee$v_map_umz ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_map_umz #define ieee$v_inherit ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_inherit #define ieee$v_status_inv ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_inv #define ieee$v_status_dze ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_dze #define ieee$v_status_ovf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_ovf #define ieee$v_status_unf ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_unf #define ieee$v_status_ine ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_ine #define ieee$v_status_dno ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_status_dno #define ieee$v_pc ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_pc #define ieee$v_rc ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_rc #define ieee$v_wpfp ieee$r_fill_18_.ieee$r_fill_19_.ieee$v_wpfp #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __IEEEDEF_LOADED */