]> Git Repo - qemu.git/blob - include/exec/helper-gen.h
tcg: Push tcg-runtime routines into exec/helper-*
[qemu.git] / include / exec / helper-gen.h
1 /* Helper file for declaring TCG helper functions.
2    This one expands generation functions for tcg opcodes.  */
3
4 #ifndef HELPER_GEN_H
5 #define HELPER_GEN_H 1
6
7 #include <exec/helper-head.h>
8
9 #define DEF_HELPER_FLAGS_0(name, flags, ret) \
10 static inline void glue(gen_helper_, name)(dh_retvar_decl0(ret)) \
11 { \
12   int sizemask; \
13   sizemask = dh_is_64bit(ret); \
14   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 0, NULL); \
15 }
16
17 #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \
18 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1)) \
19 { \
20   TCGArg args[1]; \
21   int sizemask = 0; \
22   dh_sizemask(ret, 0); \
23   dh_arg(t1, 1); \
24   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 1, args); \
25 }
26
27 #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \
28 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
29     dh_arg_decl(t2, 2)) \
30 { \
31   TCGArg args[2]; \
32   int sizemask = 0; \
33   dh_sizemask(ret, 0); \
34   dh_arg(t1, 1); \
35   dh_arg(t2, 2); \
36   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 2, args); \
37 }
38
39 #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \
40 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
41     dh_arg_decl(t2, 2), dh_arg_decl(t3, 3)) \
42 { \
43   TCGArg args[3]; \
44   int sizemask = 0; \
45   dh_sizemask(ret, 0); \
46   dh_arg(t1, 1); \
47   dh_arg(t2, 2); \
48   dh_arg(t3, 3); \
49   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 3, args); \
50 }
51
52 #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \
53 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) dh_arg_decl(t1, 1), \
54     dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), dh_arg_decl(t4, 4)) \
55 { \
56   TCGArg args[4]; \
57   int sizemask = 0; \
58   dh_sizemask(ret, 0); \
59   dh_arg(t1, 1); \
60   dh_arg(t2, 2); \
61   dh_arg(t3, 3); \
62   dh_arg(t4, 4); \
63   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 4, args); \
64 }
65
66 #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \
67 static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
68     dh_arg_decl(t1, 1),  dh_arg_decl(t2, 2), dh_arg_decl(t3, 3), \
69     dh_arg_decl(t4, 4), dh_arg_decl(t5, 5)) \
70 { \
71   TCGArg args[5]; \
72   int sizemask = 0; \
73   dh_sizemask(ret, 0); \
74   dh_arg(t1, 1); \
75   dh_arg(t2, 2); \
76   dh_arg(t3, 3); \
77   dh_arg(t4, 4); \
78   dh_arg(t5, 5); \
79   tcg_gen_helperN(HELPER(name), flags, sizemask, dh_retvar(ret), 5, args); \
80 }
81
82 #include "helper.h"
83 #include "tcg-runtime.h"
84
85 #undef DEF_HELPER_FLAGS_0
86 #undef DEF_HELPER_FLAGS_1
87 #undef DEF_HELPER_FLAGS_2
88 #undef DEF_HELPER_FLAGS_3
89 #undef DEF_HELPER_FLAGS_4
90 #undef DEF_HELPER_FLAGS_5
91 #undef GEN_HELPER
92
93 #endif /* HELPER_GEN_H */
This page took 0.028827 seconds and 4 git commands to generate.