1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef RISCV_CPU_INTERNALS_H
20#define RISCV_CPU_INTERNALS_H
21
22#include "hw/registerfields.h"
23
24
25FIELD(VDATA, MLEN, 0, 8)
26FIELD(VDATA, VM, 8, 1)
27FIELD(VDATA, LMUL, 9, 2)
28FIELD(VDATA, NF, 11, 4)
29FIELD(VDATA, WD, 11, 1)
30
31
32target_ulong fclass_h(uint64_t frs1);
33target_ulong fclass_s(uint64_t frs1);
34target_ulong fclass_d(uint64_t frs1);
35
36#define SEW8 0
37#define SEW16 1
38#define SEW32 2
39#define SEW64 3
40
41#ifndef CONFIG_USER_ONLY
42extern const VMStateDescription vmstate_riscv_cpu;
43#endif
44
45static inline uint64_t nanbox_s(float32 f)
46{
47 return f | MAKE_64BIT_MASK(32, 32);
48}
49
50static inline float32 check_nanbox_s(uint64_t f)
51{
52 uint64_t mask = MAKE_64BIT_MASK(32, 32);
53
54 if (likely((f & mask) == mask)) {
55 return (uint32_t)f;
56 } else {
57 return 0x7fc00000u;
58 }
59}
60
61#endif
62