| #ifndef ROUNDING_H |
| #define ROUNDING_H |
| |
| /* Macros, so the values can be used together with opcodes.h */ |
| |
| /* ---------------------------------------------------------------- */ |
| /* BFP rounding mode as it is encoded in the m3 field of certain */ |
| /* instructions (e.g. CFEBR) */ |
| /* ---------------------------------------------------------------- */ |
| #define M3_BFP_ROUND_PER_FPC 0 |
| |
| // Cannot be mapped to IRRoundingMode |
| #define M3_BFP_ROUND_NEAREST_AWAY 1 |
| |
| // 2 is not allowed |
| |
| // Needs floating point extension facility |
| // Cannot be mapped to IRRoundingMode |
| #define M3_BFP_ROUND_PREPARE_SHORT 3 |
| |
| #define M3_BFP_ROUND_NEAREST_EVEN 4 |
| #define M3_BFP_ROUND_ZERO 5 |
| #define M3_BFP_ROUND_POSINF 6 |
| #define M3_BFP_ROUND_NEGINF 7 |
| |
| |
| /* ---------------------------------------------------------------- */ |
| /* BFP rounding mode as it is encoded in bits [29:31] of the FPC */ |
| /* register. Only rounding modes 0..3 are universally supported. */ |
| /* Others require additional hardware facilities. */ |
| /* ---------------------------------------------------------------- */ |
| #define FPC_BFP_ROUND_NEAREST_EVEN 0 |
| #define FPC_BFP_ROUND_ZERO 1 |
| #define FPC_BFP_ROUND_POSINF 2 |
| #define FPC_BFP_ROUND_NEGINF 3 |
| |
| // 4,5,6 are not allowed |
| |
| // Needs floating point extension facility |
| // Cannot be mapped to IRRoundingMode |
| #define FPC_BFP_ROUND_PREPARE_SHORT 7 |
| |
| |
| #endif /* ROUNDING_H */ |