[PATCH] tcg: Prohibit incomplete extr[lh]_i64_i32() implementation

Philippe Mathieu-Daudé posted 1 patch 8 months, 4 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230822165101.72695-1-philmd@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>
include/tcg/tcg.h | 3 +++
1 file changed, 3 insertions(+)
[PATCH] tcg: Prohibit incomplete extr[lh]_i64_i32() implementation
Posted by Philippe Mathieu-Daudé 8 months, 4 weeks ago
extrl_i64_i32() and extrh_i64_i32() work in pair. Backends
can not implement one without the other. Enforce that
assumption.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/tcg/tcg.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 0875971719..a6f51130aa 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -172,6 +172,9 @@ typedef uint64_t TCGRegSet;
 #define TCG_TARGET_HAS_v256             0
 #endif
 
+QEMU_BUILD_BUG_MSG(TCG_TARGET_HAS_extrl_i64_i32 != TCG_TARGET_HAS_extrh_i64_i32,
+                   "Both extrl_i64_i32()/extrh_i64_i32() must exist");
+
 typedef enum TCGOpcode {
 #define DEF(name, oargs, iargs, cargs, flags) INDEX_op_ ## name,
 #include "tcg/tcg-opc.h"
-- 
2.41.0


Re: [PATCH] tcg: Prohibit incomplete extr[lh]_i64_i32() implementation
Posted by Richard Henderson 8 months, 4 weeks ago
On 8/22/23 09:51, Philippe Mathieu-Daudé wrote:
> extrl_i64_i32() and extrh_i64_i32() work in pair. Backends
> can not implement one without the other. Enforce that
> assumption.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   include/tcg/tcg.h | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
> index 0875971719..a6f51130aa 100644
> --- a/include/tcg/tcg.h
> +++ b/include/tcg/tcg.h
> @@ -172,6 +172,9 @@ typedef uint64_t TCGRegSet;
>   #define TCG_TARGET_HAS_v256             0
>   #endif
>   
> +QEMU_BUILD_BUG_MSG(TCG_TARGET_HAS_extrl_i64_i32 != TCG_TARGET_HAS_extrh_i64_i32,
> +                   "Both extrl_i64_i32()/extrh_i64_i32() must exist");

Just rename them so they're the same symbol.


r~