diff mbox series

[2/2] tcg: Optimize inline dup_const for MO_64

Message ID 20210119185542.628456-3-richard.henderson@linaro.org
State New
Headers show
Series tcg: Optimize inline dup_const for MO_64 | expand

Commit Message

Richard Henderson Jan. 19, 2021, 6:55 p.m. UTC
Avoid the out-of-line function call for immediate MO_64.
In addition, diagnose all invalid constants at compile-time.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

David Hildenbrand Jan. 19, 2021, 7:25 p.m. UTC | #1
On 19.01.21 19:55, Richard Henderson wrote:
> Avoid the out-of-line function call for immediate MO_64.
> In addition, diagnose all invalid constants at compile-time.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  include/tcg/tcg.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
> index 504c5e9bb0..c5a9d65d5f 100644
> --- a/include/tcg/tcg.h
> +++ b/include/tcg/tcg.h
> @@ -1325,7 +1325,8 @@ uint64_t dup_const(unsigned vece, uint64_t c);
>       ? (  (VECE) == MO_8  ? 0x0101010101010101ull * (uint8_t)(C)   \
>          : (VECE) == MO_16 ? 0x0001000100010001ull * (uint16_t)(C)  \
>          : (VECE) == MO_32 ? 0x0000000100000001ull * (uint32_t)(C)  \
> -        : dup_const(VECE, C))                                      \
> +        : (VECE) == MO_64 ? (uint64_t)(C)                          \
> +        : (qemu_build_not_reached_always(), 0))                    \
>       : dup_const(VECE, C))
>  
>  
> 

Looks good to me!

Reviewed-by: David Hildenbrand <david@redhat.com>
diff mbox series

Patch

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 504c5e9bb0..c5a9d65d5f 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -1325,7 +1325,8 @@  uint64_t dup_const(unsigned vece, uint64_t c);
      ? (  (VECE) == MO_8  ? 0x0101010101010101ull * (uint8_t)(C)   \
         : (VECE) == MO_16 ? 0x0001000100010001ull * (uint16_t)(C)  \
         : (VECE) == MO_32 ? 0x0000000100000001ull * (uint32_t)(C)  \
-        : dup_const(VECE, C))                                      \
+        : (VECE) == MO_64 ? (uint64_t)(C)                          \
+        : (qemu_build_not_reached_always(), 0))                    \
      : dup_const(VECE, C))