1 // SPDX-License-Identifier: GPL-2.0-only 1 2 /* ieee754 floating point arithmetic 3 * single and double precision 4 * 5 * BUGS 6 * not much dp done 7 * doesn't generate IEEE754_INEXACT 8 */ 9 /* 10 * MIPS floating point support 11 * Copyright (C) 1994-2000 Algorithmics Ltd. 12 */ 13 14 #include <linux/compiler.h> 15 16 #include "ieee754.h" 17 #include "ieee754sp.h" 18 #include "ieee754dp.h" 19 20 /* 21 * Special constants 22 */ 23 24 /* 25 * Older GCC requires the inner braces for ini 26 * anonymous struct member. Without an error 27 */ 28 #define xPCNST(s, b, m, ebias) 29 { 30 { 31 .sign = (s), 32 .bexp = (b) + ebias, 33 .mant = (m) 34 } 35 } 36 37 #define DPCNST(s, b, m) 38 xPCNST(s, b, m, DP_EBIAS) 39 40 const union ieee754dp __ieee754dp_spcvals[] = 41 DPCNST(0, DP_EMIN - 1, 0x0000000000000 42 DPCNST(1, DP_EMIN - 1, 0x0000000000000 43 DPCNST(0, 0, 0x0000000000000 44 DPCNST(1, 0, 0x0000000000000 45 DPCNST(0, 3, 0x4000000000000 46 DPCNST(1, 3, 0x4000000000000 47 DPCNST(0, DP_EMAX + 1, 0x0000000000000 48 DPCNST(1, DP_EMAX + 1, 0x0000000000000 49 DPCNST(0, DP_EMAX + 1, 0x7FFFFFFFFFFFF 50 DPCNST(0, DP_EMAX + 1, 0x8000000000000 51 DPCNST(0, DP_EMAX, 0xFFFFFFFFFFFFF 52 DPCNST(1, DP_EMAX, 0xFFFFFFFFFFFFF 53 DPCNST(0, DP_EMIN, 0x0000000000000 54 DPCNST(1, DP_EMIN, 0x0000000000000 55 DPCNST(0, DP_EMIN - 1, 0x0000000000001 56 DPCNST(1, DP_EMIN - 1, 0x0000000000001 57 DPCNST(0, 31, 0x0000000000000 58 DPCNST(0, 63, 0x0000000000000 59 }; 60 61 #define SPCNST(s, b, m) 62 xPCNST(s, b, m, SP_EBIAS) 63 64 const union ieee754sp __ieee754sp_spcvals[] = 65 SPCNST(0, SP_EMIN - 1, 0x000000), 66 SPCNST(1, SP_EMIN - 1, 0x000000), 67 SPCNST(0, 0, 0x000000), 68 SPCNST(1, 0, 0x000000), 69 SPCNST(0, 3, 0x200000), 70 SPCNST(1, 3, 0x200000), 71 SPCNST(0, SP_EMAX + 1, 0x000000), 72 SPCNST(1, SP_EMAX + 1, 0x000000), 73 SPCNST(0, SP_EMAX + 1, 0x3FFFFF), 74 SPCNST(0, SP_EMAX + 1, 0x400000), 75 SPCNST(0, SP_EMAX, 0x7FFFFF), 76 SPCNST(1, SP_EMAX, 0x7FFFFF), 77 SPCNST(0, SP_EMIN, 0x000000), 78 SPCNST(1, SP_EMIN, 0x000000), 79 SPCNST(0, SP_EMIN - 1, 0x000001), 80 SPCNST(1, SP_EMIN - 1, 0x000001), 81 SPCNST(0, 31, 0x000000), 82 SPCNST(0, 63, 0x000000), 83 }; 84
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.