xref: /qemu/include/tcg/tcg-temp-internal.h (revision 47f7313d817a895fcbcedebc11f757cbdfecea30)
1*47f7313dSRichard Henderson /*
2*47f7313dSRichard Henderson  * TCG internals related to TCG temp allocation
3*47f7313dSRichard Henderson  *
4*47f7313dSRichard Henderson  * Copyright (c) 2008 Fabrice Bellard
5*47f7313dSRichard Henderson  *
6*47f7313dSRichard Henderson  * Permission is hereby granted, free of charge, to any person obtaining a copy
7*47f7313dSRichard Henderson  * of this software and associated documentation files (the "Software"), to deal
8*47f7313dSRichard Henderson  * in the Software without restriction, including without limitation the rights
9*47f7313dSRichard Henderson  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10*47f7313dSRichard Henderson  * copies of the Software, and to permit persons to whom the Software is
11*47f7313dSRichard Henderson  * furnished to do so, subject to the following conditions:
12*47f7313dSRichard Henderson  *
13*47f7313dSRichard Henderson  * The above copyright notice and this permission notice shall be included in
14*47f7313dSRichard Henderson  * all copies or substantial portions of the Software.
15*47f7313dSRichard Henderson  *
16*47f7313dSRichard Henderson  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17*47f7313dSRichard Henderson  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*47f7313dSRichard Henderson  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19*47f7313dSRichard Henderson  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20*47f7313dSRichard Henderson  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21*47f7313dSRichard Henderson  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22*47f7313dSRichard Henderson  * THE SOFTWARE.
23*47f7313dSRichard Henderson  */
24*47f7313dSRichard Henderson 
25*47f7313dSRichard Henderson #ifndef TCG_TEMP_INTERNAL_H
26*47f7313dSRichard Henderson #define TCG_TEMP_INTERNAL_H
27*47f7313dSRichard Henderson 
28*47f7313dSRichard Henderson /*
29*47f7313dSRichard Henderson  * Allocation and freeing of EBB temps is reserved to TCG internals
30*47f7313dSRichard Henderson  */
31*47f7313dSRichard Henderson 
32*47f7313dSRichard Henderson void tcg_temp_free_internal(TCGTemp *);
33*47f7313dSRichard Henderson 
34*47f7313dSRichard Henderson static inline void tcg_temp_free_i32(TCGv_i32 arg)
35*47f7313dSRichard Henderson {
36*47f7313dSRichard Henderson     tcg_temp_free_internal(tcgv_i32_temp(arg));
37*47f7313dSRichard Henderson }
38*47f7313dSRichard Henderson 
39*47f7313dSRichard Henderson static inline void tcg_temp_free_i64(TCGv_i64 arg)
40*47f7313dSRichard Henderson {
41*47f7313dSRichard Henderson     tcg_temp_free_internal(tcgv_i64_temp(arg));
42*47f7313dSRichard Henderson }
43*47f7313dSRichard Henderson 
44*47f7313dSRichard Henderson static inline void tcg_temp_free_i128(TCGv_i128 arg)
45*47f7313dSRichard Henderson {
46*47f7313dSRichard Henderson     tcg_temp_free_internal(tcgv_i128_temp(arg));
47*47f7313dSRichard Henderson }
48*47f7313dSRichard Henderson 
49*47f7313dSRichard Henderson static inline void tcg_temp_free_ptr(TCGv_ptr arg)
50*47f7313dSRichard Henderson {
51*47f7313dSRichard Henderson     tcg_temp_free_internal(tcgv_ptr_temp(arg));
52*47f7313dSRichard Henderson }
53*47f7313dSRichard Henderson 
54*47f7313dSRichard Henderson static inline void tcg_temp_free_vec(TCGv_vec arg)
55*47f7313dSRichard Henderson {
56*47f7313dSRichard Henderson     tcg_temp_free_internal(tcgv_vec_temp(arg));
57*47f7313dSRichard Henderson }
58*47f7313dSRichard Henderson 
59*47f7313dSRichard Henderson static inline TCGv_i32 tcg_temp_ebb_new_i32(void)
60*47f7313dSRichard Henderson {
61*47f7313dSRichard Henderson     TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I32, TEMP_EBB);
62*47f7313dSRichard Henderson     return temp_tcgv_i32(t);
63*47f7313dSRichard Henderson }
64*47f7313dSRichard Henderson 
65*47f7313dSRichard Henderson static inline TCGv_i64 tcg_temp_ebb_new_i64(void)
66*47f7313dSRichard Henderson {
67*47f7313dSRichard Henderson     TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB);
68*47f7313dSRichard Henderson     return temp_tcgv_i64(t);
69*47f7313dSRichard Henderson }
70*47f7313dSRichard Henderson 
71*47f7313dSRichard Henderson static inline TCGv_i128 tcg_temp_ebb_new_i128(void)
72*47f7313dSRichard Henderson {
73*47f7313dSRichard Henderson     TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_I128, TEMP_EBB);
74*47f7313dSRichard Henderson     return temp_tcgv_i128(t);
75*47f7313dSRichard Henderson }
76*47f7313dSRichard Henderson 
77*47f7313dSRichard Henderson static inline TCGv_ptr tcg_temp_ebb_new_ptr(void)
78*47f7313dSRichard Henderson {
79*47f7313dSRichard Henderson     TCGTemp *t = tcg_temp_new_internal(TCG_TYPE_PTR, TEMP_EBB);
80*47f7313dSRichard Henderson     return temp_tcgv_ptr(t);
81*47f7313dSRichard Henderson }
82*47f7313dSRichard Henderson 
83*47f7313dSRichard Henderson #endif /* TCG_TEMP_FREE_H */
84