extmath.h
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* */
#ifndef EXTENDED_MATH_HEADER
#define EXTENDED_MATH_HEADER
/* bitmask for each FP operation has to correspond to mask defined in clang/lib/Basic/Targets/Sparc.h */
#define EXTMATH_FPOP_MASK_ADD (0x00000001) /* FPOP_ADD */
#define EXTMATH_FPOP_MASK_SUB (0x00000002) /* FPOP_SUB */
#define EXTMATH_FPOP_MASK_MUL (0x00000004) /* FPOP_MUL */
#define EXTMATH_FPOP_MASK_DIV (0x00000008) /* FPOP_DIV */
#define EXTMATH_FPOP_MASK_MULEX (0x00000010) /* FPOP_MULEX */
#define EXTMATH_FPOP_MASK_SQRT (0x00000020) /* FPOP_SQRT */
#define EXTMATH_FPOP_MASK_CMP (0x00000040) /* FPOP_CMP */
#define EXTMATH_FPOP_MASK_CI2F (0x00000080) /* FPOP_CI2F */
#define EXTMATH_FPOP_MASK_CF2I (0x00000100) /* FPOP_CF2I */
#define EXTMATH_FPOP_MASK_CFUP (0x00000200) /* FPOP_CFUP */
#define EXTMATH_FPOP_MASK_CFDN (0x00000400) /* FPOP_CFDN */
#define EXTMATH_FPOP_MASK_ABS (0x00000800) /* FPOP_ABS */
#define EXTMATH_FPOP_MASK_PACK (0x00001000) /* FPOP_PACK */
#define EXTMATH_FPOP_MASK_MOV (0x00002000) /* FPOP_MOV */
#define EXTMATH_FPOP_MASK_NEG (0x00004000) /* FPOP_NEG */
#ifndef SOFT_FOPS_HALF
#define SOFT_FOPS_HALF (0)
#endif /* SOFT_FOPS_HALF */
#ifndef SOFT_FOPS_SINGLE
#define SOFT_FOPS_SINGLE (0)
#endif /* SOFT_FOPS_SINGLE */
#ifndef SOFT_FOPS_DOUBLE
#define SOFT_FOPS_DOUBLE (0)
#endif /* SOFT_FOPS_DOUBLE */
#include <stdint.h>
typedef union {
half value;
uint16_t word;
} ieee_half_shape_type;
#define GET_HALF_WORD(i,d) \
do { \
ieee_half_shape_type gf_u; \
gf_u.value = (d); \
(i) = gf_u.word; \
} while(0)
#define SET_HALF_WORD(d,i) \
do { \
ieee_half_shape_type sf_u; \
sf_u.word = (i); \
(d) = sf_u.value; \
} while (0)
extern half fabsh(half x);
//extern half fmovh(half);
extern half floorh(half x);
extern half logh(half x);
extern half powh(half x, half y);
extern half sqrth(half x);
extern double sqrt(double x);
#endif /* EXTENDED_MATH_HEADER */