1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 #ifndef _SYS_IEEEFP_H
  28 #define _SYS_IEEEFP_H
  29 
  30 #ifdef  __cplusplus
  31 extern "C" {
  32 #endif
  33 
  34 /*
  35  * Sun types for IEEE floating point.
  36  */
  37 
  38 #if defined(__sparc)
  39 
  40 enum fp_direction_type {        /* rounding direction */
  41         fp_nearest      = 0,
  42         fp_tozero       = 1,
  43         fp_positive     = 2,
  44         fp_negative     = 3
  45 };
  46 
  47 enum fp_precision_type {        /* extended rounding precision */
  48         fp_extended     = 0,
  49         fp_single       = 1,
  50         fp_double       = 2,
  51         fp_precision_3  = 3
  52 };
  53 
  54 enum fp_exception_type {        /* exceptions according to bit number */
  55         fp_inexact      = 0,
  56         fp_division     = 1,
  57         fp_underflow    = 2,
  58         fp_overflow     = 3,
  59         fp_invalid      = 4
  60 };
  61 #define N_IEEE_EXCEPTION 5      /* Number of floating-point exceptions. */
  62 
  63 enum fp_trap_enable_type {      /* trap enable bits according to bit number */
  64         fp_trap_inexact = 0,
  65         fp_trap_division        = 1,
  66         fp_trap_underflow       = 2,
  67         fp_trap_overflow        = 3,
  68         fp_trap_invalid = 4
  69 };
  70 
  71 #elif defined(__i386) || defined(__amd64)
  72 
  73 enum fp_direction_type {        /* rounding direction */
  74         fp_nearest      = 0,
  75         fp_negative     = 1,
  76         fp_positive     = 2,
  77         fp_tozero       = 3
  78 };
  79 
  80 enum fp_precision_type {        /* extended rounding precision */
  81         fp_single       = 0,
  82         fp_precision_3  = 1,
  83         fp_double       = 2,
  84         fp_extended     = 3
  85 };
  86 
  87 enum fp_exception_type {        /* exceptions according to bit number */
  88         fp_invalid      = 0,
  89         fp_denormalized = 1,
  90         fp_division     = 2,
  91         fp_overflow     = 3,
  92         fp_underflow    = 4,
  93         fp_inexact      = 5
  94 };
  95 #define N_IEEE_EXCEPTION 6      /* Number of floating-point exceptions. */
  96 
  97 enum fp_trap_enable_type {      /* trap enable bits according to bit number */
  98         fp_trap_invalid = 0,
  99         fp_trap_denormalized    = 1,
 100         fp_trap_division        = 2,
 101         fp_trap_overflow        = 3,
 102         fp_trap_underflow       = 4,
 103         fp_trap_inexact = 5
 104 };
 105 
 106 #endif  /* __i386 || __amd64 */
 107 
 108 enum fp_class_type {            /* floating-point classes */
 109         fp_zero         = 0,
 110         fp_subnormal    = 1,
 111         fp_normal       = 2,
 112         fp_infinity     = 3,
 113         fp_quiet        = 4,
 114         fp_signaling    = 5
 115 };
 116 
 117 #ifdef  __cplusplus
 118 }
 119 #endif
 120 
 121 #endif  /* _SYS_IEEEFP_H */