[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.
- [PATCH for-8.0 29/29] tcg/i386: Honor 64-bit atomicity in 32-bit mode, (continued)
- [PATCH for-8.0 29/29] tcg/i386: Honor 64-bit atomicity in 32-bit mode, Richard Henderson, 2022/11/18
- [PATCH for-8.0 19/29] tcg: Introduce TCG_OPF_TYPE_MASK, Richard Henderson, 2022/11/18
- [PATCH for-8.0 20/29] tcg: Add INDEX_op_qemu_{ld,st}_i128, Richard Henderson, 2022/11/18
- [PATCH for-8.0 16/29] accel/tcg: Use have_atomic16 in ldst_atomicity.c.inc, Richard Henderson, 2022/11/18
- [PATCH for-8.0 13/29] meson: Detect atomic128 support with optimization, Richard Henderson, 2022/11/18
- [PATCH for-8.0 15/29] include/qemu/int128: Add vector type to Int128Alias, Richard Henderson, 2022/11/18
- [PATCH for-8.0 14/29] tcg/i386: Add have_atomic16, Richard Henderson, 2022/11/18
- [PATCH for-8.0 22/29] tcg/i386: Introduce tcg_out_testi, Richard Henderson, 2022/11/18
- [PATCH for-8.0 23/29] tcg/i386: Use full load/store helpers in user-only mode, Richard Henderson, 2022/11/18
- [PATCH for-8.0 26/29] tcg/i386: Examine MemOp for atomicity and alignment, Richard Henderson, 2022/11/18