qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-8.0 15/29] include/qemu/int128: Add vector type to Int128


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH for-8.0 15/29] include/qemu/int128: Add vector type to Int128Alias
Date: Tue, 22 Nov 2022 19:31:08 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.0

On 22/11/22 19:21, Philippe Mathieu-Daudé wrote:
On 18/11/22 10:47, Richard Henderson wrote:
Adding a vector type will make it easier to handle i386
have_atomic16 via AVX.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
  include/qemu/int128.h | 10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/qemu/int128.h b/include/qemu/int128.h
index f62a46b48c..f29f90e6f4 100644
--- a/include/qemu/int128.h
+++ b/include/qemu/int128.h
@@ -479,16 +479,16 @@ static inline void bswap128s(Int128 *s)
  /*
   * When compiler supports a 128-bit type, define a combination of
   * a possible structure and the native types.  Ease parameter passing
- * via use of the transparent union extension.
+ * via use of the transparent union extension.  Provide a vector type
+ * for use in atomicity on some hosts.
   */
-#ifdef CONFIG_INT128
  typedef union {
      Int128 s;
+    uint64_t v __attribute__((vector_size(16)));
+#ifdef CONFIG_INT128
      __int128_t i;
      __uint128_t u;
-} Int128Alias __attribute__((transparent_union));
-#else
-typedef Int128 Int128Alias;
  #endif /* CONFIG_INT128 */
+} Int128Alias __attribute__((transparent_union));
  #endif /* INT128_H */

This triggers a warning with GCC:

Ah no, looking closer, even configured as ''--cc=gcc-12 --host-cc=gcc-12
--cxx=/bin/false', Clang got selected for ObjC, and this warning comes
from it:

Compiling Objective-C object libcommon.fa.p/ui_cocoa.m.o
In file included from ../../ui/cocoa.m:36:
In file included from include/sysemu/sysemu.h:5:
In file included from include/qemu/timer.h:4:
In file included from include/qemu/bitops.h:16:
In file included from include/qemu/host-utils.h:35:

include/qemu/int128.h:487:14: warning: alignment of field 'v' (128 bits) does not match the alignment of the first field in transparent union; transparent_union attribute ignored [-Wignored-attributes]
     uint64_t v __attribute__((vector_size(16)));
              ^
include/qemu/int128.h:486:12: note: alignment of first field is 64 bits
     Int128 s;
            ^
Meson:

Project version: 7.1.91
C compiler for the host machine: gcc-12 (gcc 12.2.0 "gcc-12 (Homebrew GCC 12.2.0) 12.2.0")
C linker for the host machine: gcc-12 ld64 819.6
Host machine cpu family: aarch64
Host machine cpu: arm64

Objective-C compiler for the host machine: clang (clang 14.0.0)
Objective-C linker for the host machine: clang ld64 819.6

Regards,

Phil.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]