]> git.proxmox.com Git - mirror_qemu.git/blame - tcg/tcg-runtime.h
tcg/sparc: Zero extend address argument to ld/st helpers
[mirror_qemu.git] / tcg / tcg-runtime.h
CommitLineData
944eea96
RH
1DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32)
2DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32)
3DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32)
4DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32)
96e132e2 5
944eea96
RH
6DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64)
7DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64)
8DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
9DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
31d66551 10
944eea96
RH
11DEF_HELPER_FLAGS_2(shl_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
12DEF_HELPER_FLAGS_2(shr_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
13DEF_HELPER_FLAGS_2(sar_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64)
96e132e2 14
944eea96
RH
15DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64)
16DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
c482cb11 17
0e28d006
RH
18DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32)
19DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32)
20DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
21DEF_HELPER_FLAGS_2(ctz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64)
086920c2
RH
22DEF_HELPER_FLAGS_1(clrsb_i32, TCG_CALL_NO_RWG_SE, i32, i32)
23DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64)
a768e4e9
RH
24DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32)
25DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64)
0e28d006 26
df79b996
RH
27DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env)
28
c482cb11
RH
29#ifdef CONFIG_SOFTMMU
30
31DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG,
32 i32, env, tl, i32, i32, i32)
33DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG,
34 i32, env, tl, i32, i32, i32)
c482cb11
RH
35DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le, TCG_CALL_NO_WG,
36 i32, env, tl, i32, i32, i32)
df79b996
RH
37DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG,
38 i32, env, tl, i32, i32, i32)
c482cb11
RH
39DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG,
40 i32, env, tl, i32, i32, i32)
df79b996
RH
41#ifdef CONFIG_ATOMIC64
42DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG,
43 i64, env, tl, i64, i64, i32)
c482cb11
RH
44DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG,
45 i64, env, tl, i64, i64, i32)
df79b996 46#endif
c482cb11 47
df79b996 48#ifdef CONFIG_ATOMIC64
c482cb11
RH
49#define GEN_ATOMIC_HELPERS(NAME) \
50 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \
51 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
52 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \
53 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
54 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \
55 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
56 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \
57 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
58 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \
59 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
60 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \
61 TCG_CALL_NO_WG, i64, env, tl, i64, i32) \
62 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \
63 TCG_CALL_NO_WG, i64, env, tl, i64, i32)
df79b996
RH
64#else
65#define GEN_ATOMIC_HELPERS(NAME) \
66 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \
67 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
68 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \
69 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
70 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \
71 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
72 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \
73 TCG_CALL_NO_WG, i32, env, tl, i32, i32) \
74 DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \
75 TCG_CALL_NO_WG, i32, env, tl, i32, i32)
76#endif /* CONFIG_ATOMIC64 */
c482cb11
RH
77
78#else
79
80DEF_HELPER_FLAGS_4(atomic_cmpxchgb, TCG_CALL_NO_WG, i32, env, tl, i32, i32)
81DEF_HELPER_FLAGS_4(atomic_cmpxchgw_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32)
c482cb11 82DEF_HELPER_FLAGS_4(atomic_cmpxchgw_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32)
df79b996 83DEF_HELPER_FLAGS_4(atomic_cmpxchgl_be, TCG_CALL_NO_WG, i32, env, tl, i32, i32)
c482cb11 84DEF_HELPER_FLAGS_4(atomic_cmpxchgl_le, TCG_CALL_NO_WG, i32, env, tl, i32, i32)
df79b996
RH
85#ifdef CONFIG_ATOMIC64
86DEF_HELPER_FLAGS_4(atomic_cmpxchgq_be, TCG_CALL_NO_WG, i64, env, tl, i64, i64)
c482cb11 87DEF_HELPER_FLAGS_4(atomic_cmpxchgq_le, TCG_CALL_NO_WG, i64, env, tl, i64, i64)
df79b996 88#endif
c482cb11 89
df79b996 90#ifdef CONFIG_ATOMIC64
c482cb11
RH
91#define GEN_ATOMIC_HELPERS(NAME) \
92 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \
93 TCG_CALL_NO_WG, i32, env, tl, i32) \
94 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \
95 TCG_CALL_NO_WG, i32, env, tl, i32) \
96 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \
97 TCG_CALL_NO_WG, i32, env, tl, i32) \
98 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \
99 TCG_CALL_NO_WG, i32, env, tl, i32) \
100 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \
101 TCG_CALL_NO_WG, i32, env, tl, i32) \
102 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_le), \
103 TCG_CALL_NO_WG, i64, env, tl, i64) \
104 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), q_be), \
105 TCG_CALL_NO_WG, i64, env, tl, i64)
df79b996
RH
106#else
107#define GEN_ATOMIC_HELPERS(NAME) \
108 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), b), \
109 TCG_CALL_NO_WG, i32, env, tl, i32) \
110 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_le), \
111 TCG_CALL_NO_WG, i32, env, tl, i32) \
112 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), w_be), \
113 TCG_CALL_NO_WG, i32, env, tl, i32) \
114 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_le), \
115 TCG_CALL_NO_WG, i32, env, tl, i32) \
116 DEF_HELPER_FLAGS_3(glue(glue(atomic_, NAME), l_be), \
117 TCG_CALL_NO_WG, i32, env, tl, i32)
118#endif /* CONFIG_ATOMIC64 */
c482cb11
RH
119
120#endif /* CONFIG_SOFTMMU */
121
122GEN_ATOMIC_HELPERS(fetch_add)
123GEN_ATOMIC_HELPERS(fetch_and)
124GEN_ATOMIC_HELPERS(fetch_or)
125GEN_ATOMIC_HELPERS(fetch_xor)
126
127GEN_ATOMIC_HELPERS(add_fetch)
128GEN_ATOMIC_HELPERS(and_fetch)
129GEN_ATOMIC_HELPERS(or_fetch)
130GEN_ATOMIC_HELPERS(xor_fetch)
131
132GEN_ATOMIC_HELPERS(xchg)
133
134#undef GEN_ATOMIC_HELPERS