d70b64a536f33828620e7f852354a46c207a23bc
[platform/upstream/nasm.git] / wsaa.h
1 #ifndef NASM_WSAA_H
2 #define NASM_WSAA_H
3
4 #include "compiler.h"
5 #include "nasmlib.h"
6
7 #ifdef WORDS_LITTEENDIAN
8
9 #define WSAACHAR(s,v)                           \
10     do {                                        \
11         uint8_t _wsb_v = (v);                   \
12         saa_wbytes(s, &_wsb_v, 1);              \
13     } while (0)
14
15 #define WSAASHORT(s,v)                          \
16     do {                                        \
17         uint16_t _wss_v = (v);                  \
18         saa_wbytes(s, &_wss_v, 2);              \
19     } while (0)
20
21 #define WSAALONG(s,v)                           \
22     do {                                        \
23         uint32_t _wsl_v = (v);                  \
24         saa_wbytes(s, &_wsl_v, 4);              \
25     } while (0)
26
27 #define WSAADLONG(s,v)                          \
28     do {                                        \
29         uint64_t _wsq_v = (v);                  \
30         saa_wbytes(s, &_wsq_v, 8);              \
31     } while (0)
32
33 #else /* !X86_MEMORY */
34
35 #define WSAACHAR(s,v)                           \
36     do {                                        \
37         uint8_t _wsb_v = (v);                   \
38         saa_wbytes(s, &_wsb_v, 1);              \
39     } while (0)
40
41 #define WSAASHORT(s,v)                          \
42     do {                                        \
43         uint16_t _wss_v = (v);                  \
44         uint8_t  _wss_p[2];                     \
45         _wss_p[0] = _wss_v;                     \
46         _wss_p[1] = _wss_v >> 8;                \
47         saa_wbytes(s, _wss_p, 2);               \
48     } while (0)
49
50 #define WSAALONG(s,v)                           \
51     do {                                        \
52         uint32_t _wsl_v = (v);                  \
53         uint8_t  _wsl_p[4];                     \
54         _wsl_p[0] = _wsl_v;                     \
55         _wsl_p[1] = _wsl_v >> 8;                \
56         _wsl_p[2] = _wsl_v >> 16;               \
57         _wsl_p[3] = _wsl_v >> 24;               \
58         saa_wbytes(s, _wsl_p, 4);               \
59     } while (0)
60
61 #define WSAADLONG(s,v)                          \
62     do {                                        \
63         uint64_t _wsq_v = (v);                  \
64         uint8_t  _wsq_p[8];                     \
65         _wsq_p[0] = _wsq_v;                     \
66         _wsq_p[1] = _wsq_v >> 8;                \
67         _wsq_p[2] = _wsq_v >> 16;               \
68         _wsq_p[3] = _wsq_v >> 24;               \
69         _wsq_p[4] = _wsq_v >> 32;               \
70         _wsq_p[5] = _wsq_v >> 40;               \
71         _wsq_p[6] = _wsq_v >> 48;               \
72         _wsq_p[7] = _wsq_v >> 56;               \
73         saa_wbytes(s, _wsq_p, 8);               \
74     } while (0)
75
76 #endif
77
78 #endif /* NASM_WSAA_H */