0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <linux/compiler.h>
0015
0016 #include "ieee754.h"
0017 #include "ieee754sp.h"
0018 #include "ieee754dp.h"
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #define xPCNST(s, b, m, ebias) \
0029 { \
0030 { \
0031 .sign = (s), \
0032 .bexp = (b) + ebias, \
0033 .mant = (m) \
0034 } \
0035 }
0036
0037 #define DPCNST(s, b, m) \
0038 xPCNST(s, b, m, DP_EBIAS)
0039
0040 const union ieee754dp __ieee754dp_spcvals[] = {
0041 DPCNST(0, DP_EMIN - 1, 0x0000000000000ULL),
0042 DPCNST(1, DP_EMIN - 1, 0x0000000000000ULL),
0043 DPCNST(0, 0, 0x0000000000000ULL),
0044 DPCNST(1, 0, 0x0000000000000ULL),
0045 DPCNST(0, 3, 0x4000000000000ULL),
0046 DPCNST(1, 3, 0x4000000000000ULL),
0047 DPCNST(0, DP_EMAX + 1, 0x0000000000000ULL),
0048 DPCNST(1, DP_EMAX + 1, 0x0000000000000ULL),
0049 DPCNST(0, DP_EMAX + 1, 0x7FFFFFFFFFFFFULL),
0050 DPCNST(0, DP_EMAX + 1, 0x8000000000000ULL),
0051 DPCNST(0, DP_EMAX, 0xFFFFFFFFFFFFFULL),
0052 DPCNST(1, DP_EMAX, 0xFFFFFFFFFFFFFULL),
0053 DPCNST(0, DP_EMIN, 0x0000000000000ULL),
0054 DPCNST(1, DP_EMIN, 0x0000000000000ULL),
0055 DPCNST(0, DP_EMIN - 1, 0x0000000000001ULL),
0056 DPCNST(1, DP_EMIN - 1, 0x0000000000001ULL),
0057 DPCNST(0, 31, 0x0000000000000ULL),
0058 DPCNST(0, 63, 0x0000000000000ULL),
0059 };
0060
0061 #define SPCNST(s, b, m) \
0062 xPCNST(s, b, m, SP_EBIAS)
0063
0064 const union ieee754sp __ieee754sp_spcvals[] = {
0065 SPCNST(0, SP_EMIN - 1, 0x000000),
0066 SPCNST(1, SP_EMIN - 1, 0x000000),
0067 SPCNST(0, 0, 0x000000),
0068 SPCNST(1, 0, 0x000000),
0069 SPCNST(0, 3, 0x200000),
0070 SPCNST(1, 3, 0x200000),
0071 SPCNST(0, SP_EMAX + 1, 0x000000),
0072 SPCNST(1, SP_EMAX + 1, 0x000000),
0073 SPCNST(0, SP_EMAX + 1, 0x3FFFFF),
0074 SPCNST(0, SP_EMAX + 1, 0x400000),
0075 SPCNST(0, SP_EMAX, 0x7FFFFF),
0076 SPCNST(1, SP_EMAX, 0x7FFFFF),
0077 SPCNST(0, SP_EMIN, 0x000000),
0078 SPCNST(1, SP_EMIN, 0x000000),
0079 SPCNST(0, SP_EMIN - 1, 0x000001),
0080 SPCNST(1, SP_EMIN - 1, 0x000001),
0081 SPCNST(0, 31, 0x000000),
0082 SPCNST(0, 63, 0x000000),
0083 };