From: Richard Henderson <richard.henderson@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, git@xen0n.name, gaosong@loongson.cn,
philmd@linaro.org, qemu-arm@nongnu.org, qemu-riscv@nongnu.org,
qemu-s390x@nongnu.org
Subject: Re: [PATCH v4 14/57] tcg/i386: Add have_atomic16
Date: Mon, 8 May 2023 14:41:53 +0100 [thread overview]
Message-ID: <d42d16ec-f223-9f4f-1150-10fdf9fe9b3c@linaro.org> (raw)
In-Reply-To: <CAFEAcA_BMbNPYEoHacYk5ETJp6N9b8NKQvnZvfgrsDhH6yDOdw@mail.gmail.com>
On 5/5/23 11:34, Peter Maydell wrote:
> On Wed, 3 May 2023 at 08:10, Richard Henderson
> <richard.henderson@linaro.org> wrote:
>>
>> Notice when Intel or AMD have guaranteed that vmovdqa is atomic.
>> The new variable will also be used in generated code.
>>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>> include/qemu/cpuid.h | 18 ++++++++++++++++++
>> tcg/i386/tcg-target.h | 1 +
>> tcg/i386/tcg-target.c.inc | 27 +++++++++++++++++++++++++++
>> 3 files changed, 46 insertions(+)
>>
>> diff --git a/include/qemu/cpuid.h b/include/qemu/cpuid.h
>> index 1451e8ef2f..35325f1995 100644
>> --- a/include/qemu/cpuid.h
>> +++ b/include/qemu/cpuid.h
>> @@ -71,6 +71,24 @@
>> #define bit_LZCNT (1 << 5)
>> #endif
>>
>> +/*
>> + * Signatures for different CPU implementations as returned from Leaf 0.
>> + */
>> +
>> +#ifndef signature_INTEL_ecx
>> +/* "Genu" "ineI" "ntel" */
>> +#define signature_INTEL_ebx 0x756e6547
>> +#define signature_INTEL_edx 0x49656e69
>> +#define signature_INTEL_ecx 0x6c65746e
>> +#endif
>> +
>> +#ifndef signature_AMD_ecx
>> +/* "Auth" "enti" "cAMD" */
>> +#define signature_AMD_ebx 0x68747541
>> +#define signature_AMD_edx 0x69746e65
>> +#define signature_AMD_ecx 0x444d4163
>> +#endif
>
>> @@ -4024,6 +4025,32 @@ static void tcg_target_init(TCGContext *s)
>> have_avx512dq = (b7 & bit_AVX512DQ) != 0;
>> have_avx512vbmi2 = (c7 & bit_AVX512VBMI2) != 0;
>> }
>> +
>> + /*
>> + * The Intel SDM has added:
>> + * Processors that enumerate support for Intel® AVX
>> + * (by setting the feature flag CPUID.01H:ECX.AVX[bit 28])
>> + * guarantee that the 16-byte memory operations performed
>> + * by the following instructions will always be carried
>> + * out atomically:
>> + * - MOVAPD, MOVAPS, and MOVDQA.
>> + * - VMOVAPD, VMOVAPS, and VMOVDQA when encoded with VEX.128.
>> + * - VMOVAPD, VMOVAPS, VMOVDQA32, and VMOVDQA64 when encoded
>> + * with EVEX.128 and k0 (masking disabled).
>> + * Note that these instructions require the linear addresses
>> + * of their memory operands to be 16-byte aligned.
>> + *
>> + * AMD has provided an even stronger guarantee that processors
>> + * with AVX provide 16-byte atomicity for all cachable,
>> + * naturally aligned single loads and stores, e.g. MOVDQU.
>> + *
>> + * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688
>> + */
>> + if (have_avx1) {
>> + __cpuid(0, a, b, c, d);
>> + have_atomic16 = (c == signature_INTEL_ecx ||
>> + c == signature_AMD_ecx);
>> + }
>
> If the signature is 3 words why are we only checking one here ?
Because one is sufficient. I don't know why the signature is 3 words and not 1.
r~
next prev parent reply other threads:[~2023-05-08 13:42 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-03 7:05 [PATCH v4 00/57] tcg: Improve atomicity support Richard Henderson
2023-05-03 7:06 ` [PATCH v4 01/57] include/exec/memop: Add bits describing atomicity Richard Henderson
2023-05-04 14:49 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 02/57] accel/tcg: Add cpu_in_serial_context Richard Henderson
2023-05-03 7:06 ` [PATCH v4 03/57] accel/tcg: Introduce tlb_read_idx Richard Henderson
2023-05-04 15:02 ` Peter Maydell
2023-05-05 18:57 ` Richard Henderson
2023-05-07 10:09 ` Peter Maydell
2023-05-08 10:02 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 04/57] accel/tcg: Reorg system mode load helpers Richard Henderson
2023-05-04 15:39 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 05/57] accel/tcg: Reorg system mode store helpers Richard Henderson
2023-05-04 15:44 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 06/57] accel/tcg: Honor atomicity of loads Richard Henderson
2023-05-04 17:17 ` Peter Maydell
2023-05-05 20:19 ` Richard Henderson
2023-05-09 12:04 ` Peter Maydell
2023-05-09 14:27 ` Richard Henderson
2023-05-09 14:33 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 07/57] accel/tcg: Honor atomicity of stores Richard Henderson
2023-05-05 9:28 ` Peter Maydell
2023-05-08 10:11 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 08/57] target/loongarch: Do not include tcg-ldst.h Richard Henderson
2023-05-05 9:29 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 09/57] tcg: Unify helper_{be,le}_{ld,st}* Richard Henderson
2023-05-05 9:36 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 10/57] accel/tcg: Implement helper_{ld, st}*_mmu for user-only Richard Henderson
2023-05-05 9:43 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 11/57] tcg/tci: Use helper_{ld,st}*_mmu " Richard Henderson
2023-05-05 9:44 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 12/57] tcg: Add 128-bit guest memory primitives Richard Henderson
2023-05-05 10:04 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 13/57] meson: Detect atomic128 support with optimization Richard Henderson
2023-05-05 10:29 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 14/57] tcg/i386: Add have_atomic16 Richard Henderson
2023-05-05 10:34 ` Peter Maydell
2023-05-08 13:41 ` Richard Henderson [this message]
2023-05-03 7:06 ` [PATCH v4 15/57] accel/tcg: Use have_atomic16 in ldst_atomicity.c.inc Richard Henderson
2023-05-05 10:37 ` Peter Maydell
2023-05-08 13:48 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 16/57] accel/tcg: Add aarch64 specific support in ldst_atomicity Richard Henderson
2023-05-03 7:06 ` [PATCH v4 17/57] tcg/aarch64: Detect have_lse, have_lse2 for linux Richard Henderson
2023-05-05 10:41 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 18/57] tcg/aarch64: Detect have_lse, have_lse2 for darwin Richard Henderson
2023-05-05 10:43 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 19/57] accel/tcg: Add have_lse2 support in ldst_atomicity Richard Henderson
2023-05-03 7:06 ` [PATCH v4 20/57] tcg: Introduce TCG_OPF_TYPE_MASK Richard Henderson
2023-05-05 10:45 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 21/57] tcg/i386: Use full load/store helpers in user-only mode Richard Henderson
2023-05-05 12:01 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 22/57] tcg/aarch64: " Richard Henderson
2023-05-05 12:06 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 23/57] tcg/ppc: " Richard Henderson
2023-05-05 12:07 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 24/57] tcg/loongarch64: " Richard Henderson
2023-05-05 12:07 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 25/57] tcg/riscv: " Richard Henderson
2023-05-05 12:07 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 26/57] tcg/arm: Adjust constraints on qemu_ld/st Richard Henderson
2023-05-05 12:14 ` Peter Maydell
2023-05-08 15:13 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 27/57] tcg/arm: Use full load/store helpers in user-only mode Richard Henderson
2023-05-05 12:15 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 28/57] tcg/mips: " Richard Henderson
2023-05-05 12:15 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 29/57] tcg/s390x: " Richard Henderson
2023-05-05 12:16 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 30/57] tcg/sparc64: Allocate %g2 as a third temporary Richard Henderson
2023-05-05 12:19 ` Peter Maydell
2023-05-08 15:17 ` Richard Henderson
2023-05-09 9:24 ` Peter Maydell
2023-05-09 14:34 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 31/57] tcg/sparc64: Rename tcg_out_movi_imm13 to tcg_out_movi_s13 Richard Henderson
2023-05-05 12:20 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 32/57] tcg/sparc64: Rename tcg_out_movi_imm32 to tcg_out_movi_u32 Richard Henderson
2023-05-05 12:22 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 33/57] tcg/sparc64: Split out tcg_out_movi_s32 Richard Henderson
2023-05-05 12:23 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 34/57] tcg/sparc64: Use standard slow path for softmmu Richard Henderson
2023-05-05 12:26 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 35/57] accel/tcg: Remove helper_unaligned_{ld,st} Richard Henderson
2023-05-05 12:27 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 36/57] tcg/loongarch64: Assert the host supports unaligned accesses Richard Henderson
2023-05-05 12:30 ` Peter Maydell
2023-05-05 13:24 ` WANG Xuerui
2023-05-06 2:03 ` Song Gao
2023-05-03 7:06 ` [PATCH v4 37/57] tcg/loongarch64: Support softmmu " Richard Henderson
2023-05-05 12:35 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 38/57] tcg/riscv: " Richard Henderson
2023-05-05 10:35 ` LIU Zhiwei
2023-05-03 7:06 ` [PATCH v4 39/57] tcg: Introduce tcg_target_has_memory_bswap Richard Henderson
2023-05-05 12:41 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 40/57] tcg: Add INDEX_op_qemu_{ld,st}_i128 Richard Henderson
2023-05-05 12:45 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 41/57] tcg: Support TCG_TYPE_I128 in tcg_out_{ld, st}_helper_{args, ret} Richard Henderson
2023-05-05 12:53 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 42/57] tcg: Introduce atom_and_align_for_opc Richard Henderson
2023-05-05 13:03 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 43/57] tcg/i386: Use atom_and_align_for_opc Richard Henderson
2023-05-05 13:14 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 44/57] tcg/aarch64: " Richard Henderson
2023-05-05 13:15 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 45/57] tcg/arm: " Richard Henderson
2023-05-05 13:15 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 46/57] tcg/loongarch64: " Richard Henderson
2023-05-05 13:16 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 47/57] tcg/mips: " Richard Henderson
2023-05-05 13:17 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 48/57] tcg/ppc: " Richard Henderson
2023-05-05 13:18 ` Peter Maydell
2023-05-08 17:32 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 49/57] tcg/riscv: " Richard Henderson
2023-05-05 13:19 ` Peter Maydell
2023-05-08 17:33 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 50/57] tcg/s390x: " Richard Henderson
2023-05-05 13:20 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 51/57] tcg/sparc64: " Richard Henderson
2023-05-05 13:20 ` Peter Maydell
2023-05-08 17:34 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 52/57] tcg/i386: Honor 64-bit atomicity in 32-bit mode Richard Henderson
2023-05-05 13:27 ` Peter Maydell
2023-05-08 16:15 ` Richard Henderson
2023-05-03 7:06 ` [PATCH v4 53/57] tcg/i386: Support 128-bit load/store with have_atomic16 Richard Henderson
2023-05-05 13:34 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 54/57] tcg/aarch64: Rename temporaries Richard Henderson
2023-05-05 13:36 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 55/57] tcg/aarch64: Support 128-bit load/store Richard Henderson
2023-05-05 13:41 ` Peter Maydell
2023-05-03 7:06 ` [PATCH v4 56/57] tcg/ppc: " Richard Henderson
2023-05-08 12:16 ` Daniel Henrique Barboza
2023-05-03 7:06 ` [PATCH v4 57/57] tcg/s390x: " Richard Henderson
2023-05-05 13:43 ` [PATCH v4 00/57] tcg: Improve atomicity support Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d42d16ec-f223-9f4f-1150-10fdf9fe9b3c@linaro.org \
--to=richard.henderson@linaro.org \
--cc=gaosong@loongson.cn \
--cc=git@xen0n.name \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=qemu-s390x@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).