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.hender...@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.