1 #ifndef ROUNDING_H
2 #define ROUNDING_H
3 
4 /* Macros, so the values can be used together with opcodes.h */
5 
6 /* ---------------------------------------------------------------- */
7 /* BFP rounding mode as it is encoded in the m3 field of certain    */
8 /* instructions (e.g. CFEBR)                                        */
9 /* ---------------------------------------------------------------- */
10 #define M3_BFP_ROUND_PER_FPC        0
11 
12 // Cannot be mapped to IRRoundingMode
13 #define M3_BFP_ROUND_NEAREST_AWAY   1
14 
15 // 2 is not allowed
16 
17 // Needs floating point extension facility
18 // Cannot be mapped to IRRoundingMode
19 #define M3_BFP_ROUND_PREPARE_SHORT  3
20 
21 #define M3_BFP_ROUND_NEAREST_EVEN   4
22 #define M3_BFP_ROUND_ZERO           5
23 #define M3_BFP_ROUND_POSINF         6
24 #define M3_BFP_ROUND_NEGINF         7
25 
26 
27 /* ---------------------------------------------------------------- */
28 /* BFP rounding mode as it is encoded in bits [29:31] of the FPC    */
29 /* register. Only rounding modes 0..3 are universally supported.    */
30 /* Others require additional hardware facilities.                   */
31 /* ---------------------------------------------------------------- */
32 #define FPC_BFP_ROUND_NEAREST_EVEN  0
33 #define FPC_BFP_ROUND_ZERO          1
34 #define FPC_BFP_ROUND_POSINF        2
35 #define FPC_BFP_ROUND_NEGINF        3
36 
37 // 4,5,6 are not allowed
38 
39 // Needs floating point extension facility
40 // Cannot be mapped to IRRoundingMode
41 #define FPC_BFP_ROUND_PREPARE_SHORT 7
42 
43 
44 #endif /* ROUNDING_H */
45