Patchwork [v2] tcg: Add TCGV_IS_UNUSED_*

login
register
mail settings
Submitter Richard Henderson
Date Dec. 7, 2012, 9:07 p.m.
Message ID <1354914437-15967-1-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/204607/
State New
Headers show

Comments

Richard Henderson - Dec. 7, 2012, 9:07 p.m.
Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg-op.h | 2 ++
 tcg/tcg.h    | 3 +++
 2 files changed, 5 insertions(+)

Changes since v1:
  * Add tl-sized TCGV_IS_UNUSED to tcg-op.h.


r~
Richard Henderson - Dec. 13, 2012, 9:04 p.m.
Ping?


r~

On 12/07/2012 01:07 PM, Richard Henderson wrote:
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg-op.h | 2 ++
>  tcg/tcg.h    | 3 +++
>  2 files changed, 5 insertions(+)
> 
> Changes since v1:
>   * Add tl-sized TCGV_IS_UNUSED to tcg-op.h.
> 
> 
> r~
> 
> 
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index 0b3cb0b..91c9d80 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2329,6 +2329,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I32(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I32(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b)
>  #else
>  #define TCGv TCGv_i64
> @@ -2340,6 +2341,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I64(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I64(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b)
>  #endif
>  
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 9481e35..90406fc 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -270,6 +270,9 @@ typedef int TCGv_i64;
>  #define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1)
>  #define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1)
>  
> +#define TCGV_IS_UNUSED_I32(x) (GET_TCGV_I32(x) == -1)
> +#define TCGV_IS_UNUSED_I64(x) (GET_TCGV_I64(x) == -1)
> +
>  /* call flags */
>  /* Helper does not read globals (either directly or through an exception). It
>     implies TCG_CALL_NO_WRITE_GLOBALS. */
>
Andreas Färber - Dec. 14, 2012, 12:15 a.m.
Am 07.12.2012 22:07, schrieb Richard Henderson:
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Signed-off-by: Richard Henderson <rth@twiddle.net>

Reviewed-by: Andreas Färber <afaerber@suse.de>

Looks fine to me. The only remark I have is that for a use case of mine
(writing a new target) I found it helpful to distinguish between tl and
i32/i64, which requires static inline functions rather than macros for
type safety - but since TCGV_UNUSED() is a macro, too, such changes
would be a follow-up.

Andreas

> ---
>  tcg/tcg-op.h | 2 ++
>  tcg/tcg.h    | 3 +++
>  2 files changed, 5 insertions(+)
> 
> Changes since v1:
>   * Add tl-sized TCGV_IS_UNUSED to tcg-op.h.
> 
> 
> r~
> 
> 
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index 0b3cb0b..91c9d80 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2329,6 +2329,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I32(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I32(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b)
>  #else
>  #define TCGv TCGv_i64
> @@ -2340,6 +2341,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I64(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I64(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b)
>  #endif
>  
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 9481e35..90406fc 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -270,6 +270,9 @@ typedef int TCGv_i64;
>  #define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1)
>  #define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1)
>  
> +#define TCGV_IS_UNUSED_I32(x) (GET_TCGV_I32(x) == -1)
> +#define TCGV_IS_UNUSED_I64(x) (GET_TCGV_I64(x) == -1)
> +
>  /* call flags */
>  /* Helper does not read globals (either directly or through an exception). It
>     implies TCG_CALL_NO_WRITE_GLOBALS. */
>
Richard Henderson - Dec. 28, 2012, 10 p.m.
Ping 2.  There is a Reviewed-by...


r~

On 2012-12-07 13:07, Richard Henderson wrote:
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg-op.h | 2 ++
>  tcg/tcg.h    | 3 +++
>  2 files changed, 5 insertions(+)
> 
> Changes since v1:
>   * Add tl-sized TCGV_IS_UNUSED to tcg-op.h.
> 
> 
> r~
> 
> 
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index 0b3cb0b..91c9d80 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2329,6 +2329,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I32(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I32(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b)
>  #else
>  #define TCGv TCGv_i64
> @@ -2340,6 +2341,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I64(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I64(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b)
>  #endif
>  
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 9481e35..90406fc 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -270,6 +270,9 @@ typedef int TCGv_i64;
>  #define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1)
>  #define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1)
>  
> +#define TCGV_IS_UNUSED_I32(x) (GET_TCGV_I32(x) == -1)
> +#define TCGV_IS_UNUSED_I64(x) (GET_TCGV_I64(x) == -1)
> +
>  /* call flags */
>  /* Helper does not read globals (either directly or through an exception). It
>     implies TCG_CALL_NO_WRITE_GLOBALS. */
>
Blue Swirl - Dec. 29, 2012, 3:49 p.m.
Thanks, applied.

On Fri, Dec 7, 2012 at 9:07 PM, Richard Henderson <rth@twiddle.net> wrote:
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg-op.h | 2 ++
>  tcg/tcg.h    | 3 +++
>  2 files changed, 5 insertions(+)
>
> Changes since v1:
>   * Add tl-sized TCGV_IS_UNUSED to tcg-op.h.
>
>
> r~
>
>
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index 0b3cb0b..91c9d80 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2329,6 +2329,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I32(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I32(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b)
>  #else
>  #define TCGv TCGv_i64
> @@ -2340,6 +2341,7 @@ static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
>  #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64
>  #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64
>  #define TCGV_UNUSED(x) TCGV_UNUSED_I64(x)
> +#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I64(x)
>  #define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b)
>  #endif
>
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 9481e35..90406fc 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -270,6 +270,9 @@ typedef int TCGv_i64;
>  #define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1)
>  #define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1)
>
> +#define TCGV_IS_UNUSED_I32(x) (GET_TCGV_I32(x) == -1)
> +#define TCGV_IS_UNUSED_I64(x) (GET_TCGV_I64(x) == -1)
> +
>  /* call flags */
>  /* Helper does not read globals (either directly or through an exception). It
>     implies TCG_CALL_NO_WRITE_GLOBALS. */
> --
> 1.7.11.7
>
>

Patch

diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index 0b3cb0b..91c9d80 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -2329,6 +2329,7 @@  static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
 #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32
 #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32
 #define TCGV_UNUSED(x) TCGV_UNUSED_I32(x)
+#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I32(x)
 #define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b)
 #else
 #define TCGv TCGv_i64
@@ -2340,6 +2341,7 @@  static inline void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,
 #define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64
 #define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64
 #define TCGV_UNUSED(x) TCGV_UNUSED_I64(x)
+#define TCGV_IS_UNUSED(x) TCGV_IS_UNUSED_I64(x)
 #define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b)
 #endif
 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 9481e35..90406fc 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -270,6 +270,9 @@  typedef int TCGv_i64;
 #define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1)
 #define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1)
 
+#define TCGV_IS_UNUSED_I32(x) (GET_TCGV_I32(x) == -1)
+#define TCGV_IS_UNUSED_I64(x) (GET_TCGV_I64(x) == -1)
+
 /* call flags */
 /* Helper does not read globals (either directly or through an exception). It
    implies TCG_CALL_NO_WRITE_GLOBALS. */