From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182808; cv=none; d=zohomail.com; s=zohoarc; b=k6H5DNEg+ejeZjDh1XUN3BV1N0gmNL58pEiSMW+geMRT1tLos2gEfgADKTVM9q2Y3DJB6qNyqGBZ3T0+8KMdw5K3iIw3hQGRlwSlB85EtSux0qM9/A6XawEVK7RbeF3K/5+gvCqw7c4RtYYYpqXNXxDIeoVnEba3t3axY6PezDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182808; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=Z4o0LumeGBsL1gpZ875DE9UY5/NXdzQZjEo7hKJyqxswTe9zW1eCY3xqP/MO+Lj9aZxC9IwW5SmpcLm0RPdHu8UdORO1PHN9d2tZ1Zv/IwIBqa1tE7CeLduR7A1aeFxC+1jmaG3PAYHhfIirBKXKmZTSBEOsMnm/UP4JzokqRnc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182808343422.83677859253; Sat, 30 May 2026 16:13:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSr9-0008R2-8l; Sat, 30 May 2026 19:12:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr5-0008Ph-QG for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:37 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr2-0007Ma-VU for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:35 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-36d6bb38b44so395492a91.0 for ; Sat, 30 May 2026 16:12:32 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182752; x=1780787552; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=bc6pqyPdhwix//MalUMbWfv9uSuxUubjkURyV2DSU1Sn3f7zlJO4wFrEuXIvXMquab AzNY3nABKOV7FMb4mn0U3uldzFSiE4pbYExYhamQ4dySf2EthwkZp8pTfl1CrTFAPjC+ 9mNomZex7S9S6HCGwAA3hDjUh2dbXg/jaXlx61xPlcVlLEmnSJwoDxnEn9aqm4gx7z38 qQpHFa8OoVIHX+W/hC9UWTTmmtWXRVgxz3F8nsz2k6jPexTWnHcri18WrfD0t9VYTLki jjGtgXwB3/7oVhtDfUifCWho68oSnm+QdYeyc7P3ggTfGRannBo6dvjc0Rx88VKohkhz HIMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182752; x=1780787552; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=fsEOamW0dZAcXkUCnZDZhkVl35N/bpd88kolmXyW1y2gLfz1q6Jdp9PgR7XUXBBy87 X10DFPwRkFYDos0guvfdtrjcF2MdDGIzH2Wk8Ikam0RR1Ovs/BerHyCZ053WBV7o0BNT l4GNFoAQ8ot1i4QpBycEAft+ymkVC219cV4ZaWEy95ON5+dwQCbMI0pKuO/jZ6Z5F4jH iqoIbUNsZCm1B1L4F+PN0jtWgBc2WoMCEUchqrTD2x3cfu5SPc7CX3ZZSLqJ/NtDddna 1kRvSTm1hT798Qdsy0cj25dF1FHXZlj2rs/ZfmjWxOWICQyKRP76kWi0f0d66ngnJ8BN VyWw== X-Gm-Message-State: AOJu0Ywu1GCkIVIQN2lOM3bQ6hJLdp2y//cyIExkxtU9+8Vu1lg1SD2H UONJEzpU8TC6wKJ+5XN2YY/vGqjUItIe06XQJ6yL0uYDX8vFH/r+eD6vFVLTlUsNbHbcL4v8a6e xXIT3qc0= X-Gm-Gg: Acq92OEYfq/O7SSA1QlUICGqwx27hCypTiREgRBZVbCkZmZxNYsxQpmmO7Fis1zEjgp aVv0Z0T140rhVWOTmS1YipCBnqd8DnJ9S3ZmlFfO2X4/+779Co3J9lX8Fw4X0yedera2fIHjjsX 3rmQ9vR9sl84/HzJgXPGYly6AL36kG+yW8uBLvV4j67347mi64m+4uvtijxN8TcOTBhJ+BmgCFS ZqU+WbnNZl6xMxo/nCNkYNaDa0IlGSBM+4jW32EMUiFX/AJFUSXR32cJGPrlh6wS8cjQFW5+c6f XrH7utc7OjH5D5D1nCvC9EiC2YnY2/TLnBwWC2JNWJqxlBIwkxKBGjrIWoNMPW1+6cVbyByPjNP B6BtIMPSukeCGOFXw1gUedgknH4toXGVcXq/QZWgv/+F3IDkohcjC7nzI0i25WOI24bx8IhUPDN gpwWnEZ40WJZw8ohz+2QoNZ4uzCmXteIdcI5c5M8g= X-Received: by 2002:a17:90b:2f46:b0:368:a297:bd38 with SMTP id 98e67ed59e1d1-36c4ff3a634mr4539942a91.7.1780182751649; Sat, 30 May 2026 16:12:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 01/41] target/arm: Introduce arm_init_fp_status Date: Sat, 30 May 2026 16:11:49 -0700 Message-ID: <20260530231229.400441-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182810041158500 Content-Type: text/plain; charset="utf-8" Create a function to set all default controls for a float_status. Other settings for specific FPST will be set afterward. Signed-off-by: Richard Henderson --- target/arm/cpu.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index a13e6dae2a..b75c6a6622 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -304,6 +304,13 @@ static void cp_reg_check_reset(gpointer key, gpointer = value, gpointer opaque) assert(oldvalue =3D=3D newvalue); } =20 +static void arm_init_fp_status(float_status *s) +{ + memset(s, 0, sizeof(*s)); + arm_set_default_fp_behaviours(s); + /* We want 0 for all other settings. */ +} + static void arm_cpu_reset_hold(Object *obj, ResetType type) { CPUState *cs =3D CPU(obj); @@ -626,20 +633,16 @@ static void arm_cpu_reset_hold(Object *obj, ResetType= type) env->sau.ctrl =3D 0; } =20 + for (int i =3D 0; i < FPST_COUNT; i++) { + arm_init_fp_status(&env->vfp.fp_status[i]); + } + set_flush_to_zero(1, &env->vfp.fp_status[FPST_STD]); set_flush_inputs_to_zero(1, &env->vfp.fp_status[FPST_STD]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_STD]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_STD_F16]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_ZA]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_ZA_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A32]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A64]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_ZA]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_STD]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A32_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A64_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_ZA_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_STD_F16]); arm_set_ah_fp_behaviours(&env->vfp.fp_status[FPST_AH]); set_flush_to_zero(1, &env->vfp.fp_status[FPST_AH]); set_flush_inputs_to_zero(1, &env->vfp.fp_status[FPST_AH]); --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183013; cv=none; d=zohomail.com; s=zohoarc; b=GY6IYA4L5xegY5h4xpqVY0KgE90fX/4yxbdUV2q7CVAlvugkAd8fMxBd1Yzw6Lfwf2AgB3OXUAY4vPxXvyVgZzw5eB4kaMHxUoNH/hDrUSrmNho4wL8xBl4a6+GcTfHFraxvr8lEa5iXQNX47QkvgAeMlcHb+kaFoE3gIEbuAno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183013; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=Lb8rj7f5t9PkWA4EEra7xMFmUQY17WTKROV0S4v+UyWeJ8z6554ESsa+gbmHgz+ifUBNEno/+8r1W7b0Az8bUKx2Y94Wy0QpOL3rRczoHhiqwXH1sozpPHtBsYDe7nQPHYOeXOiuFZfromATNm9wzLIiKnrsuBMHvHAc0yzLSg8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178018301380498.3849668009691; Sat, 30 May 2026 16:16:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrA-0008S9-Hm; Sat, 30 May 2026 19:12:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr6-0008Pj-FG for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:37 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr4-0007NC-U3 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:36 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c858014845aso472586a12.1 for ; Sat, 30 May 2026 16:12:33 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182752; x=1780787552; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=gfZuloeJCLDjKRQeaZ2qA9sGwjeSSCzCF6tBbQR4S8oiBmynN9mRVjFc1Wp2RYvPaz F3m89MStkosDwcmPihwH9YHMz27goEmtskgaX4SxQiPeibDnwLXKjcj6LrWO5E64qnaG alwcg0PhuC687xX13txo/EEiMmH+trq2EVctyLQA8FkhF5YWMdkAmyY/UYdktlxBgLVY 9meYZhK7L0YZGB0N6NBYrNeByaaaiIBpEcKMrYwfjUFK1GNjAn3Wamj3DrUP/UoA+9du XUwFy1t1BhlXFVok4uEBpUf+o4/xP5rTWVJnhl0SnlGQuvaUaDiWWgDLeTWXL/w5eaCl YKfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182752; x=1780787552; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=pantoqIbD6hkBLiGPMf/2OuyJ+Bf/S1Z+JXIb8p4gft6XOmre9/nWXKdH+9SJyhsMf JIZf+iGfkQ+g5HwhxtWE8Jji3S+nxvoKPFzyO2TNN12T9AW7nSIG8EoXF9T96as7ygDm Y4fTCH2xGyd2NWrcMQ3ZLsEavwqQ6ijZAVGJLVnLQ/NPcc5GOuos+LfFmtOuRofI3qMn oRafYO9SKdjwuQBxvvm9bJ57C8L8rybMpq58WRhFEaboeerXyMAr6wGIZpyTgpZeJhTX cC3AwhGJClW9XrQl4P2w6BWuxKb36WGb+cbkd/70yjuQb4g9PtW1BsaZfnEWOEPvRZxB /jqg== X-Gm-Message-State: AOJu0YyANpbUUgtzvd1KPDCJaCTVLJTXwsqfLPSxSFCdUWA7WiZ6K0MJ 7iAfsdN/PrW2CH9Mquiyq0fBACIkrZygRqN2Dv/eVrjyvVLx5MzdQ+hXRDhYvwzKzLfaSGX6V4s D9IJVF5A= X-Gm-Gg: Acq92OEn4O3ZkRW0s1SauxoQfu9LxAeduhuAfuIPlz5C9VO9YE2xH/PsfeThGk6q0f8 6xeVhqwbdMYZRofP9IEJqJIf4Oxpha6wDFse1wJWZArOs65JjZ40C+YJkuwC/qdCGK2jXcSUlG8 WQBuPnznMGt3dC0XxxSKCOMHRAUaUia6NMMcWXek1+106KVKhhgsWjhs+P3/qWKzrBBIwMBc0uV Z304VvE/ljobMuDMGUqly97ngHVQm11bnt0yWajT2JtNP56s5yMlNlIKrUGq7uzJRpfSV99awf8 4xeYHBOyJYvmIb8vg1j3cDzF4z4vZJhisq/+zCwOgFeqJXiPVVha0Fsup+NNrr5NiCA/ZZbwebf uEaI8Sv+GS+lrVfRg+fFTEg4g6X/SxVMhyJh+ToetetCDTD39ZDS8RLvQBGQcb19Q34i+2ztPU7 L0AZXsQcY/APeStWIytGUs+3XoObpBh77ZjltN9Qk= X-Received: by 2002:a05:6a20:7f90:b0:3b3:9f4f:2e54 with SMTP id adf61e73a8af0-3b40fddfc1cmr8980296637.39.1780182752367; Sat, 30 May 2026 16:12:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 02/41] target/arm: Set e4m3_nan_is_snan Date: Sat, 30 May 2026 16:11:50 -0700 Message-ID: <20260530231229.400441-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183014190158500 Content-Type: text/plain; charset="utf-8" The unique e4m3 nan encoding is SNaN for Arm. Signed-off-by: Richard Henderson --- target/arm/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index b75c6a6622..77133b8b4a 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -308,6 +308,7 @@ static void arm_init_fp_status(float_status *s) { memset(s, 0, sizeof(*s)); arm_set_default_fp_behaviours(s); + set_float_e4m3_nan_is_snan(true, s); /* We want 0 for all other settings. */ } =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183293; cv=none; d=zohomail.com; s=zohoarc; b=CBC1msdaO+1SdL+LU/6SwgLxu/arNxOVBGs3H4zkndlxOXR/CsCoemCN6yOnVz/+El7xi3rLCWHKwkMEV3KFoUdZrXqV4pF6VEb78Lupx2LEzNy28edJR6i/XXZN51qxEaatCxVzdYtBQ6/PAvvU2BtGIZIvBakbaurVh7Y8yoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183293; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=f2vpMlkHQ490CwJg3OOwonk46wYyG3bx1frh5PkSfAjd5M/3UvuUzLmcs5oVT38efgDxW9sFKF+/XE3goItJvkHb9ggUvyiUu2e4qAU3GK0eM1uv0Q459qmy+bfzuF0M0ynGRl8PNFzBGGWhuqiWqcLkZrmoqp/Lmb0kg4elLXI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183293937477.32685252362853; Sat, 30 May 2026 16:21:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrD-0008Uw-3w; Sat, 30 May 2026 19:12:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr7-0008QH-Uh for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:37 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr4-0007NX-Up for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:37 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-36b8d414666so1818830a91.3 for ; Sat, 30 May 2026 16:12:34 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182753; x=1780787553; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=tLBI/X698ah898Wg3AFFPD6+TRhof4gMt6wR2u2/yE3hKaeOFuhZPwJdNZf3hp+YA4 pFfyXcPUtZyXcgf51JaKGyoEmJevFna3Q9vghPDd2WwX1ogYQeDgQ6n0NRGS3iwm6LqC 305BSY6rgD9CsXbW3nh3pahSiGBWPU51w6EbQuIPw4GHC3I07ugb8G1X7SselZyRh5JM 7xF8q2Sxhq1/cI2BNNQeALlVfpD9lsOWxOBDtsWF6GwJ2p63MZONQqiRu0WFuy6sL3Tx EJD3zabRFfz5kWLX/RUH9TNCcyPOVNtKUP+POo9y/bMJ8Nea5HW5TEIJEQLlxiLTypQG Y2MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182753; x=1780787553; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=hwpryzAuJSn7oE0sspUNxqqtEDlJnLiwW0PcRzO3XeV8pfcxPeclIMS84njUXrQjBy UoPC2PeSpQjYzwoWnYKACw4wQPRLTMfejgz1+qzm9BRFo5Sy8l8MQ6fe2ErLAnK0JzyC fR+4SiwMkkTK6r7JerIBjL9x/Q+J0CEFNBxB4+hLAc0eBZFrcRH2mMKlrX+YId2YUAq5 ELHanp3f3XgZ5pyST7yO0WObe1fiZCjo90cDwgLiFWi3Qlp+LtlUQlByvHNqr47eVZbm odEcgTMtxoRz9EHk16ITs8h+lQJNhI2jT9+X2RQ3T7kICQVrWFIRYWp9NU/2ACXbIEmP ZvLQ== X-Gm-Message-State: AOJu0Ywy/uRqDkAYNi7+WNPjjraABgpctDiDdsJ6xudxMe0zb/RgP0tf 3al5GbUaS28NLo00hAySoBSLbVmNLMmId7KHvXjirgBmmAGJDwEjg1JQXgou8zKRRnhuVjUkH8h 1JVKsaSE= X-Gm-Gg: Acq92OG3TvADxJb7LNEIJuNHn3TIOzXch69/shI2LBINw5AG+2VSro4zAnGEboyA8zo x3WRl6Jsf7Jj2/YWpRO24JuD2EJtF4VLZ1B+4vhT5wZQFfOCkVw6MkLlHtC67Pgr1Ti4HGFUH2+ LJQsjIDjTUw12hS+TMHZj0YFSoJFrSmAG8VB8BSKG9kh/g6l1t4isr0MZbhPYGKbOSxPuZ7ONk6 UIlFmf+TU/vVBz0FzCEiAjkmcJcytVBeIDOi0uzKBT6Wc+SNLEwNA8qOY1vVFoxz7Orx3KCsPTt xFBjQLlv0RwlWgjdIP0TVJhPj3cbaxdAxQm8L308qjB6v2WmysJDFFoYGXq17GaKUuzwIT0l6da kogprp1mjmmvUZCoEa9iOtVZEX/aP6Uhnwnlk4XbNffeSgwx1Pz8Oj4A2wtSU40MohGG2Gk2CoT Lqly+80E0m5ohqNixQdz3lqv8BPQAoo9lMNenIt6U= X-Received: by 2002:a17:90b:3b85:b0:36a:caf1:b20e with SMTP id 98e67ed59e1d1-36c4ff25b76mr4972520a91.3.1780182753059; Sat, 30 May 2026 16:12:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v8 03/41] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Sat, 30 May 2026 16:11:51 -0700 Message-ID: <20260530231229.400441-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183294858158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/helper-fp8.h | 14 ++++ target/arm/tcg/helper-fp8-defs.h | 6 ++ target/arm/tcg/translate-a64.h | 1 + target/arm/tcg/fp8_helper.c | 124 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 34 +++++++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/meson.build | 1 + 7 files changed, 183 insertions(+) create mode 100644 target/arm/helper-fp8.h create mode 100644 target/arm/tcg/helper-fp8-defs.h create mode 100644 target/arm/tcg/fp8_helper.c diff --git a/target/arm/helper-fp8.h b/target/arm/helper-fp8.h new file mode 100644 index 0000000000..c45211ba22 --- /dev/null +++ b/target/arm/helper-fp8.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef HELPER_FP8_H +#define HELPER_FP8_H + +#include "exec/helper-proto-common.h" +#include "exec/helper-gen-common.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-proto.h.inc" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + +#endif /* HELPER_FP8_H */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h new file mode 100644 index 0000000000..0caaf63749 --- /dev/null +++ b/target/arm/tcg/helper-fp8-defs.h @@ -0,0 +1,6 @@ +/* + * AArch64 FP8 helper definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h index 9c45f89305..35f8d4f82e 100644 --- a/target/arm/tcg/translate-a64.h +++ b/target/arm/tcg/translate-a64.h @@ -25,6 +25,7 @@ TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf= ); void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v); bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn, unsigned int imms, unsigned int immr); +bool fpmr_access_check(DisasContext *s); bool sve_access_check(DisasContext *s); bool sme_enabled_check(DisasContext *s); bool sme_enabled_check_with_svcr(DisasContext *s, unsigned); diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c new file mode 100644 index 0000000000..bb3e8dae5f --- /dev/null +++ b/target/arm/tcg/fp8_helper.c @@ -0,0 +1,124 @@ +/* + * AArch64 FP8 Operations + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "internals.h" +#include "tcg/tcg-gvec-desc.h" +#include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" +#include "helper-fp8.h" +#include "vec_internal.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-info.c.inc" + +typedef enum FPMRType { + OFP8_E5M2 =3D 0, + OFP8_E4M3 =3D 1, +} FPMRType; + +typedef struct FP8Context { + float_status stat; + ARMFPStatusFlavour fpst; + FPMRType f8fmt; + int scale; + bool high; +} FP8Context; + +static FP8Context fp8_start(CPUARMState *env, uint32_t desc, + FPMRType f8fmt, int scale) +{ + ARMFPStatusFlavour fpst =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + + FP8Context ret =3D { + .stat =3D env->vfp.fp_status[fpst], + .fpst =3D fpst, + .f8fmt =3D f8fmt, + .scale =3D scale, + .high =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(float_round_nearest_even, &ret.stat); + + return ret; +} + +static void fp8_cvt_finish(CPUARMState *env, FP8Context *c) +{ + /* FP8 convert insns don't update FPSR.IDC */ + int e =3D get_float_exception_flags(&c->stat); + float_raise(e & ~float_flag_input_denormal_used, + &env->vfp.fp_status[c->fpst]); +} + +static FP8Context fp8_src_start(CPUARMState *env, uint32_t desc, int scale= _mask) +{ + bool issrc2 =3D extract32(desc, SIMD_DATA_SHIFT, 1); + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D (issrc2 + ? FIELD_EX64(fpmr, FPMR, F8S2) + : FIELD_EX64(fpmr, FPMR, F8S1)); + int scale; + + scale =3D fpmr >> (issrc2 ? R_FPMR_LSCALE2_SHIFT : R_FPMR_LSCALE_SHIFT= ); + scale =3D -(scale & scale_mask); + + return fp8_start(env, desc, f8fmt, scale); +} + +/* + * Invalid input format: we could take one of the usual set of + * CONSTRAINED UNPREDICTABLE options for use of a reserved value, + * but choose to take the additional option provided by the FPMR + * register specification, of treating the input as if it were an SNaN. + * + * One of the uses of the input will convert to default nan (because + * all fp8 operations use default_nan_mode) and raise invalid (which + * the operation might suppress by not updating IOC). + */ +static FloatParts64 fp8_invalid_input(uint8_t x, float_status *s) +{ + return (FloatParts64){ .cls =3D float_class_snan }; +} + +typedef FloatParts64 fp8_input_fn(uint8_t x, float_status *s); + +static fp8_input_fn * const fp8_input_fmt[8] =3D { + [0 ... 7] =3D fp8_invalid_input, + [OFP8_E5M2] =3D float8_e5m2_unpack_canonical, + [OFP8_E4M3] =3D float8_e4m3_unpack_canonical, +}; + +static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return bfloat16_round_pack_canonical(&p, s); +} + +void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + bfloat16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 3c091ccc56..5c6e88e0bc 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1457,6 +1458,24 @@ static bool fp_access_check(DisasContext *s) return fp_access_check_only(s) && nonstreaming_check(s); } =20 +/* + * Check that FPMR access is enabled, for an indirect reference by a + * vector instruction. See CheckFPMREnabled(). + */ +bool fpmr_access_check(DisasContext *s) +{ + if (s->fpmr_el) { + /* + * While denied direct access to the FPMR raises SystemRegisterTrap + * and targets a specific EL, denied indirect access to the FPMR + * results in a simple UNDEFINED to the default exception level. + */ + unallocated_encoding(s); + return false; + } + return true; +} + /* * Return <0 for non-supported element sizes, with MO_16 controlled by * FEAT_FP16; return 0 for fp disabled; otherwise return >0 for success. @@ -10695,6 +10714,21 @@ static bool trans_FCVTL_v(DisasContext *s, arg_qrr= _e *a) return true; } =20 +static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, 16, vec_full_reg_size(s), + issrc2 | (a->q << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) +TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) + static bool trans_OK(DisasContext *s, arg_OK *a) { return true; diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index d8a3269573..e30c7e5ca9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1921,6 +1921,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h +BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h + &fcvt_q rd rn esz q shift @fcvtq_h . q:1 . ...... 001 .... ...... rn:5 rd:5 \ &fcvt_q esz=3D1 shift=3D%fcvt_f_sh_h diff --git a/target/arm/tcg/meson.build b/target/arm/tcg/meson.build index 9b859892ed..573e8b5af4 100644 --- a/target/arm/tcg/meson.build +++ b/target/arm/tcg/meson.build @@ -41,6 +41,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'sme_helper.c', 'sve_helper.c', 'vec_helper64.c', + 'fp8_helper.c', )) =20 arm_common_system_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('cpu-v7m.c= ')) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183005; cv=none; d=zohomail.com; s=zohoarc; b=BzpkhWWsi/4z5ns1SYaCLzU1XnfwEFB3fBFvyygL68KSxGmKMnpKiezXYhJ9YVgD0rsSzvsC1xOoUbfQXoVIbAJtMrX3/iAE4bVrc+RoEfToH6mA6e1N7wZbr3MNwhh6/n/njS8cz/mvHNdRwsGRrZRrIr6q2z3yYkCb44WzdRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183005; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nmiRozeaSkxx/AX0Pl05g8NldXlE40mpBTdBsa5MDwg=; b=KPeeRqbZnSW8pidxstqagerQn4ISjW02fkDsgfYHhWsct4P88RI7Dh06GqAzCrMvT67miA9Fpi0UY1BVvG0mcuzjzJmvCN6BOXJSCR20RALDnkaDYxXh6OOudqDfFz5FWz8bt2P+fe0nrpzggh/spVVBVq/oyVrQ7/ydt9zfGJ4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183005534129.83112530485607; Sat, 30 May 2026 16:16:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrA-0008Ri-7G; Sat, 30 May 2026 19:12:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr8-0008QO-5D for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:38 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr5-0007PO-Pv for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:37 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2bf0ddaf50fso16860345ad.1 for ; Sat, 30 May 2026 16:12:35 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182754; x=1780787554; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nmiRozeaSkxx/AX0Pl05g8NldXlE40mpBTdBsa5MDwg=; b=HYX/UDoCQiHlyv8IKoBM1pdzBLh3ZRxu65dGwT/jTDPqjrvAJCKt/VpFd4zLCY2tOR g5XXRHK+usDKOpl5je9B0q7owCKC4orNqsIYnit5XntMoSVGEv9KnuAe0aRvnzpEfsyD k7PEhdgVqr34VzO4OlEjTblfPmXbtwAtKsuuyZF67qx9BRAeEX4xrr/RwbX8jaIPXPGf XIgfAQmSEJGJqwfp+2IzFRQd5t2ge5P6KE4cxkd3nYj5s0IfssnX9YJSy+803eODtPOz JxyBfcm6FpHG1mK3qpMFRzVX3RwyPTEraGYDJYDMAqxZb7J3hwyBgAA+14usOxA/Vdun 4ZmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182754; x=1780787554; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=nmiRozeaSkxx/AX0Pl05g8NldXlE40mpBTdBsa5MDwg=; b=Fsul4ogUJA7C9FbXlTifdi+AE/k9rIs8iAHnzHrv+GOadvWtyp3IRdcZxPOC87VDXl R0XcYUyTZAQKKH7Y25pZ9PhGis44UmomiYNeRhTuVrBXfW70Fiwo1Y1fbmUFyc8d+qQG b3yG2jrW8vzzBOPozela9tDlAJ9QLUD/r815CRM3uTMWMiRNKlXpf+0TQjKpnO2EsZ/K VzzQAZoLdE/R4C23Hq8tr99a8lP429mO5KcObsoIbFp9ws1OlLOPwqFbRb5TnGlmQ9S5 R6ddE9tCMAcDx/D9PABx1/KZbncHaco/v1Clj9Z0+hSSHXSSDLPnAw8jgGTtQCco5CxG /ziw== X-Gm-Message-State: AOJu0YwGLLSzWK/EvUa5Gr8up8k4v+55FDQe6xRCVSwHODmkGdgOuWcM dq2JZEYB3+jR6ncYJcXdVWRyA7TTkGHTovfOyPR5Cnji9cGlqrPh+USWqkS4PsD/x9oMJyjlYqb 4gnYQEkI= X-Gm-Gg: Acq92OEGpSE8LNaEl7Rk8bVIfweKgfYREshffHMxqxavpKBRdu+GQXU7QEtPO1uJOSD igJspxt67LmF2E4NS3D2FtG+iDusobOGPDNACo0VGvmLNDljf2Xh+HOwKws8pOhJ+8t4un/t3YU mWaLiisr0Zk5oXSxyxSW+ChfiDy0NKzdRfZB4XJ2WFNj2xn+QzTrCI/yBbhJ5txczBLxgoSde58 f5ZXj4R1+lMT4MpYw/XR4e3a9yNULaDRDs4C0oNnsnEGYuzJloJxvtg/UDQf0fqL1joRWi7NfxW rrKmYzFTSddueM9XdYrXq5SH/9g+/rwTEqJB8a43vfvkEsIbhKtqMqJteAmz95x8ujoMN+eTCRH EFzwp6gVk6SfG1+tn3tFrE6d1s1eFq0HtqJVj1HRKuvSf0DOQnHR9ZtkApknEiOJVhwJi9MY00x KK7TJjO8MPKUjQT5rXYVh9qiswz+XcQ6vH1x88kpY= X-Received: by 2002:a05:6a21:7107:b0:3aa:ec27:e5f7 with SMTP id adf61e73a8af0-3b4282ff034mr5401401637.42.1780182754201; Sat, 30 May 2026 16:12:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 04/41] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Sat, 30 May 2026 16:11:52 -0700 Message-ID: <20260530231229.400441-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183007182154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ target/arm/tcg/sve.decode | 6 ++++++ 5 files changed, 52 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 38a695ded7..70649fe894 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1653,6 +1653,12 @@ isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISA= Registers *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_faminma= x(id); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 0caaf63749..18ff483bb0 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -4,3 +4,4 @@ */ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index bb3e8dae5f..c62fb2ffd6 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -122,3 +122,19 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) fp8_cvt_finish(env, &ctx); clear_tail(vd, 16, simd_maxsz(desc)); } + +void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index fb9d379184..0b03afe7a1 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -21,6 +21,7 @@ #include "cpu.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -4068,6 +4069,28 @@ TRANS_FEAT(FRSQRTE, aa64_sme_or_sve, gen_gvec_fpst_a= h_arg_zz, s->fpcr_ah && dc_isar_feature(aa64_rpres, s) ? frsqrte_rpres_fns[a->esz] : frsqrte_fns[a->esz], a, 0) =20 +static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, + gen_helper_gvec_2_ptr *fn, bool issrc2, bool isodd) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, vsz, vsz, + issrc2 | (isodd << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT_STREAMING_SME2(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, false) +TRANS_FEAT_STREAMING_SME2(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, false) +TRANS_FEAT_STREAMING_SME2(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, true) +TRANS_FEAT_STREAMING_SME2(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, true) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 078a085a79..e7984fa8e0 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -108,6 +108,7 @@ # Two operand @pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz @rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz +@rd_rn_e0 ........ .. ...... ...... rn:5 rd:5 &rr_esz es= z=3D0 @rd_rnx2 ........ ... ..... ...... ..... rd:5 &rr_esz rn= =3D%rn_ax2 =20 # Two operand with governing predicate, flags setting @@ -1090,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 +BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 +BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 +BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182835; cv=none; d=zohomail.com; s=zohoarc; b=L+bzFYTu8aOTxCnM8b5Xdfrd0+FA/PcrCa++8VJw3L5uKwg5HmmRLql6szBlM+c3KUcl4QOCL1/lmHZMV4+/1oWIsrFkucBA7viXD4L6RtwaMC+Cd+xUYSYlFprpOBCiKtg2H9XmB2h56tWYX697aVpK8tDu3Q7VA4rwam5WftQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182835; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R2AvY8+cKE233vmsOc5JoO5199jYX0ZhoNsXxnkTJ6o=; b=Fp7sLkV1xgJC0VyseaOyEutlXlz6++8pArGZdboctPM7K58gQgovcJGKXVz0vxgL3uVXacW6tXv8/M2Yh8kRec7+Db1cUTWIPd6Wg544GXDxTPdR52ORMxbCISsjL9B8IQz9eYYVin28zvfxzeOZAhYUKwVspgOiM2uObpiXiWE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17801828352941005.6806403894149; Sat, 30 May 2026 16:13:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrB-0008TI-Va; Sat, 30 May 2026 19:12:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr9-0008RO-JU for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:39 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr7-0007R5-Jt for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:39 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-36d5fd50d20so575712a91.1 for ; Sat, 30 May 2026 16:12:37 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182756; x=1780787556; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R2AvY8+cKE233vmsOc5JoO5199jYX0ZhoNsXxnkTJ6o=; b=W6otLpIybyGI/eknX5SM5ynNkk1c4yiCiv5uaWZYdsWMrIvdg3LDJuqQh3MV2tBHJE WhrSK/+D7dao0uv02vJIKFTe7/tO2PwvwjXlLGD/PL8zGAvMaCLHGbYKDcWniK+GB0WX SRwi1+ndz61azv8FIN5XQPH84dEO+dMgmMJO0djUVgXRTSkSUHbCCAlioiSGvCl943Rc wtLUYXr1KpotLv9UlM6HPPouYKSbB2FnkQDnR38e7aLviRBGCRRPR6pJjcrNotFVpBA7 tfjxmCqpjUr8S2vAjnm+utHDyczSTSKOGNgeVVrHILxI9pFHuQNYVVRfcDG+sAo3RiYW G/AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182756; x=1780787556; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=R2AvY8+cKE233vmsOc5JoO5199jYX0ZhoNsXxnkTJ6o=; b=BHhwbaBZGZ+uzN0pqLZS9kyZY0AoQUn00NH0ooRaQfxRn1jf6XaMkarBWXzb0VY+bI mlwKZQPyVup7Zvoz/0cUgCfvsiyYw6J85yWDTNUClw2TVtDBEib4JzyKC70JQ3fn9Lmx pnPz9F1L9hfcRdwOAd/hbDO0slbCjESx2uK3NLOVdgd9Ch2Q/AgPvsObJikgypjECx3S 4kz1SWOQBLxWyr9NHvbXNTc0jBfspJWTLTesqoe0KCozn/CTw3r5adBSm3aEdnTh6rwe tuTvLTRPRAnpfhCZf3ilhLTzsKcszXu85z0u1hdtNBkxbvsAUl42vvE2xXT9O8ad7BJ3 +yiQ== X-Gm-Message-State: AOJu0Yz72mHfaFZ1gHW8/9lsi7Bfzk6G6mGht+fmuz3KB6vtb5jOzLVD S1NqRvVcORuHfr6AeB1KLpmBFHd9PVJw/Xw6lQKEsxATer+TTm2KHSoNiLVDuGf4DJ1xVIU82jz oT43Fui0= X-Gm-Gg: Acq92OHMFRPKqRm3SmV13LkuvgmOdZpGGb9hEUe376v08L6tLuE4iOrnT6V71z5Sllb dEo/Ffd11asm98aw6zWFzf3bcciisH+j8flCxiUpx3lXMvfXJorfJa2v0e+bksZNy3M8F3lnPHQ qFY93w67z4hHgSlBV6diwOqnKIELM+PmgVGYz0GvjadUEvSbqp4jA1vgJgJnRWyFC7LO84WyLhd +Owfpy1g61xLYxaKqh0OjE6rQbvByI7KTOoiYveIH3ynWLBGJq0X/fbhbA7gNuw+u4JMKsFWUoc 8D9+QPSiwo42Hfzhmz6uLV6cCrIRlXYRn5TcykBJz74YkWhQRKG+0/6ASzju+lfIxRm7FrbC4UL OFl/DGa0t2I4/PPduw92f+hHXa7KkpZ73+F42nU/bmFF7FN9GrxUi4KqDZQaSH8jAvNYvhERh3s WhyNuIAS/PKO1QUZf+g3qUL6IhujLoHx8A87hJ1mM= X-Received: by 2002:a05:6a21:6089:b0:398:a33a:71c9 with SMTP id adf61e73a8af0-3b428213800mr5558722637.43.1780182755903; Sat, 30 May 2026 16:12:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v8 05/41] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Sat, 30 May 2026 16:11:53 -0700 Message-ID: <20260530231229.400441-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182837824158500 Content-Type: text/plain; charset="utf-8" The existing pattern is BFCVT (single-precision to BFloat16). In preparation for introducing more insns of the same name, append the operand sizes. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 2 +- target/arm/tcg/sme_helper.c | 2 +- target/arm/tcg/translate-sme.c | 4 ++-- target/arm/tcg/sme.decode | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index c551797c6f..01aad4c231 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -250,7 +250,7 @@ DEF_HELPER_FLAGS_5(sme2_umlsll_idx_d, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, ptr, DEF_HELPER_FLAGS_5(sme2_usmlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) DEF_HELPER_FLAGS_5(sme2_sumlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) =20 -DEF_HELPER_FLAGS_4(sme2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hs, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i= 32) DEF_HELPER_FLAGS_4(sme2_bfcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_n, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0055e97a2b..a0f03c4671 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1742,7 +1742,7 @@ DO_MLALL_IDX(sme2_sumlall_idx_s, uint32_t, int8_t, ui= nt8_t, H4, H1, +) #undef DO_MLALL_IDX =20 /* Convert and compress */ -void HELPER(sme2_bfcvt)(void *vd, void *vs, float_status *fpst, uint32_t d= esc) +void HELPER(sme2_bfcvt_hs)(void *vd, void *vs, float_status *fpst, uint32_= t desc) { ARMVectorReg scratch; size_t oprsz =3D simd_oprsz(desc); diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 82aa14131b..652a72e972 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1448,8 +1448,8 @@ static bool do_zz_fpst(DisasContext *s, arg_zz_n *a, = int data, return true; } =20 -TRANS_FEAT(BFCVT, aa64_sme2, do_zz_fpst, a, 0, - s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt) +TRANS_FEAT(BFCVT_hs, aa64_sme2, do_zz_fpst, a, 0, + s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt_hs) TRANS_FEAT(BFCVTN, aa64_sme2, do_zz_fpst, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvtn) TRANS_FEAT(FCVT_n, aa64_sme2, do_zz_fpst, a, 0, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ee874be1a6..7a8e1abb59 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -789,7 +789,7 @@ SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ...= @az_4x4_o3 @zz_4x2_n1 ........ ... ..... ...... .... . ..... \ &zz_n n=3D1 zd=3D%zd_ax4 zn=3D%zn_ax2 =20 -BFCVT 11000001 011 00000 111000 ....0 ..... @zz_1x2 +BFCVT_hs 11000001 011 00000 111000 ....0 ..... @zz_1x2 BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2 =20 FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183281; cv=none; d=zohomail.com; s=zohoarc; b=bSYIFdv4zKdoLeLvCo7iEIZCAj0kYKzboEEtupi2VPJvAs/BIC5IQ8vsYL5aRH6muFldvIIKw/tYC8LjOTiEKT14LsJjRu/WZ+mGY+orAjuyPFQkL2BAT0PU44Sl69L5782n2ZdzlDG87QAvDTPNZHUSwnfseEZvrFydegSl5hQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183281; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=AZHLToE/SPM1/rgN1j4Bm14dMS4CNhikwEjo0cZ/8LKalGL1GF0gBmvTMczu/CP//GE/DHLdNBd4paGZBDkJJAeId0fWJmDsChrWoA2MuhddmHNG388/GcNkG77upb4gX+J6KuveGapSrU0R8Yts8WKesqc2mq1qM4xSgvDghow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183281310224.9940064672685; Sat, 30 May 2026 16:21:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrD-0008V3-Ru; Sat, 30 May 2026 19:12:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSr9-0008Rf-VU for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:40 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr8-0007S4-0n for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:39 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-3698e34a567so13683432a91.2 for ; Sat, 30 May 2026 16:12:37 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182756; x=1780787556; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=h+W9qf4b4CvXmvPZ7nxqEwGfCEoLCmpzzg1Ml2aO2XUyXdQMMVHr41mjyHuI+AO57y +SEko+nE4+TMDi/ZNJBsuPKHIn9GAtPNjjJFovMrCQ2ZjulESS9jRkp7et6EDtk7PX+p ecbGp5eL1s1VBw3P5PEIMX24uem8igG7Av/Xlg+FC1UKFQnsuoVO2prOp2pS+FjmF1sr Ii5j+d7uFgefIjUWNNdGc6S1UpKAJ6CmSQVO0DKn0z5qIn3BhcVicnGbaK6BR9tPkFh+ z5+e81BGMQ3d/PuOx9+2eez3pYH9IWw6HP2+HvBQJawGuoXUHXxCUVx6k0S1GJLu+QAC TwUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182756; x=1780787556; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=E1BcqGep2v7NNCmcoQcF7mXKXBN4DAN+VYzcdS4KAfV8RM/a8T0I+ZOZz8gaZ/C1iF szQPDJ0DpLLczxZERYaU9hb2jWtXmtoFaUDKtKX9EX+f9IP+yiGBpQ81CJZYgWwyQ49S XxIuUNtXx9RCRMdk5cvu4BkMWAfDcjc9gejy5WpZG/kuhPCBTtlkI+rtZ6oIW8GH3mvG wDo3cf3INrxmhO5jWpWPJjJeHRWFtDtjH6ax4hhZTSNF1h3AB+bEQPBI25hGnRxCLqXE Vc6p+XI2xD3MpyW2b4rf5/MO6GTmub0sswNBuj26O+GPoI7wCbj4F3OBUZdx4tlsRvwn MGnA== X-Gm-Message-State: AOJu0Yw56PvJQvFsdAmPz53RV3xsHIE+LiN9RCaMfLKlIyuCEzdvWSJi oeuB2hdpBV32hzPPMmk00D41vQmdGCL7xNqcRiOOuIedqwabqWEyzbdT5zYk4n+rvNP0ujnLGic 2sK/Ue7M= X-Gm-Gg: Acq92OFKvVkdJUOB8Lo27GGpJXRLgTsiB9iXSCMNI8sNFCK66Y1oxnj8mjVlMd1Sn54 gHsGLkUII3A1dwQRzB3VSmnV2QP7nbQxG8GpHQDsibRbjuRlDaUIyHl+b36NSHNsaIgW3bQB0kP 0ZEWCWGlW9Nwff+jCUUlFvHMzPvYOp0WsKx5Z/a0VIsf3NTtAk9zOlSWbH8jKwR5KL4BEJ4dvmJ 7um9ziycMu5rws02sVWn0TXjGok2L1mDebb1ESqq1hxS+X2KxOMrB8WvUxN9koj93STTOCyViBd Bu7NdV3S5aun3FZV46fSruXRswvQVmTR4AygtPQ56/ZZOl//SsQg6AdbTvRJaT+NeWnSilHuI/5 +tj/IQB/vA5Ta/Wr10HCg++OHgS+IBy2rHMrfwS09OJzCSgtngAygU6O6xq/GpuOkO06el3g3lk dJphXkBTSAjYWycX5L9lb7bIjgOm7esdXqvQy9FhE= X-Received: by 2002:a17:90b:5212:b0:36b:82cf:f779 with SMTP id 98e67ed59e1d1-36c50214e13mr5426333a91.21.1780182756501; Sat, 30 May 2026 16:12:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 06/41] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Sat, 30 May 2026 16:11:54 -0700 Message-ID: <20260530231229.400441-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183282991154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 19 +++++++++++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 73 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 18ff483bb0..966f83d796 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -5,3 +5,5 @@ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) +DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index c62fb2ffd6..aad03b0817 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -138,3 +138,50 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_b16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_b16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 652a72e972..19a13a6506 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1532,6 +1533,24 @@ TRANS_FEAT(UUNPK_4bh, aa64_sme2, do_zz, a, 0, gen_he= lper_sme2_uunpk4_bh) TRANS_FEAT(UUNPK_4hs, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_hs) TRANS_FEAT(UUNPK_4sd, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_sd) =20 +static bool do_f8cvt(DisasContext *s, arg_zz_n *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + tcg_env, svl, svl, + issrc2 | (FPST_ZA << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) +TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) +TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) +TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 7a8e1abb59..df9586c1a5 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 +BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 +BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 +BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182838; cv=none; d=zohomail.com; s=zohoarc; b=HnH5WyH5TjeN2bA8ejlsJm2PW0i0y/sa5h+TKcEAmk2DeqpoKPwbFT32oWcM2YftBD/dy6xrb0a96b8IzPet4x/YC8Q+kNGXZsfEeIVZIx/0RxoRJ3easnBeSPn4v6zjyh9cTW07HoBKRFAYIu9tCrMcrkcYd34shI7oZ7ZlMfk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182838; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=ikAqWotvPoXSfEHYG5QYt11CO+IHjjDIKjeIye1i6Xa03HZWKyWXSnK54SlGsSjsWnE8/kfbidyzIwSEN7J4e3UfScvQ3ga6twYxqHiuKYG89mD1KnbDeK/lJcNkDCyZRZAjhbtskXUqHlcEoj9nctW1GAHB1fDi+FUV3flzGnM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182838816188.25060265022455; Sat, 30 May 2026 16:13:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrF-0008WC-3L; Sat, 30 May 2026 19:12:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrB-0008Sy-Go for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:41 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSr9-0007Td-MV for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:41 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-36b95eb4bb4so1281690a91.3 for ; Sat, 30 May 2026 16:12:39 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182758; x=1780787558; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=u97Cevb5w8n/hw7Eo0nClQ8X4WmlCrTttnxuwbE4fov2iV+XU4+RW2GU51PedrERps f5L2Y2XSg2HdcGGIr7+wRxqarc/xMGAH6FCHVOtYh0BRgxUBCf3CoOcUyd6MxXhb/p2S XstqWSPDyVYsZ9rIdrqzYYEfqvvem0KhFPaC0V9Gbo5I1p+aXvxf1X3KnnXRUCaX7/gD hzhvGkbJ2G4DlqCDAYc2UVzCuJwWA6u+RU9a8VpoWdapMaMLEDkE9S0B8sW8sTscdS6r 1fD8DHT4lKMkJCtGzrJuUqcn9/x6FXvpxQsvyYih3PaQdxsu7pTGiZqK1i+EY6Ymm7/z njYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182758; x=1780787558; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=MWl3jIMvSvMgjtPunbmTa/W0YCYnLpsvIh6UrcJ2CW4PybNcWHy0IUff4N04FdriMZ DubH/ngqtYQ3milhZx85XZSWi1O2edoMIfr3PGPDi6T2itcYLr/asXg9cj0S2h4mt90/ Rv7Mo9JyQe8lPuuCQp5cAJiYAYrTjpjiHymBDDBGtG9QwMG9YLFT7wMVCWKF/0VJ8AcV i04Ap2jPrCk+aYFAllZeuGOsLoBD9O6ZnCrgLrZTHPIGMoyp2YPbeUnXauPEsMgqXNM4 K5g8IeYw92C9slxlwqulQ3NemVWLEjl+2tDpOpK9QglVBX1jACOo51U3WmBGVblDAIdP q+SQ== X-Gm-Message-State: AOJu0YxDge1yNUow0X2XifDLH403tofEQJMELX2adAxqYf3PRryOe1CD GfFyU9GzB5KNC3dDQcx8dVWhKENr9ENeLh8GKqa8zhiKaofOSQauQzr7L3AidaTVvglXmfXFoDi ITavno+c= X-Gm-Gg: Acq92OHK/jFVW+Yyp7WZCeWPZYiUiF+mcIL0IR/i6gl9XMnyRZIPwW5nkkUjA/zyTTy 6XcilbxXufSVyAZV2FhhtcYkM20HlUiD1ND+4oP2jrGNrHmNGnfMn8+Q0iv/tqpiiIozxjce34t VlabfSy9skbbjOCc7+pPTEIMJZ6DnJWJ8Tls26L1bPJOktyUqA6WbfcSdE5XkP+TedrGCq2d7vh W1FUc5Ckdw5p4AvwstmVNJ7Dn1qwEp9azATj9jACnpevL6C0bGzBwnK1bx9xMoMsQMsW9Cv5trw iS3aTYtWNFuyGqyO9MTupQaoGe+wHkLKXhHhi4MCbVqsT5tdHKcwybsCWsEYRcT+vrltgqmtLg/ Rp9xvlzaietwTrM+bG4SGWLkaC1rNT+x2WnISgsFBQ+BopDOXGr5R7HGjiuzhsT7DIkpePVePQq wnsulWs/aPpyiwhC34UjAf3PMpmEYQnVLNjaK8sP3GiUMbJ9S2fw== X-Received: by 2002:a17:90b:17ce:b0:36b:71e6:3de3 with SMTP id 98e67ed59e1d1-36c4fef326amr4942485a91.3.1780182758033; Sat, 30 May 2026 16:12:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 07/41] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Sat, 30 May 2026 16:11:55 -0700 Message-ID: <20260530231229.400441-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182839594158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 29 +++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 +++ target/arm/tcg/a64.decode | 3 +++ 4 files changed, 37 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 966f83d796..718463422b 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -7,3 +7,5 @@ DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index aad03b0817..0f3c279696 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -103,6 +103,14 @@ static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_f= n *f8fmt, return bfloat16_round_pack_canonical(&p, s); } =20 +static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -123,6 +131,27 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) clear_tail(vd, 16, simd_maxsz(desc)); } =20 +void HELPER(advsimd_fcvtl_hb)(void *vd, void *vn, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + float16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} + void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5c6e88e0bc..5266bbc413 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10726,6 +10726,9 @@ static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, return true; } =20 +TRANS_FEAT(F1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, f= alse) +TRANS_FEAT(F2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, t= rue) + TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) =20 diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index e30c7e5ca9..3c806259f9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1921,6 +1921,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +F1CVTL 0.10 1110 001 00001 01111 0 ..... ..... @qrr_h +F2CVTL 0.10 1110 011 00001 01111 0 ..... ..... @qrr_h + BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182985; cv=none; d=zohomail.com; s=zohoarc; b=L5QFQMYgsNmh6xjyR/kxlVUTVHv0VB6u1niBIApxhfxoMt8P2YN8cKTNK+4NnhEbnNupFDpzH4H42Hb9yO58EnAdoEMQL0jWiNzm9maazFIw9z7Q3unUo1cUXkXP9Bevyox1gAbkyxWx6Wy7B1bFbOb723+QhygLjVF9kFQ4cp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182985; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IzF/aqOR8nU7ylzc54YGA12ZwczKRZX6pgS4Dyl5Z5o=; b=Ay6XY31RQACyeiZNLFC6csfTHzUhgTdFD+xWDW4KhANYZ0k+rLj+dzpo1WmXMk6FXwSGV933+6BDb1MvvIWPZpXwY6JgSZQn8V8bxBOM17z4OkTnW5khKYZs8ANkVVVqv3D6Zwb6SvaJlXdgZ6hUJtG1dk1591n+lCzKjaI9hyU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182985511518.3837012728362; Sat, 30 May 2026 16:16:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrH-00006n-QK; Sat, 30 May 2026 19:12:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrC-0008UW-Eu for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:42 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrA-0007Tz-Kp for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:42 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-36d98b5e4dcso66304a91.2 for ; Sat, 30 May 2026 16:12:40 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182759; x=1780787559; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IzF/aqOR8nU7ylzc54YGA12ZwczKRZX6pgS4Dyl5Z5o=; b=dBpM1fT6Is0sxeugA08tptcvlofybIFSBnXYusj2dEUprAIrk31nL2U2GwY9r9MQfD QvF0ZypckCyMS9g+D2XbZOqzYAOCYA+P2SxkItY/xwzTCTKzrxKCDOZGxLNQeM2zL/B/ l5cYOVtSTih5UEWV6gvv0tC39yKWrZjCaXM1n4Rp0oo+cFNhk/fvvxEL/AM/1OuoiBgy MtLpp7JTvh5PDaMfhxZu3J8oTRcSefQkrFE3iCw571ip5GBDea2iZjKn2BlQzzFThKKL kMhi4gSpFfz/hPlYnSaoirLMP8wmRBOP2yTbOwktxXk1pAmzP+mmVYdg6XiGFSor3HsI 1pzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182759; x=1780787559; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IzF/aqOR8nU7ylzc54YGA12ZwczKRZX6pgS4Dyl5Z5o=; b=CcrEShMMyhdbBa6Xa+RabeGCD64dqu6RWWI5yK0xUf3QNFb0JqLSGGzjc+sKYjH5YR XrQDwxLd+T5XTZe3U218rBseEKCnnAs6zdPFDJWrleRgB+AzBrcAaurhSv9JikE2BDwM MX46T4aUAHc+VJ+ES/gssyhe8FZSKcF8floeaIIPqVUBy3TCZqys5FPGo/gVv/MnQjuI rCFE3hOaw+Pw2mIVIfo2PYYmM8Z5VZR0Fn349S1k6rdr0pAcsdOBzzXPnLlSSTrRy0El w8fFm87futJyjuH72YEIycotF1HvuDq7tsuRo7zcKCaWSjfS0sHI1oAQdrZ3xG+2QCgp WYFg== X-Gm-Message-State: AOJu0YwTQjzQcKkRvxIcBIMMyk3kpp5CybpBVq/ARFGLfye+UQdw7wwf 2XW2ZN4w4gf8vKo51kEaWs1eL0KTV/0we5ri+LvdVvODigGJTDp38DB/nfy/Hr8hzs3ShQI7njF C2nhJdM0= X-Gm-Gg: Acq92OFCAR9Iz+SWhysacRNTR4N+qWSg5m4BdszjM81jfLl8XJTRgWL9kfBopEYprb2 Fmzt5kDxtAvzUtK28gUvDsp0y9fznMdRGmDUoUdvaJwcML/EeGy6kj9ihgVkVC5/jUAAWhciZv+ 6Jb3V85asWKwZVFa4uomudA9fWR9/x+Unvrn2x2T3GMjxhlucjt8PgaDExebZQ7NmFrV+3c44dk L7ulvcfBnBiTqBw/hwOBXSnM/r6EtUHeQV65bqiw//8ZPA0hm/2dsiZTzpciED/1Lj7n4gacggY ZJRnn2bWWE4nAqnkOOuRuANwEv1Gc+gVBLINMIw/hi4/2xgKWI0iObLyCiT+Bbgc7ub/6Jx9M0x cHBmzoLU0IuEKy/ymFGV+4miO/YCRAp5tAjQvwP+EtZH+c7tghkhJADy6dRXAnQqgTlR5HYkcr+ satTuwDs8fmiDdbMQZo9MSTWsggtCoKlZKKYwdwUQ= X-Received: by 2002:a05:6a20:3ca7:b0:3a5:8542:61a4 with SMTP id adf61e73a8af0-3b42823c97bmr4942078637.25.1780182759163; Sat, 30 May 2026 16:12:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 08/41] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Sat, 30 May 2026 16:11:56 -0700 Message-ID: <20260530231229.400441-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182986116158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 9 +++++++++ target/arm/tcg/sve.decode | 5 +++++ 4 files changed, 31 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 718463422b..3021dafd44 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -9,3 +9,4 @@ DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, pt= r, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) +DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 0f3c279696..75c89203fe 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -168,6 +168,22 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) fp8_cvt_finish(env, &ctx); } =20 +void HELPER(sve2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 0b03afe7a1..66a40059a2 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4082,6 +4082,15 @@ static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, return true; } =20 +TRANS_FEAT_STREAMING_SME2(F1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, false) +TRANS_FEAT_STREAMING_SME2(F2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, false) +TRANS_FEAT_STREAMING_SME2(F1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, true) +TRANS_FEAT_STREAMING_SME2(F2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, true) + TRANS_FEAT_STREAMING_SME2(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, false, false) TRANS_FEAT_STREAMING_SME2(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e7984fa8e0..ca110f4bc1 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1091,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +F1CVT 01100101 00 001 000 001100 ..... ..... @rd_rn_e0 +F2CVT 01100101 00 001 000 001101 ..... ..... @rd_rn_e0 +F1CVTLT 01100101 00 001 001 001100 ..... ..... @rd_rn_e0 +F2CVTLT 01100101 00 001 001 001101 ..... ..... @rd_rn_e0 + BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183284; cv=none; d=zohomail.com; s=zohoarc; b=gUh46Q0gaJbIoNzx2DDQu+DIgZ7AZGLZgKjMP0KVvJ75c5tlc8yZv+s5LOXrTIhfKUCAbwBm162wRrMNWYrNn5VykzGfumd+AdM+5xkWhinXFAwXCWOcnnN9c1nlpHtX8tA3Zn1Qqk1NzyLuaVzcIRpdl2OExH8fgM/t/KxUeIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183284; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=bP5uzS+hjY+5q0YrjsXvxLnsbw8ZGLVxssgWRkb1pKmVUbzj7sjMmwbyZG2PoAow/bHydJhtBMc+eYsivJBFCPiacrDVfjRVXgSGSkz1HcfRZbrnZQxxPMj+ZsDeYrRYC0NvMSFJutlijaQP+fD6qz4KT9R6EcBXXsDAXEbDAxM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183284764702.4688732276765; Sat, 30 May 2026 16:21:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrH-000061-8N; Sat, 30 May 2026 19:12:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrD-0008V8-RE for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:43 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrC-0007UK-2i for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:43 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c858014845aso472600a12.1 for ; Sat, 30 May 2026 16:12:41 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182760; x=1780787560; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=me6e2GWnEGw81MUvqNkhdGOs0yq6TZTYl0kup1piT2luaTzvyx+JIJQxQeJl8fZnBu EDCzdmZFyY+D7RfWHaN+5OJ7HzmXBVKuWbnUcIyOwVvkL079AOW8gaOsims1Fk9wUgiD m+YF6+Bjehckfu81QsRmdtaZ429iVbyV0GuC6cgHdcYfiH5WSI3DUQ4ILAY8zvnjt1q7 HVNcxPoG/r4DwfbOAxJANkmaYz5W8VCtzZkS9cgpcQsKqtN9a408QqHicSsYCinLdzZv n9KGupcdkVUHU9OT7vEDwYUPmNh1SJXrdUVDeLI+fPidUWgkaSSzL8cYD6/2NwL8nNMQ RtUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182760; x=1780787560; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=hoZQ0BRLEHU4BigOBkUGkuTVBSCIrK+wWrlpVOpI6ixVeqSRxhLFWGDaIRAbRZAg39 i0TyvvB/S1m6GHxe0Lnh2Px8ovpeHNrettjJlr5LwnPYMMLsYpn4aXVwhCXQ9MxIL2tJ GaYcbU+20+R7wNZ8YU5sDF/YzjOc1Wq4aN7yYzsZJpREjfJ9XMy/VB/UQRgFo8sJBdgV 8bvkRCiCZgIod9HxZ+chwBeq0s2L8OvlUXhRAPENW0vYwqcMRZrWnov1GhMS2dA8hRPa xevOO2SP/LtWmXcMd6NSJ0Qxwa+sm8ePlVCFL0TINeVERvopF6Lzzt52ZYwvyycsBt6a fKxw== X-Gm-Message-State: AOJu0Yw98k7A74TR09aOE9F8rdpcAZ3Qmm9UA/d7st2uV7/CKPSYckfV mXa8dA9UKraguHcErSu21xhvkPsqVij/hLk/B00sMInjhyj2EUNKPOQ+2rePNabMvOz5k1dK/ue OL70woYI= X-Gm-Gg: Acq92OEIerfL6NCy4RHD6GWlOzzymLpvr7Bk510BVkIpKE5DbOQdK0S0pHOqZvE4you ELNXJYctL/SHXZLX9yb5EXT8U1nzuARA2roWdKV4QC1aPPsj0732FAc5eF9UeGanPu6pS4lvJQg GuuEXXLNzFy//jXerUSxuFfFa1jEiY8G+0nEF5YSTiVz2eaLKA/cx0CamRF2Auu9NVxKcHu4OKM NnXDFsP69P+YieHtvgXlccdMHCHQ5G8DvqYJaXl2DfG/2egtK+Qx3jL9BYzZBod/ixpRn8yOxIp DIZ5PxNORq/YYD62g77ixMuoSlRo5gaparw72MpNPf8rUpvoxsyyP3hBC6SBPYjvI9t6ixa9TGa fwk00iopgxhTc11gTT8n3VBUT4kttEsd4XZoZLI1anbovuYfaGsQGZFhdOMoEpsgSgX1iKuZohd WK+W9KHJkfJGNScDLDD6AIHw//ahphlw8eSYKfLnQ= X-Received: by 2002:a05:6300:6705:b0:395:acfc:b679 with SMTP id adf61e73a8af0-3b40fcdfaccmr8025229637.18.1780182760318; Sat, 30 May 2026 16:12:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 09/41] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Sat, 30 May 2026 16:11:57 -0700 Message-ID: <20260530231229.400441-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183287125154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 5 ++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 59 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3021dafd44..b5dc2b7064 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -10,3 +10,5 @@ DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 75c89203fe..e2330177ec 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -211,6 +211,33 @@ void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) fp8_cvt_finish(env, &ctx); } =20 +void HELPER(sme2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -230,3 +257,23 @@ void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_f16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_f16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 19a13a6506..c0fe77242b 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1546,6 +1546,11 @@ static bool do_f8cvt(DisasContext *s, arg_zz_n *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 0) +TRANS_FEAT(F2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 1) +TRANS_FEAT(F1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 0) +TRANS_FEAT(F2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 1) + TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index df9586c1a5..d6192eb59d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +F1CVT 11000001 001 00110 111000 ..... ....0 @zz_2x1 +F2CVT 11000001 101 00110 111000 ..... ....0 @zz_2x1 +F1CVTL 11000001 001 00110 111000 ..... ....1 @zz_2x1 +F2CVTL 11000001 101 00110 111000 ..... ....1 @zz_2x1 + BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182869; cv=none; d=zohomail.com; s=zohoarc; b=DMlyWDaqnfvDhhAlrBJU0bErvH3Jn7ZAK6k/ofeijBkqh66jIaxmFAOIjawUcxvCxMppWofsrp8ejfoRMaExXT9xHS6Q7IzDwsZVsJG7bSh4zrg7q0VtjmXosquCPZUEkxj8Y4JbYcI+iy1VUTF+bIMbBgJ7kcHChp7svyfSQdM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182869; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AscZLCSZTyLS/LXzvGRX+bhuvdq9fOXVwH/iZf+WUlk=; b=UeTw+TWxUqmPO450Gf5slPwuLSt4T1OelXIIDla30NOzUPl6SLGQT+oWSYgnUpjenqzF+0NubgAwPqVai6dRMlzEFoeS/QfenVHqeBb1DJ4r0pzUlQqftOFeo+N3nMgC7E2kwER03/NGrk2Nnma4iiCsgAveGFnPL7jZ76CWGu4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182869113904.9083373394814; Sat, 30 May 2026 16:14:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrI-00006x-68; Sat, 30 May 2026 19:12:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrF-00005C-Ib for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:45 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrD-0007Up-Jq for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:45 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c858cc9870aso208066a12.0 for ; Sat, 30 May 2026 16:12:43 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182762; x=1780787562; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AscZLCSZTyLS/LXzvGRX+bhuvdq9fOXVwH/iZf+WUlk=; b=tsFWNCxQ6dLF2/JbrvGjjU6mld0Wp+zL2W6i98mHoSq7A2B7D2RewChiWsTqf4TkdA eIrZeJgpRorYxahHzjoeAGEPcify/zpaLTT1ezESTy79Hx1OWJFxReBTSBuc20HmTTxG 6yTGAS4CS19Bd0jBAf+1rdXlUHGT4GswOOOY56M8TzrSQX4uhHYMh9FxPX9RTQiPSM2/ vBeX7JNvsNGLMRS6iO7kcnERzksNZmdrmy+2HZ/JIaaKS5ijbsg1f0Tf8YrB9eF0yysU ZA1ptAl0nRzq/WPmUZnr0vAzIo18V3OeZaRbjBtlXbw4WlO3SnGData5+lzKMTOWumv2 nTwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182762; x=1780787562; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AscZLCSZTyLS/LXzvGRX+bhuvdq9fOXVwH/iZf+WUlk=; b=FHSavJVyG4KQGHzwY5tGBiOHq6i4bJIkzqvVM0Ina7jDHAsPKtA11z2gvJaB2c3YpW dQiS9whlZUjlN29FGCM2xPfGFOe/2zR9p8Fzhd/8f7kAurhCFiYjpqftsSTYNxorPcV4 n8rhPTV/9mryAArupKqEsOpwc/WelV11/T2LZSOzClbbMMM1/OoS7KolVOi42Wob3YB7 v+8EtzbRNOr1MHKX2SZOUp2qz2rynJSEsgjjeyNrAhbFxx0OqD27C8kiCZtMFnTSMQJM QX9+lrbv4kMhYdFXIKvmwCuQB9wcPJQS+VGdjABD/fDoHQf2SedKXlmPrd1dIEkB2wKH XimQ== X-Gm-Message-State: AOJu0YyErfzh9gRY/Fzz7VzgEUuJSuIYYECjbuSGOO2xT06E/3cfF4/z FcEleEIP6ZybFpCZ2MDDEDrOiqyAxQxiJdNxfvQ8GhY4imjuwceqzNMaf02+cmtFOvBlX9k2cRe vMDgUYmU= X-Gm-Gg: Acq92OHP7MO88L4F0E8jDZ+sO0WCCw33Fsuch2gk8uCUG4PoS/zF997dQxNUmG3ewBY u6SBdvBW05E7izSFfwf1u+42MWBABvu8VRPqgylRDqI+qjFsEixv7WF4ym9i57SmuKzZM5T7jqm IJI8A7Ih3LvgUrSVDSVE0SIgrGuYl+3uMnjA9mm0SVBf6DHCSrV2SA39FEVtocBGyV7hG6tSGLL bMWmUiTXx/GApsIZksgi33Yr3l77bysoTtoBL4vGnWOis1PbERvOAdPZEqtmgUneUY5sOyBijBu yFJhoczR0JbqDpX5N76E2J3D5j7T5aB0CWd2np6SBIkIVsBLWZFT8TcnuVtFcfQbXQNHpEpf/+2 O2khEH7en12eY6Rho5ERAXyftR3UULUCandbGEp1qMQr2fJoRqh0SNKk7hW87dN06yEzoZxKL+4 pH9LE9XpeUK5qq/PlcypfRjTutPNUxw7MZnUlWs1c= X-Received: by 2002:a05:6a20:9395:b0:3a2:edff:2975 with SMTP id adf61e73a8af0-3b426b16620mr4582567637.25.1780182762096; Sat, 30 May 2026 16:12:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 10/41] target/arm: Implement BFCVTN for SVE Date: Sat, 30 May 2026 16:11:58 -0700 Message-ID: <20260530231229.400441-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182869910158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 92 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 3 ++ target/arm/tcg/sve.decode | 2 + 4 files changed, 99 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index b5dc2b7064..bbc8d69e28 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -12,3 +12,5 @@ DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index e2330177ec..ffeaf02f97 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -72,6 +72,17 @@ static FP8Context fp8_src_start(CPUARMState *env, uint32= _t desc, int scale_mask) return fp8_start(env, desc, f8fmt, scale); } =20 +static FP8Context fp8_dst_start(CPUARMState *env, uint32_t desc, bool is_f= 16) +{ + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D FIELD_EX64(fpmr, FPMR, F8D); + int scale =3D (is_f16 + ? FIELD_SEX64(fpmr, FPMR, NSCALE_F16) + : FIELD_SEX64(fpmr, FPMR, NSCALE)); + + return fp8_start(env, desc, f8fmt, scale); +} + /* * Invalid input format: we could take one of the usual set of * CONSTRAINED UNPREDICTABLE options for use of a reserved value, @@ -111,6 +122,64 @@ static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn= *f8fmt, return float16_round_pack_canonical(&p, s); } =20 +/* + * Invalid output format: we could take one of the usual set of + * CONSTRAINED UNPREDICTABLE options for use of a reserved value, + * but choose to take the additional option provided by the FPMR + * register specification, of setting the result to 0xff and + * signaling Invalid Operation. + */ +static uint8_t fcvt_fp8_invalid_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + float_raise(float_flag_invalid, s); + return 0xff; +} + +static uint8_t fcvt_fp8_e4m3_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + *p =3D parts64_scalbn(p, scale, s); + /* + * Saturating Inf -> Max handled in uncanon_e4m3_overflow + * because there is no infinity encoding. + */ + return float8_e4m3_round_pack_canonical(p, s, saturate); +} + +static uint8_t fcvt_fp8_e5m2_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + /* + * Because e5m2 has an infinity encoding, we need to handle + * saturation conversion of Inf -> Max manually. + */ + if (unlikely(p->cls =3D=3D float_class_inf)) { + if (saturate) { + /* maximum or minimum normal value for E5M2 */ + return 0x7b | (p->sign << 7); + } + } else { + *p =3D parts64_scalbn(p, scale, s); + } + return float8_e5m2_round_pack_canonical(p, s, saturate); +} + +typedef uint8_t fcvt_fp8_output_fn(FloatParts64 *, int, bool, float_status= *); + +static fcvt_fp8_output_fn * const fcvt_fp8_output_fmt[8] =3D { + [0 ... 7] =3D fcvt_fp8_invalid_output, + [OFP8_E5M2] =3D fcvt_fp8_e5m2_output, + [OFP8_E4M3] =3D fcvt_fp8_e4m3_output, +}; + +static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D bfloat16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -277,3 +346,26 @@ void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + for (size_t i =3D 0; i < nelem; ++i) { + bfloat16 e0 =3D n0[H2(i)]; + bfloat16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_b16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_b16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 66a40059a2..f3d9c8f01d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,9 @@ TRANS_FEAT_STREAMING_SME2(BF1CVTLT, aa64_sme2_or_sve2= _f8cvt, do_f8cvt, a, TRANS_FEAT_STREAMING_SME2(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_bfcvtn_bh, false, false) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index ca110f4bc1..b6ef8ed8de 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,8 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182878; cv=none; d=zohomail.com; s=zohoarc; b=TMqBF88YhGDiJ1jVJ0DMBXFBouuoZzbgBvj/iWq1etZuL3f/nfe0uBLZUjR3IRsRKS7+anZzCjca5V1KDo1BiKlzKpYW7ox+qm5VQXA7karRxy0I241vG4XErTUMB1wvuj0ChodHtfUbL4HytlhURL1OOQbYBZDhmWThrR7q3Wk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182878; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=mZSwsHdfW3MCwUSdf2FKOB/spK9j8loILhbxEjbmswfJD8jKvy0c47G35CGS+AbaWOLT4eO988vJW6oTXGHht8+S5rFo0mPFcbbGlsMvnCIqalnYeD6iXNz5Ybt05XQysRMNvfSCgln0AymgTCcxlWTEOz+/IroU2fx9k6bKxnY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182878747349.7944767671339; Sat, 30 May 2026 16:14:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrJ-00008N-L4; Sat, 30 May 2026 19:12:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrG-00005w-QN for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:46 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrE-0007VA-RI for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:46 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-36b8d414666so1818857a91.3 for ; Sat, 30 May 2026 16:12:44 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182763; x=1780787563; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=MORNCbyA5RdqHerO/LzpdUQMfwYbHhQ1WGYeS6bBRcwLF5gWQvXLb/Eu8/ZWCKXiD0 rpGVj9OQLfqqVEd5+A/c0Vj5FvkkF/NcNSnuFddgPiXSMbH5JVD6jjtscapLxoEhXxcq XXujTTQK62WkpgkRcMN+ailmFKXMInml3eHJTIiMEVgvZS0YzhLiIvQrkEcl1uQPexsR V07pYfDr53Q3UUI5MdteA4O+FcW5qI6rUW4nU4PvvLWBFhyZtd2w0Tbe/2sGhJvlhwYq l4mCf0DBkiZAASdnERvd4GM4rk8bOpAtswxSUSpoKORJ1xJJTJRvIxKb+kfCSS3hDGsT kbTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182763; x=1780787563; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=PXHiDSS6VJbez4ydiYmIJjcjlCKJFUmaWZt/5FQt1rx4vpyK7RkzN6rhO97a1ld7nX YjKSFbTVsEED/3rIu6pQfpxeU8mN101ohNS1vx9NCsCEBTnIsYhEQrQ9nmPLbR77Y6DO NcDmTghVAZqeyZ28awiQoMDJ5QTiKvC8yBcxsBPx4gRzyvIRPFrl0Ucx03I0fQVTBDRs klLHZYlsGo1P83vkPJBB37JrviNdyGjqrvCdnGo18/I3oNbTCGwglqa3RygtA9KGGCKZ xfGWnTgqq43nV3OOgY98br1KukfRIYlh9+ygnVP95wAzi78dfO53ZuVdYicYvpI1Rn4v e8Jg== X-Gm-Message-State: AOJu0YxsLH2RAo/StOelPvKSf57OCzyR1MmIPH6MtTyxsfggnntAyBNG umeIX9ojM2t9z7SX9/BPQt48YE7B99LuE9r3Q8FpnuqJmH60VuPdugJUSlgDjbKSUQFYhaJwy/q SFrLnsME= X-Gm-Gg: Acq92OGlD1j+TtMm6XqkW8P1TD0CaB4XqOXWrLiP4fsOKnptKuCU1Ba+gtG3Bfk/sns vpcXyIldaj6yTY/XEMI1TGlhVlRqXXlXH2c/ya5adJkFK4f3ojS/mksfk/zalV8XrZrZtM87T5r 7Tb90TJo8HP60e9rX1u+aRk1jfJ/fA1gQgohwahXFGkZuhb5UlfNTWVciBpSZaUpplgy9WmavTA PxocAUMTvJOKb0KotM8f5/J8Gv4WHw2YLZ2FnIiEBmnqRxm5+7wzv4KpGU+UVBQyDeU/ALLLJ/k OtuQnW/8QSqSuIPFPIzv8SnJXEsMo+eOje6nJOXGbuOHnyBVYP7OIHQCsP5VDUGOMM2jfP2u1L2 +JSIpBpoUX3fS37vq8cFgekQaSJN7OGyK553JXkGg6QRoDpxxc4EJ6HrvNQOynWXQ9QF6EfLqbU 7VIiyL4zahFIPLaIUYs6JfZFqu5tQ8jnGIIFKFHhs= X-Received: by 2002:a05:6a20:684a:b0:398:9379:d04d with SMTP id adf61e73a8af0-3b427efd407mr5482057637.24.1780182763414; Sat, 30 May 2026 16:12:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 11/41] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Sat, 30 May 2026 16:11:59 -0700 Message-ID: <20260530231229.400441-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182879934158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 37 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 +++++++++++++ target/arm/tcg/a64.decode | 2 ++ 4 files changed, 56 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index bbc8d69e28..6530d1a6da 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -14,3 +14,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ffeaf02f97..8e7982a888 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -180,6 +180,13 @@ static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_ou= tput_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -369,3 +376,33 @@ void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vd =3D=3D vm) { + m =3D memcpy(&scratch, vm, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i)] =3D fcvt_f16_to_fp8(n[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i) + nelem] =3D fcvt_f16_to_fp8(m[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5266bbc413..9415419f19 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6605,6 +6605,21 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale= [3] =3D { }; TRANS_FEAT(FSCALE, aa64_f8cvt, do_fp3_vector, a, 0, f_vector_fscale) =20 +static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + FPST_A64 << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 3c806259f9..b08895d917 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1212,6 +1212,8 @@ FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 +FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183297; cv=none; d=zohomail.com; s=zohoarc; b=Q1GxpIvr5/+UtQWwIlqPHMMCDwH2RIEQWjwlUNBKQIDjlIGab5eALRJiNoh5WoQJFPC6roJsVgKRINp1rVnalxPmnE0c2rZn5MzLjtO1Fr0BVzV5rwAI+FUCJjCzkb1Qv8gaFphh2KlrUfvYzYc41OmzVsuhXzkTjTIwFm45M10= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183297; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=EoLuhRiMRFe3CIWI81t0WTc43hRjAU/xHz5iQjxOclPktptLmiRlKiArJ8RyxNSher8AIkDi6q3KPFe0NC7Z3/UMx4jvH0iheN9PR7ychW7qI4GFCyFJ+a6zqwoMKcJA4TuOzeSnGmd95CkIIPP7AJfUaiiGybjkw7fhzzc0pUc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183297713222.27352425830168; Sat, 30 May 2026 16:21:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrK-00009C-N0; Sat, 30 May 2026 19:12:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrI-000070-A2 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:48 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrG-0007Ve-Gg for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:47 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2c0aa420401so3714005ad.3 for ; Sat, 30 May 2026 16:12:46 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182765; x=1780787565; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=Xef54h2s7JQl9sVQqyQfU9oLfTcBA7Zg0Z++BUNGNVmN7Q8nXwSnoG+msKV7PJ+UV7 p3UUN5CiCtF/8pS1PAL2KZOENsFuCSQ6hUxewNJJOQW5tTTJDhFuSPuoww8rzK0Yf7Pd 89picIKURBPLgxjEkhr4W1O1VlK9ZmlTPWdTP5txaYjHgox/uqPt1jPUxl7EG6JdM4QZ yGB+VKyQ1aWQvt9W4CyD/jQOtD/OAxDJSeRh+P4kWQQYHS++V4t5K40qTIJLgKpB/4bD dwR2rj9WO8r1dyJxHCGYNF/Q1eGQEFspN7q6Gll/33mQSrBz1gqUy5OOKL881UJuA/dy 3dTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182765; x=1780787565; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=lAKIDA5E0QuEaXO0EMVl7surpg4Qhd4sCyBzskgIVy3BLwphGK98kRv8rBFeu7oS5K YRtk659UZjIlHe9HHVqXrBaMpuJmjODyKUKjcPs5nGMa7ZMY1MDyFQ3O5xj1/Ut892EO WOeKCsToTXigz8npMhe14nxLXq/X2OLXlgfwD9Vu5a1quLNXs/hbe9rL0zvNIo5pSNBc SvJTJarM7L4dMlg/Y3n2uoDNn8jgBLU6DyoEpiIW9gw+VD4cV1JLP8YWEnsbCIfFRtAG vFRYLmfTAuGgcE4hSnpupm9wkYrZR0ffN1wQtURdWoQQ7J7uINwDlIYSwi2coTUa2Tpi 3Y9w== X-Gm-Message-State: AOJu0YweyYFJSWCpaTyyCBmLOHi6rzp9sui7XY3m5TiTIdMcsvB6NS5h pAHkR9vr+SgV5YoGIW7xWDJtplKRAY/wgGklC8hN4C99Cfb1E83niIf2gEki2JMcA00qrDSuFiB soXnkGPA= X-Gm-Gg: Acq92OH18F6qDepoOQfTzO8fWr/1P4z2FPQv0SGOLGIHOZF5mxn7n/i+vS9G60gUA2q sCvvAKqcNlEWGoG7qk2t5jROLAvsiRNvyqJB4aosGo7sYG5SVpiLwkPXmMq3t2AsnQU1Qax4rlE 0x+8avm6FOyfIRwKUdwv3zGqryVNSQ9VW16Ods6qKj1L0I7nEheGiMT8XEeGJGJSrFTuKL4vHIu vS2VWikRFSzOWifBUsHElvQB5cZcvzJEpNO4CCKNFIG3dCKI9jw4aGBy4d9jpztqy7cPIaWPTkR Ru6vLnkTew94iSXIkM6V0JQPu5ROucOPfrzZkx/hj6FnlvbZkmoxqgSxK6LtWUoBOUuxk1QPftz rmZPnrxZxx+C6eBPdbwrfZC8/D5DoJc6FJHHuI/3cauGNEiYXL4JdTSmjvRHA4QThlDI7cFrHoF C6U6QZwL3mwFHQssPdkiDbNbZQVgXWdSogUpECN+c= X-Received: by 2002:a17:903:22c5:b0:2c0:c625:4019 with SMTP id d9443c01a7336-2c0c6254474mr6420025ad.25.1780182764765; Sat, 30 May 2026 16:12:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 12/41] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Sat, 30 May 2026 16:12:00 -0700 Message-ID: <20260530231229.400441-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183298632158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 33 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 ++++++++++++++++ target/arm/tcg/a64.decode | 1 + 4 files changed, 52 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 6530d1a6da..023a49e12f 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,3 +16,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) + +DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 8e7982a888..0b86ed9eb9 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -187,6 +187,13 @@ static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_out= put_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f32_to_fp8(float32 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float32_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -406,3 +413,29 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, fp8_cvt_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn, *m =3D vm, scratch[4]; + uint8_t *d =3D vd + 8 * ctx.high; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + if (vd =3D=3D vm) { + m =3D memcpy(scratch, vm, 16); + } + + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 0)] =3D fcvt_f32_to_fp8(n[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 4)] =3D fcvt_f32_to_fp8(m[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 9415419f19..75be92ce15 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6620,6 +6620,22 @@ static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr= _e *a) return true; } =20 +static bool trans_FCVTN_bs(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + (a->q << 1) | FPST_A64 << 2, + gen_helper_advsimd_fcvt_bs); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index b08895d917..610047846f 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1213,6 +1213,7 @@ FSCALE 0.10 1110 110 ..... 00111 1 ..... ...= .. @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h +FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182891; cv=none; d=zohomail.com; s=zohoarc; b=IoLTe22g4hmjpsKxz8cQBWnltvxE2ViXVHIGiZQCRwHrsVSgFwSmOC9WP530VM4ouw0Vxc6hQA46JRQSK0Yg733FlGlCw3kSL+IMlZmbFU3Uj+LSPDZ7+3qyGoIdHVzPRQkM+6asdL8dGa2FtW9wSbDPtrW4EUjVZ7/LNgkmPok= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182891; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xE3KMG5cW4IY3yVG0QDZhmffEgJg5P3OLmBBtd/P8a8=; b=SWT1HmyxUZX8gPJL7Hj+aVq1XGwGxTHMTBkix+nCuM1tIu0QWK0pOaJqJ2wFeaQfuoVydGf0f3F+nB/dnrJ42QQahGZS3rlb6K6VjFw4OnijxloInFjra7z7pienlQpTFWtMU4Ecxnmu73Py7idDSyiMIyfiwEdeln/2D8fi89s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182891190353.3464487782213; Sat, 30 May 2026 16:14:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrL-0000AP-NH; Sat, 30 May 2026 19:12:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrI-00007X-Tp for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:48 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrH-0007Vr-3J for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:48 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c8588ec1b44so602632a12.1 for ; Sat, 30 May 2026 16:12:46 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182766; x=1780787566; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xE3KMG5cW4IY3yVG0QDZhmffEgJg5P3OLmBBtd/P8a8=; b=LEEYh6nqQiIut+0aDzSZvZ8ZP0L3TyfjRfiIzLahjZath1XFscGPZk+4w22+gli4Od qcNQmCdwxy1tOILt0hpocm2GDE18HzABb9uQ6UD5qR1u6bB9RVslDAEwRFVhSyiVDIpy d2BnlMPpdyPTYWBQRQFPf8OuhIWIExE5dhwcdixnpCqXa4z/5kVhI2cCI60Tjxe/v1hL v6Zwav5LxMHzJs4o2/6zURaiClFMIx7uVtmQCKNpNyU9QUa3SGXNd2BkUEb3xXIV2rj5 j+XjcZXoRCg0ydxwERwHSJ/1sksAAczoX3EkD7wZSOjbd3txfBHdgpIkzTAQ3TJOZnNF yi2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182766; x=1780787566; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xE3KMG5cW4IY3yVG0QDZhmffEgJg5P3OLmBBtd/P8a8=; b=r93FfAE7WjAOunwBQfchkt7Bog7pTa0MnGO+SSb5FaFGqTsFWAV4nXY2+lgySp2jzw Mad8Q1YGrOwNV3exBsKYQ7KQ4IqVZqmQAzvpX0uv+S0dq8+Q0MYVZVGnwf4BJ2VHIRvn 09K4Ng9mORsfnIPyxY9ONsPr6VzhEx5z//7lDxDNdTdSdbWUfXVHm196v1Z5LdalTZw9 lavere8zVH77Hk+mN00rPYYLad5DLTM1Of2tZQZfK3CEzi/2HnmkBD77SsjxFAswTt5F Id38IsX9KMyHl4CSJU3UPQ8EYZ6BohttWk+HHk+8FsHfHxMqfRfwXQX1wGnSa5xQsvf+ I1qw== X-Gm-Message-State: AOJu0YwkCsXW8H6A/g9BDUnX3ggh7xabqIn9uZqCcKVzwTuW011mADqy ioLhdcN2nLHV3BS3PITZVjh6OXxllKZLwAKxfM6aPmngDuJDic8FCylyK3gCuSbuf+DTWEab/HM 2VZzAvXQ= X-Gm-Gg: Acq92OGFDClMPIRWrldfkIpYNxYBbRDESu7vvTJJDtOa4G7sobTLcv4lonb2LSBFKue FOtPC2Ud8QQj2qmalzLt70x36BBUkKy9C/hwQIifsSktYYmU3Tj6esOy6ZK4r/C0r37ydmLtmD6 Of/9y9lAWQb8Wm8xkNYCR7NGPC1H3874VZmvMU2Fs2NylxNbeFtLIUrD5Lj0MNoefYtEN8w5cUV hH131jLuYwDrvnK0lN2GAGcEav5tX4AenyyzLeU+ZXaS91EJ+jE97inFei6gmv08IqEC0lrIZ7W slhuzNLMuVFcrj274T9+OafHwbUKSC8it8lYsZK7zgYoyQHwVXUSxBNUTm3EtU+qc8+6rKuX0q4 BXrLw2QYuls2vYPxmsg0Sb5Y0qpj9vi9oqtV8HqTgAAirCSSsruqdeHKU8XxcFU5IZeTqpef8qw gsHaj1QbRn1HYKkI8qSPlhHgEFqsTAXT4nRmSYuS8= X-Received: by 2002:a05:6a20:e68e:b0:398:919a:ddf5 with SMTP id adf61e73a8af0-3b4280a3e46mr5083658637.24.1780182765586; Sat, 30 May 2026 16:12:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 13/41] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Sat, 30 May 2026 16:12:01 -0700 Message-ID: <20260530231229.400441-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182891815158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 23 +++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 4 files changed, 27 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 023a49e12f..e67fb191c2 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,5 +16,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 0b86ed9eb9..8295725b83 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -414,6 +414,29 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, clear_tail(vd, oprsz, simd_maxsz(desc)); } =20 +void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + float16 e0 =3D n0[H2(i)]; + float16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_f16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_f16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index f3d9c8f01d..4ae1d2a75a 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,8 @@ TRANS_FEAT_STREAMING_SME2(BF1CVTLT, aa64_sme2_or_sve2= _f8cvt, do_f8cvt, a, TRANS_FEAT_STREAMING_SME2(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) =20 diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index b6ef8ed8de..806953bc35 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,7 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183109; cv=none; d=zohomail.com; s=zohoarc; b=K/V2JliTYXgA3ISf4aqW0CpNqI2D+ZqbGfxRddd2yqbCN2gkeaC3yVIA3MIx4nKtqEwRTbGLNoajbC3ZUSD6C64nJDKyXQazAVI1z6Jl+2nEZcAk1YoRi1QHbqJAZkZFO0I2DcgvAy78DkAtxbTExy0jVykBWtxAvVZektyXh3w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183109; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5gFw1Ev95FpbZU9VWkw0gz30Ij2Ve1FFHR5p004lk4A=; b=RPZoIWBt4Om1fLBiEkq8XFxur42ORdjtMbcaPSWGWy2Mqmz/DldazMEKH7JhEnkJz8O6Ld0M4Yl3NaAlz/6l96YIeAcJfg4N9vJRYYt+hMx++9HZxBUQuBxlve/7Yvrcyk31CIRrv1Yg3t7v4+4SbJxq3ChTCXFNTYmmJl5QMjo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183109906574.4582473304628; Sat, 30 May 2026 16:18:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrN-0000Bs-Q9; Sat, 30 May 2026 19:12:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrJ-00008a-PW for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:49 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrH-0007W9-Qp for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:49 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-36b7b7b7a80so1479482a91.1 for ; Sat, 30 May 2026 16:12:47 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182766; x=1780787566; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5gFw1Ev95FpbZU9VWkw0gz30Ij2Ve1FFHR5p004lk4A=; b=OHSqnjc3wXCnAXcQ6NlMT3awYT967qQlhviudLAGaeULLvkTPVoGMqdjy2nNwvlnAa RbtJ5bRH8o1Fpctu7wkbi04Zvyeiy/0NiCzZvUiMxIA2dkscHOAvm7WO8UoSEP8uvxj+ C+6jUWe9g6NxCQ3XO/jkMi+oM8WpYJ/MWeTbRNeH4RkwQmNUVarCyhVRjhPZB6Zjoq+t zQJwPE/HhdNeUdJYz8KXD3XBoN0GC7BoBY9UEmvLR/0i0mm8P3U+Zl+vfMYcf6V/RPj0 bsQaXvTXToXTJo4GVEN1jx3DVUuiTh7nbObZMhOcINoctC48vlqKpCZYWXWSvDf4xLAP k6UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182766; x=1780787566; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5gFw1Ev95FpbZU9VWkw0gz30Ij2Ve1FFHR5p004lk4A=; b=LLzjL3g4h5IdvlAKGVT3FY/34ZaY1SlVeUrqwnoIzRsUqpc/IWPGQ4gQVLVvgkZDaJ 520OtJpyps7UV/nwWGa1QiDqTyY3DaMkR+3ZsGBpGRqcfgqM13NL4h/Yl3FvU/ejEw3i V5B+aOWNzQSQ06YHiWAkTheRtDWR/s34dgAnOYOYKlI1T0P8ZQtYCaH4p7hkQqr/HnEK EJe1KWUbk1mLl0ihUDZCWTqyJybif6b/f51r/atxPCeXRHFrUG27Dz+ZC2B46tD83zwu 9gZ8yJMPpe0OcI/mdtcBxOZ1kitEja2JbxcoxrmovVsHf+/vh/dQERCP8IFi9GRmlGPO 5/EQ== X-Gm-Message-State: AOJu0Yxj9Q8971dBZ1T1OfwMWGgug3D+KORF7tKzOwEpto8gc9vgsSsx aFIejS7HoFgtf6lf8lT9zrYXWCNpqzmLAB6rVN3XBbUF0b1rttWjrFCGjqBFXp9722RalEqFF+l RxgBRZ+g= X-Gm-Gg: Acq92OFR0R3TEs/xZfmmAJg/1BWRLJtMDnK5OMBjE08j71BgJoCVaDSXDqJGptu9fxa wsMbuvRaDVd/T4VwgP4cYPgu7twpDegjgEiEB0wKxQ5KM4Qb9F8brkmy4YmsyWBHx81QTDbf6J8 BgTccfyjvIizjs3D5LLOtxYwAbA6yLoZT6lEyQ5/3qSd/31NPWHjXcUBWQMdqvH9kNc9DULBKex U+GwpqPo8FdnN9RgsD6xrOq957i93t7hsssVrKlDBwobFXR2eFZKNnFGXNRBjBV1hWJkeYrLvWY QPj6gQh+smiX7VoF1vkYBJ1b2n6ZAHTuqscm4vboSM7lY82PTEtls9UT893hjwqomf3wi40drTy wdpUfH5TjbpWvmumzAHiye9oHTWzHazkD7yR3YtnVHxQ88RVqAIS6qc/uCTn0izBTtOyUdaBQZ3 PCFHchGs0UaAM/wB45n+cy2X+MFd8aknxnppK6BwU= X-Received: by 2002:a17:903:2452:b0:2b2:ec33:cf15 with SMTP id d9443c01a7336-2bf2048bfc7mr86587825ad.7.1780182766394; Sat, 30 May 2026 16:12:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 14/41] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Sat, 30 May 2026 16:12:02 -0700 Message-ID: <20260530231229.400441-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183110758158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 4 +++ target/arm/tcg/sve.decode | 2 ++ 4 files changed, 55 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index e67fb191c2..5863a6dbb8 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -19,3 +19,5 @@ DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) +DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 8295725b83..3bd57ff350 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -462,3 +462,50 @@ void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void = *vm, fp8_cvt_finish(env, &ctx); clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); } + +void HELPER(sve2_fcvtnb_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint16_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + /* Zero-extend uint8_t to clear the odd lanes. */ + d[H2(2 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 4ae1d2a75a..31e120af68 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4104,6 +4104,10 @@ TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) +TRANS_FEAT(FCVTNB, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnb_bs, false, false) +TRANS_FEAT(FCVTNT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnt_bs, false, false) =20 /* *** SVE Floating Point Compare with Zero Group diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 806953bc35..72755b27af 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1103,6 +1103,8 @@ BF2CVTLT 01100101 00 001 001 001111 ..... ....= . @rd_rn_e0 =20 FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 +FCVTNB 01100101 00 001 010 001101 ....0 ..... @rd_rnx2 e= sz=3D2 +FCVTNT 01100101 00 001 010 001111 ....0 ..... @rd_rnx2 e= sz=3D2 =20 ### SVE FP Compare with Zero Group =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183313; cv=none; d=zohomail.com; s=zohoarc; b=FtmBcxRqRwG/ND09CgO+7je1eKXYfjejTiLbZ62Oca+IUliDqO7L6ZAHaA7S+XJG0gt8YHdIbpmQ7WMJqC58+4ksg7+9Bhoi+A5mF18cAmixXkLGHrTLpt8m6mWJREQ35At7ROpbWxfd1AX+w5un/rxUB/5vXfgetXl5xOoRmNU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183313; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=RjCaDAWTq11QXuPmAjlIL8pD60TT+jnJ/+xKqS2f8M1biZ1PQGyoyGUXL7p8TqHlwSJYFtZhpw6kNtkeG0+H5FmkbIhvSIGbs1vHBI6W4wDX4BbLYrMHlwxpgtDXDG022wzgYCHdpaaIV5RgD+bLbx/zdmncgY2z227H+mylRoc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183313654258.0907805452782; Sat, 30 May 2026 16:21:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrN-0000BY-HP; Sat, 30 May 2026 19:12:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrK-00009e-VP for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:51 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrJ-0007WU-AQ for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:50 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0aa420401so3714155ad.3 for ; Sat, 30 May 2026 16:12:48 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182768; x=1780787568; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=fL6XRbQYdO02mVigChyYnbKTNt027W9YaYE26SK+gFIFUwM12C5+1llevInnrZxUT0 GO5fVs437igSrwq2P9pvZZtUhPmCGnpsQol7iLwon5/F8KdJ+1LIc1oyjjE32PWOfBrV LSUHFgyqq1tQd4Yq2mpQNUfmaZUfeRIAFzExUyXnuoS3T3t1q475hbanrv5GFcrn0trR D+kZjCVL5x0v2vI11QykID4aW+7TBT9p5ZLXX8cRnGQkoJcMANQW7cATLtvimORktoy1 jH8A6W6vuVtI+S05u726VF6Tcy7utYjbPITgECLj16oofbqpXDDVqdl5nMBigwVwI6OZ xrKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182768; x=1780787568; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=fru2TRfwFnGFaoiNWmFKEfe6olIPrrBDFRfxEGHTpp/s8IABQh4PwCUjt041W+j8dl xw0WNvpl6DiXwni3qnsJ00wp6MmWWOH2fWh9biwcUSAzn6on14qw+l9DJ8hXtdHpdjjB sKxPUPAdZfELY+sKa4MeW5aHzo4l9I8T6DpgKw6DGjN9zLgtT8DUXri4jlLHcrT/kVai otASK1wFOJoLUr2JlEQ5Vp/Cp71LQwR7cmaD2TQ9yVYxGC58oukcMtTbLR8oe9jUdX0h aqlXHs188vDGkMJQRi9q1nk+GsEfIybco9gqQn72uoJrfwqlqvUioeddfIi2ZhfAjmzz Ho4Q== X-Gm-Message-State: AOJu0Yy1t3OQfi6B+9mPQX9TThM9mEZGBkQp9QsZxCosF1ym6Yp1OsKy hwLBIgLCCbK7t+Tc2QSq0gTxw2vOh/OL1lESWeywnU4Wfabbc7e5uuZhHHJD+ZyWUaWQ4aLimCB uC8ZXVRw= X-Gm-Gg: Acq92OERQZmX7fk9xx/AnS5HsvB5cIkbe9zTxu2rLUUkktNI5H0KmN47RkmveKrdoGA QVp8TPB7PD7hSK+6qHCXA6c+tx8OHHsQP+rPMSNIIO6PQRQlXlCWQ7z4CHT79jzb5AVr37Qc00v qPywNAzaOtnPtimYOKtPsHuu6NBEsHcz1hMTIbuZ8nBgNKXP7XmrROS6w9W+ZDMEDq6/1rk2ljz KSIkQ6MahnwCz8G/4JnkZTwd/0Tlv39lhPN44FrQvAudtYSaXR6KmLc1eDr5QCj7raT++aopHDH sJm6ZT7jAHoOwVjrfNoBOe8ceNl0Ezyrf6s3Eqhzw6MTGkYbDwaHYBMZjY3xWlh9jgZepLSm/Fd 11v+RIWyklwD14tmD4viV/0gnxzrlnGXbZsxYN1Ffo6yF0wAz0XuJHJOaRqepF24wLJZYuuCcGp oUlv2OdCY+wQjvdKV2EcRQY99bkidBAUJg8nfLvHc= X-Received: by 2002:a05:6a21:3a83:b0:3a2:d838:bfca with SMTP id adf61e73a8af0-3b427be8509mr5460367637.3.1780182767605; Sat, 30 May 2026 16:12:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 15/41] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Sat, 30 May 2026 16:12:03 -0700 Message-ID: <20260530231229.400441-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183315507154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 16 ++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 2 files changed, 18 insertions(+) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index c0fe77242b..49eee95d88 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1556,6 +1556,22 @@ TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen= _helper_sme2_bfcvt_hb, 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) =20 +static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *a) +{ + if (!dc_isar_feature(aa64_sme2_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + vec_full_reg_offset(s, a->zn + 1), + tcg_env, svl, svl, + FPST_ZA << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index d6192eb59d..a02bcc0e22 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -863,6 +863,8 @@ BF2CVT 11000001 111 00110 111000 ..... ....0 = @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 =20 +FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182846; cv=none; d=zohomail.com; s=zohoarc; b=fxpGm1O2cmXfPuKlF7Z4+SdU67sbWp8gXNFaHo6DeFbFmiO6hrswpr8lkhQ+5zN6ynYwgcgeiteZ2X+KRJhccbAJYeKuB7LoulfWgz5epAOZKLQRO7oh21Bxr3EQbjgPVt54AUmTgVfZjRAeQKQCG/SkQiUS8cKcIzNNUoAzuwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182846; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=CqB3Fs3U7A3JP0U3EAr49bV2sNQrg+prR6dt0GFbxWCeOmt70pgvFLVv/C1CdWGGS8sYC32HmavoEQ6O40zTqRs5TBa1GQNMobzM77HV+LQE7a0Kei0qHzqWMpcUcuxcsyovE1CnWpANKuePYcHKVFHWIBfs2xsvHvL71/qxGik= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182846644247.45783786963216; Sat, 30 May 2026 16:14:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrO-0000CE-0W; Sat, 30 May 2026 19:12:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrM-0000Aw-CV for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:52 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrK-0007X1-KC for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:52 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2bf02708e8fso21742775ad.2 for ; Sat, 30 May 2026 16:12:50 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182769; x=1780787569; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=Zc8uI/QPjtwgWAfbz0LJTp1KtwU60KdbKezxAfWuYGT0ZCj4m5LxbRaSypyzvEYW6E NW5SISbXvNN/uDH5HMryK/rTWe3+bdt9/7rpg0cVF1ItxLGgCC6TdhAAABNFWRkeb0/t y2r2mpNnqTsFGyzAcqnXvrK/EKjNIKpcKg297ETF134WExG+vxjCIt5oOXtQ52Qm5ut8 UGiIkrQWM8PFLk39mfzYAp9EE0EVymBpyzwGP7x62Q0vZN/czlsFj2deFLpKMds/CzyR LSPRtH+L9o2kzBcj8eVf5Mq9F4nTOZ3sb1ogccadmRyTvK57eY/4WAtksjKVbOHkH8Fg 80jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182769; x=1780787569; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=LPhxSrptbCgF9r7Z3Azu2v7fUm/6lt7xfXK70tQOSbiL7XSUiKE/zJWc73tqbEh4Ev l2FySuzEUoLND+nC0DrIPPk2nPVdV09XJK9x691zKuCYNZKeU9Wzj73szscmEH2vuH4U yTN6qrB+47QWFL73t30JxBOBatQ4iXo5YVHqBXNFhG9xvaFNWdfXCpUMipY9E64d84rL mA4CJSLN8E1zbN/xHMwqlxwjSGdpWI7UiUWNT7qwEsZrHrftH5EpHD1ClEAoUV4ivS4f lEqTeoyv2hLsYsn//VLzMG34M0Ki9GrsrjRwEy0Xx/JqpG/cxiJSokPp9JZdf3zkM0Nl i86Q== X-Gm-Message-State: AOJu0YzBJoV0qaBKSjpATJq29iEbyY7G0PkN0Ia1Ti4J2lawnASooZyI Unr7BvBOgDV+znRCP4OuoBY8Mpuq6jKeEzohZnYp0eZRw1jz3Nk2MB8g0iRciQ9XCBVj2SLHSig y136c9S0= X-Gm-Gg: Acq92OFQlNVQJt0QpUzAc2S2QMDrgCHaRQ+HfcnndQkIjra2vIB6PVKt/Bc/LIIFRye 1HMX6texkFgMb9Bd12qVAJ5CO7qecdqfQ9mHvFRmwok0n8r//0O1deavLTRwy53/P37ta++KcSG kti59Axg5vACjBoXOEWhklU03au/uuF4BEeBBjDIEglCQrMZcDAMY5Ohg0eWztuoEbrVJDuVKpt QFjSg0lFLohkM8QM5rVpCE1Wx6M2TwZqLQ2tzXm2sRYnT38unJGOx49FwATIn4BFEAVSd9wOI7F CmEfMPtpRXakAsDN0C95sIKnPd6tWPbOpEbJnNM6KgzZIzlVpNlQlys6JMW+ZLTbWOwN4ws5wO/ zqqnArr0UrtJPjiNL3Yr+5pLk+DHWPCE/pPM3xydl11zS+7LItbhkSpFnIkd7AXZ25Go5Iopq4H 4ve1ABbL3Q/9ymwr+LMJnKFB2VN/q4T92Wcbuh7Eg= X-Received: by 2002:a05:6a21:2d43:b0:3b2:b0f7:50f with SMTP id adf61e73a8af0-3b427fc9892mr5455003637.41.1780182769007; Sat, 30 May 2026 16:12:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 16/41] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Sat, 30 May 2026 16:12:04 -0700 Message-ID: <20260530231229.400441-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182849073154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 59 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 ++ target/arm/tcg/sme.decode | 3 ++ 4 files changed, 67 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5863a6dbb8..36ae977431 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -21,3 +21,5 @@ DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 3bd57ff350..a39dc6f859 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -509,3 +509,62 @@ void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_fcvt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + ARMVectorReg scratch[4]; + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + size_t stride =3D sizeof(ARMVectorReg) / 4; + + if (vectors_overlap(vd, 1, vn, 4)) { + n =3D memcpy(scratch, vn, sizeof(scratch)); + } + + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + d[H1(i + nelem * j)] =3D fcvt_f32_to_fp8(n[H4(i) + stride * j], + output_fmt, ctx.scale, + osc, &ctx.stat); + } + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint32_t *n2 =3D vn + sizeof(ARMVectorReg) * 2; + uint32_t *n3 =3D vn + sizeof(ARMVectorReg) * 3; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + float32 e2 =3D n2[H4(i)]; + float32 e3 =3D n3[H4(i)]; + + d[H1(4 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D fcvt_f32_to_fp8(e2, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e3, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 49eee95d88..76bbacfb6e 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1572,6 +1572,9 @@ static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *= a) return true; } =20 +TRANS_FEAT(FCVT_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_bs,= 0) +TRANS_FEAT(FCVTN_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtn_b= s, 0) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index a02bcc0e22..2b9e41a75a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -865,6 +865,9 @@ BF2CVTL 11000001 111 00110 111000 ..... ....1 = @zz_2x1 =20 FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 =20 +FCVT_bs 11000001 001 10100 111000 ...00 ..... @zz_1x4 +FCVTN_bs 11000001 001 10100 111000 ...01 ..... @zz_1x4 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182947; cv=none; d=zohomail.com; s=zohoarc; b=ZyOZNIHJSYrrD4Get8vHEJ/YAElkchVh96PP3ZEwZGugZ2TmacHFP++ZegdKjHP9F3MuDwD5UUWH28oGZtb3ijsi+3Pec3HKbzrFvi9bI5Q43zNGb581KGIuz6y5SsqogR/oXY4AIhm47miHOMztEu1UkHvcqh8t16G+GIcGwHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182947; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VRGosC761KgnKiRjgSsWPLQk+K1SoT9RXWS7NWkWlF0=; b=h0ezCmIz+MZo/OqFFdsecgjdayx78fJAL4mwnM4oPMK5zSYZOofIY+pLvXM6KJshTX+3N8T0nI19JsyKAVong+a3QCjYmAkbTgi83Kqtrtkvya6kkZ9CEOpmvJgkyydeqrESonZYRQmKI+fuqzYgtbUmqId5H0/XZmM9njZlPpA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182947244262.80739073414384; Sat, 30 May 2026 16:15:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrP-0000E6-2P; Sat, 30 May 2026 19:12:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrN-0000BG-0l for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:53 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrL-0007XI-3w for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:52 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-36d5fd50d20so575765a91.1 for ; Sat, 30 May 2026 16:12:50 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182770; x=1780787570; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VRGosC761KgnKiRjgSsWPLQk+K1SoT9RXWS7NWkWlF0=; b=IK8bLFqmNL8GgWNbvwwpadDcmLAG/qE9IKHP/c4aNHtYeTBmdWYyTixYX/gm6uPiAO irMvjkwb39+lKwioO5HNRz0E3DmbBe4yr4/tV8jLmzDlIFpQpYNHUdXFn3LJrA0E6Dsu neNxnSMtNICfgtPfHX8iXUruO+a1aMemfxWkE6UgkQwRdQvXYH1lRrhDcVDV5oRYuc8y I+Jt+jc/CxZsxl7ENhJRtSqZeRLSmQ+N3kOCMhuh/F8THVaxzdQg6dLHpBY7T0AsPTCG L/6oYGRZVH8o3D1evsWIMrN5kPIhYAPtcYxsQ/kwwRstSahhPmIi6SRod+HyZ6SWhnqQ jmiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182770; x=1780787570; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VRGosC761KgnKiRjgSsWPLQk+K1SoT9RXWS7NWkWlF0=; b=pjGrd2GjDguJ3PLvqU7eUWJoSkKnZtQ3UGRf/jN3/EkEzDAI1bdFGvPQQQRph+5/QF 3qnV+69fvynQzmaBkRgOYtyn4LIGuPC1dr/QNPdlRta0rfhzXBEvl+YXcPV5leo+dFwz WSkZ49O/iIjj5gtZNd1eUFnjaysIEnesWOsgPaNmrf85qCPyV6SXxQCCJANTIA+hrQta i9Ohxi9b8RgD7s1soOYr8TN58D2WrL9zUtKsKHSpxn6d3CRUKLq0kuzuk22W04BMq+Zz +xjmr2p9HXXp34DMSkMeXo3GB5z2lI14vJRY9zjKxEcOVNlHZas0eheu0MJALGTvaVwI lSQA== X-Gm-Message-State: AOJu0YwzvpHonpYhB3eCP0fHqjzPnyeadyx+kLCeZo1oBeIuViRetph8 SnBJBGprYzA+EMpLQbkH6nbUtS5LDPJVf++IXVsMxmqh/fWv05aKMmmebRVhibwWyQtyXhtJjl9 9IMxYG54= X-Gm-Gg: Acq92OEwqkIEmxpQ1gHEcu2OhU5XG0Sk1pAFkCuhkLDVhJMffatKPzqRHCNKb/2Y24w LiVp/jwx3lXQj6wO/iiyyvciC9e1eG/GI0Mcd3nnG0gnWgyXAA0RZ/FFnGPVw/X2ECZXhUGtYZ5 M5faqF9+Wmxdbx/wkgiMSeiYjNJcUiTQk6JwcVO3qfrnsyologJ+lG7RUDDYa2g5ECld6xz1l3o hg31yAcyab3Bd7fmoqQ2qMSyegmQbiwkQtGSB/bOZLkHYXwyQzSL1FZOn2I29ZoZ4zudb0u+JDP ntnxN03I2CBQM5ZDk63hyHko+pz9krdna0NMlev/qFZzBurq4HL5Iz4JwMvqNU9ErXp24QKjjQJ LzhYHIwJ27nYRL88ic917iHZ46OLZI8J5cTpalPooWg8Q909vbtf2w+2q0hwcdOfURaLZzSzQmV S5R35M+raeeUxFvVqaTPIRedVzZNbU/xJ4zPsmROg= X-Received: by 2002:a05:6a21:1398:b0:398:7792:3882 with SMTP id adf61e73a8af0-3b427fb74b8mr5699061637.16.1780182769608; Sat, 30 May 2026 16:12:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 17/41] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Sat, 30 May 2026 16:12:05 -0700 Message-ID: <20260530231229.400441-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182950356154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-defs.h | 5 ++++ target/arm/tcg/translate-a64.c | 38 +++++++++++++++++++++++++ target/arm/tcg/vec_helper.c | 52 ++++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 6 ++++ 4 files changed, 101 insertions(+) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index a05f2258f2..05ccf795e8 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1122,3 +1122,8 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(gvec_luti2_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti2_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 75be92ce15..b076605429 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -5488,6 +5488,44 @@ static bool trans_TBL_TBX(DisasContext *s, arg_TBL_T= BX *a) return true; } =20 +static bool do_lut_1(DisasContext *s, arg_rrx_e *a, gen_helper_gvec_3 *fn) +{ + if (fp_access_check(s)) { + gen_gvec_op3_ool(s, true, a->rd, a->rn, a->rm, a->idx, fn); + } + return true; +} + +TRANS_FEAT(LUTI2_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_b) +TRANS_FEAT(LUTI2_1h, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_h) +TRANS_FEAT(LUTI4_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti4_b) + +static bool trans_LUTI4_2h(DisasContext *s, arg_rrx_e *a) +{ + if (!dc_isar_feature(aa64_lut, s)) { + return false; + } + if (fp_access_check(s)) { + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + 16, vec_full_reg_size(s), + a->idx, gen_helper_gvec_luti4_h); + } + return true; +} + typedef int simd_permute_idx_fn(int i, int part, int elements); =20 static bool do_simd_permute(DisasContext *s, arg_qrrr_e *a, diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 91e98d28ae..cb633817d7 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3348,3 +3348,55 @@ DO_SME2_LUT(4,4,h, 2) DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT + +void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 2, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti2_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 4, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 4, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 610047846f..2d06f14e1d 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1355,6 +1355,12 @@ EXT_q 0110 1110 00 0 rm:5 0 imm:4 0 rn:5 = rd:5 =20 TBL_TBX 0 q:1 00 1110 000 rm:5 0 len:2 tbx:1 00 rn:5 rd:5 =20 +LUTI2_1b 0100 1110 100 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D0 +LUTI2_1h 0100 1110 110 rm:5 0 idx:3 00 rn:5 rd:5 &rrx_e esz=3D1 + +LUTI4_1b 0100 1110 010 rm:5 0 idx:1 1000 rn:5 rd:5 &rrx_e esz=3D0 +LUTI4_2h 0100 1110 010 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D1 + # Advanced SIMD Permute =20 UZP1 0.00 1110 .. 0 ..... 0 001 10 ..... ..... @qrrr_e --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182959; cv=none; d=zohomail.com; s=zohoarc; b=BNRkjcdTRLvcY2FRW8NevhmfLL+kmJzgGU6lcRzO9tCRo0tqSTtqBE350iUx1ntFVU+UNBVtqZ+f9o8708+XpU0clE5VXFMFgSuZyOhklmoJW5lJowYFLR4l+KJ6QN9AdZ0+8FPvrZgBH/90PpH0Gx2v1bbDywGyerbp087zufo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182959; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=M244E1h1nCtAtZcIR/qVHwnSD2XPye1aHSG7GOg4ROI=; b=VotNcfFmCj+VpnT7OHEHZV9PaFFUyBVJu5hKdU2XAL9F43EAlr/u4xXvd18rQ7fMXxBLJCdCcVNpfwUR0htOqbs/Egvt+ciGwQFF0bJ3J4nTfq3vTneJ4XOOLexz+tvr8QeJYCPLax0iyKNzq0G02ThrQKk8mIDwQoem+Si1BRM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182959215480.5969463842506; Sat, 30 May 2026 16:15:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrP-0000Et-RB; Sat, 30 May 2026 19:12:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrN-0000Bx-Rp for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:53 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrL-0007Xg-UP for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:53 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-36bdda53d99so554504a91.0 for ; Sat, 30 May 2026 16:12:51 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182770; x=1780787570; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M244E1h1nCtAtZcIR/qVHwnSD2XPye1aHSG7GOg4ROI=; b=FDp0xF6KVY7UIGHFGwknXRBcoBwt1rMbQhYLuywzZD5Z8CVmKhWzPCz2Y6/JS7uT9p vqVjAKlKItUCcTJprW+CuKfxgYZhT5kxOSgztS4oHyVe7G0teNcz1yS3rTlFjR59MIQg GOFsapejNivenAoXRn0PNptejMHcXZ3+Lm/E+q6ZgpPmYf0vIRp71Xx5Jx8FolGjYpAR +PMIGnu94jyiZFaP1z1zzuS4HTxD4eHlDZKndmbip/vIbeBw62e72UkJqDvMnB8/ms7S gcc6n6ha8M1s2WwmCWgd2NmEqGCR5wdnQEOPUtwgWxVm0MzQE4KR1RYveN3mb7oSRLFu vxWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182770; x=1780787570; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=M244E1h1nCtAtZcIR/qVHwnSD2XPye1aHSG7GOg4ROI=; b=ad7v9RKDq40IEnuS06zQRgIhVVXAihnuDTtgrg8vYMa94Znh3B5KRMoaT6JR368Nxg HKt9LBfggoo77xnQK7i1nt/pv1vRKFmBd+VQzmBtmDD+QJj7PgW1IQ+uAqxO5JVOFQem 3haGq2AhFQx1HuA89OQv2yudUGoov0lma+mwEi9KmRdFRBlihgOFWEQjXgcdF4RgyguU zI1xnSzOzfM4qniLigvqCstBCSUmOUZvHR4rYb6Dkoo/n60YOpYhS96mLDuiVEFzamcv ABggS+UL5dE4zVuZZISx47mU8YMU7kis1LfDicY+5MLQFtj6a20jOh1eWKB4lGsuT4yE m+0w== X-Gm-Message-State: AOJu0YzmWG2y87TzRLbwbOMsvdG0RP96YGcsY32b6leRj3HloIDnG7Ov cI29cBeWbxw9bv4juuFFic1EXSHxPVXSOxTGHgzDaFr5RfS0JBBGNFRDM0DAi7qOEPX2mWHwc1/ 3eHJY/PI= X-Gm-Gg: Acq92OEvmoEf/yK++hAWciIwSne8Zc4nHYGLHlcdeZWF0dyL011v+Vsgh9lU4CjvaIp uSOqqjDfHgErk0xOTBLfIG9QRY2wCLxYCtZR3W3+7fZlbW2EvoDjvAje42RjiqhxhlW+oozL5fP qEyYzsknD9DYzGn32TlyT4bbY6pcPc49DOrTNMKV+UcTbJgknrFkkiZlfT1WURVLW/Mm03SSVlx Am9uySiyUfjUCehCAbQeotszP1WfhM6rXAekq1ir1rBq94NcPiB1L2p/A8PIoN/pLgf4ebYpoDs L7/oaq9IehMOkrPfdEmW5RGP1hZ3Rbm1j/Vj16Ujy4HLbMMnumuSDr/wzDaefX+MXAQrzL/qFDQ YxcSJjr2rWyyHFCVEgL65Sv85G4fgsN4pLbh2TUhsUO/q1OCkgALhqSELhjxJFmCRBW4LfoaNMH dhj8jjaCTV5oTnnditwJMGFxJO02nJvAgUdjPqr3Y= X-Received: by 2002:a17:90b:1845:b0:36a:d6dd:9fee with SMTP id 98e67ed59e1d1-36c4ff6558bmr4515840a91.12.1780182770204; Sat, 30 May 2026 16:12:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 18/41] target/arm: Implement LUTI2, LUTI4 for SVE Date: Sat, 30 May 2026 16:12:06 -0700 Message-ID: <20260530231229.400441-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182960156158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 +++ target/arm/tcg/translate.h | 1 + target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/translate-sve.c | 68 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 11 +++++- 5 files changed, 86 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 70649fe894..b220ed3437 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1659,6 +1659,12 @@ isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISAReg= isters *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_lut(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_lut(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index d4bcc5bad4..63d83cac55 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -90,6 +90,7 @@ typedef struct DisasContext { int vl; /* current vector length in bytes */ int svl; /* current streaming vector length in bytes */ int max_svl; /* maximum implemented streaming vector length */ + int max_any_vl; /* maximum implemented vector length */ bool vfp_enabled; /* FP enabled via FPSCR.EN */ int vec_len; int vec_stride; diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b076605429..d6466de03f 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10903,6 +10903,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->vl =3D (EX_TBFLAG_A64(tb_flags, VL) + 1) * 16; dc->svl =3D (EX_TBFLAG_A64(tb_flags, SVL) + 1) * 16; dc->max_svl =3D arm_cpu->sme_max_vq * 16; + dc->max_any_vl =3D MAX(dc->max_svl, arm_cpu->sve_max_vq * 16); dc->pauth_active =3D EX_TBFLAG_A64(tb_flags, PAUTH_ACTIVE); dc->bt =3D EX_TBFLAG_A64(tb_flags, BT); dc->btype =3D EX_TBFLAG_A64(tb_flags, BTYPE); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 31e120af68..a891117916 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8287,3 +8287,71 @@ TRANS_FEAT(LD1_zcrr_stride, aa64_sme2, gen_ldst_zcrr= _c, a, false, true) TRANS_FEAT(LD1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, false, true) TRANS_FEAT(ST1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, true, true) TRANS_FEAT(ST1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, true, true) + +TRANS_FEAT_STREAMING_SME2(LUTI2_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_b, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_SME2(LUTI2_1h, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_h, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_SME2(LUTI4_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti4_b, + a->rd, a->rn, a->rm, a->index) + +static bool trans_LUTI4_1h(DisasContext *s, arg_LUTI4_1h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + /* + * The MaxImplementedAnyVL check happens in the decode pseudocode, + * before the Check*SVEEnabled check in the operation pseudocode. + */ + if (s->max_any_vl < 32) { + unallocated_encoding(s); + } else if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + + /* Then there's a second check against CurrentVL. */ + if (vsz < 32) { + unallocated_encoding(s); + } else { + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, + gen_helper_gvec_luti4_h); + } + } + return true; +} + +static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI4_2h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, gen_helper_gvec_luti4_h); + } + return true; +} diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 72755b27af..e2106fc7f5 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -31,6 +31,7 @@ %dtype_23_13 23:2 13:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 +%index3_22_12 22:2 12:1 %index3_19_11 19:2 11:1 %index2_20_11 20:1 11:1 =20 @@ -1737,11 +1738,19 @@ RSUBHNT 01000101 .. 1 ..... 011 111 ..... .= .... @rd_rn_rm MATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm NMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm =20 -### SVE2 Histogram Computation +### SVE2 Histogram Computation and Lookup Table =20 HISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm HISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm =20 +LUTI2_1b 01000101 index:2 1 rm:5 101100 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI2_1h 01000101 .. 1 rm:5 101.10 rn:5 rd:5 \ + &rrx_esz esz=3D1 index=3D%index3_22_12 + +LUTI4_1b 01000101 index:1 11 rm:5 101001 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI4_1h 01000101 index:2 1 rm:5 101111 rn:5 rd:5 &rrx_esz esz=3D1 +LUTI4_2h 01000101 index:2 1 rm:5 101101 rn:5 rd:5 &rrx_esz esz=3D1 + ## SVE2 floating-point pairwise operations =20 FADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182871; cv=none; d=zohomail.com; s=zohoarc; b=JvYwX338NAYOyspY3Bjh95iqFyf+Jja8q5FvV0/xb467orau9Zmz1Odj+An91Vqz6px58F7m50G0kY12f4D+uexaNYVFhUx7bvi+xGcFKmVlFiZmqZ2CsToAoONyob5UrPpsn5JJvHsUPp5SJ1Jz8wh7a6/0+/oyqnKGNe8RT+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182871; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=jgDqRTfGhxtXDs4ucnqNJhRDVs9fk6Bq9xW50wFg53oqw755zqbL0hHboVOByzJ5ITkEv6wh9FlqvhgwRsQbL23J2gdXZnCDaqLbKiRvxbkrZ4EErysXxVYXP33J0afIUkYdKBXbIof2MeXIHwvn+POB/zkSKgwxNII/ezaM2rA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182871007260.66454282577024; Sat, 30 May 2026 16:14:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrQ-0000Fy-KU; Sat, 30 May 2026 19:12:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrO-0000CZ-4C for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:54 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrM-0007Xs-JY for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:53 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8422f148dfcso242441b3a.3 for ; Sat, 30 May 2026 16:12:52 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182771; x=1780787571; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=tQZRNLjMr3ZrEL+lXq0pimLEGUpUfCLQX+XPsfUR6+qwS99PM3U03K1I5KjXPNtI1h bdjW6Zn87Znu+/U8QkarCk0gRf2l7y8CoXBK0ST4ipCP6o0qQ1lQnl8NtY9Rky1PLo0m zFNzZwnbqaEf+8uCn5qlqYc5B1//WRQr1wn9sS4OwjWPamKV/Ew0Sgtz0GDwmnQ7ihGw kZZArnBXPpVnNW0MCyV37NybN7vwCWEI/69ZofMHTmTkITK5K+0EIRqqn+UJ7QldmCwm kskPdC1xrHK2uIsC4eKMNi7YSjrL2mysu/iVd73ZNrsHWPFzBmdJIvBWpqxAThOFruvc Wq9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182771; x=1780787571; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=fnl26aCQBeB5D5tK1yoqpLA4xfKEf9yGC05tJ5vldTdt7XASWhzoA7wrTYUjx5hjl5 hc68JdP8/VQPYE+8kcPaaqOtGgN06GrrCZNZGy7SiQ9mU8fPybOq3XcNU6INwosf5LIu dC9bBwWi10fqxGe+/yxL7TpBHKwl5eXjBM0OdaoQPpyYmVHpQOafuCNtCs9+6/ffmB9B PLLON0SP5Eqp9MbSAchiEOBlD53Zab56yjavc69SbgKUrKPNqcS5PPG3gs1B1WVpQo8l w8cKbh6R9WVcmu04C2jtTT7nRlzHPyKZZWwMtmdT3t75MUnwN08I9g1QfQHGrGD9U1Ij pKsQ== X-Gm-Message-State: AOJu0YxXVeNS9b2W/SFEpVkDL6QHOeW6U7NfGJi/fU3KrH5TJoJvOYKI KPdV77FFYi4rl/FIOEsQHltER/iDKcy/SrGppWQeSjUhyCjvFGbdkuIW4NKNA6RL+OZcRBvPn9+ G+Y0Js5k= X-Gm-Gg: Acq92OHQ6z26S5aUvbuZzr6dPDdbGHct1gGrhZg0KvtMPraVOkglEJDnZ0VQKPeS8Jc G500lWC8auqfJKf1sE2bCezpWZPrMnT89jjyPeJ7GyIaYTlCGcwvafsJ4SbQBslz1XwGW589L1D igjlEbAAuUZvl5LJCqrhkpMaNC6wqkiTYrXGoYHVMVoUmCDBUS57ouEsX+9/ebf1rGB5op1ihA+ 9mEmsYZjWpoU43ZOAS3ydSoJHn1eeZXQxP+hySsyGnPH19zhZhR/vWCJ7lYfr30HIkq+G5HpaBe j9TApgWp58AXx0L7CzDiw8ejDJ/yr/V55m8EAX1FOoJD9r1G1jJa5mdFBuC1hHbHKarrFMCoMaB M1pMc4seEo4kKetLZ84I9JpaFmmBA8ls4exJoZNS6524hGDMq97otrcFDSo5S+9kCibG2iF8Vvz xfZ4RoYKBzxGwDtfTwH8noM4b5hf+kph+KzkHrVxY= X-Received: by 2002:a05:6a20:ce44:b0:39b:fbb2:5e46 with SMTP id adf61e73a8af0-3b427fbf046mr4966398637.40.1780182771142; Sat, 30 May 2026 16:12:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 19/41] target/arm: Enable FEAT_LUT for -cpu max Date: Sat, 30 May 2026 16:12:07 -0700 Message-ID: <20260530231229.400441-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182873220154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 228b593316..5ed7a7badb 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -221,6 +221,7 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_lse128, ARM_HWCAP2_A64_LSE128); GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); + GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1a4f50486d..39dc769a04 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1263,6 +1263,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR2, BC, 1); /* FEAT_HBC */ t =3D FIELD_DP64(t, ID_AA64ISAR2, WFXT, 2); /* FEAT_WFxT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, CSSC, 2); /* FEAT_CSSC, FEAT_CMP= BR */ + t =3D FIELD_DP64(t, ID_AA64ISAR2, LUT, 1); /* FEAT_LUT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, ATS1A, 1); /* FEAT_ATS1A */ SET_IDREG(isar, ID_AA64ISAR2, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 18c6355967..dc20632097 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -102,6 +102,7 @@ the following architecture extensions: - FEAT_LSE (Large System Extensions) - FEAT_LSE2 (Large System Extensions v2) - FEAT_LSE128 (128-bit Atomics) +- FEAT_LUT (Lookup table instructions with 2-bit and 4-bit indices) - FEAT_LVA (Large Virtual Address space) - FEAT_MEC (Memory Encryption Contexts) =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182913; cv=none; d=zohomail.com; s=zohoarc; b=kKiGzv91m3Ac8Fx+Ts7+6MYswMjtTROQKmzHmS4dNNzitbwiQ5WgtPJJeUFMlhsD0DwW15O+XV2iZdlphACUMc7GBJeROlTXefxFz6Tr1n71A4FbhqqCgkhSG1JVSH0R/PgrTyCKOJ5Q/Wbd41Tu4Zvy4bGYgUKq76qYe9QHOiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182913; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=fS0Btc2o30O7P1om9htIwjmlkKuFRZXkDhKKBjbIVWkhPVTRx8U+DxP5CRtLJ2jjg4NVtZts9xn14kzPV0xAefjQ7ei1rO2nDdJp7btj28DMSk0TP5G65edxqG0TqolX07zSJcHgmh8sMj+lBcq/GN33kudzG5zzTAWtwYUPX5g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182913606579.8816804909181; Sat, 30 May 2026 16:15:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrR-0000H7-3w; Sat, 30 May 2026 19:12:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrO-0000Df-TS for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:54 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrN-0007YI-CM for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:54 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-36d630c0e35so633554a91.3 for ; Sat, 30 May 2026 16:12:52 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182772; x=1780787572; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=T9Qnm2quQPHFEt0pu47nzZsDC6wMPMkzDRAXmarE9qjJZUXSXO4WDtxVXzgKdaa5s3 rOgwFSthlPX6qe8d5evpDWAUI/Y7dFWCf4P7ccqm3WvyzCjCRDhCI4rLCHgQFwg0Shii VZDbmgOVHxCpHpTZel16o+jn+BZDooAqB9WujNlIbU98+/Tx7p0PTAr+bZxKzU3X9n3z kgzhIm1X3sl8g7VgboZpJQeGTfIWrq4fbLEb3IGMIfvVhonSYoHg4EOPlEKmgoqSQBov CWXHP4fHwkDp0PKI7gc5rLY73PZEY3xdK6RCb4Ea/HdTdcku+tzlgj0OsP/zL7eLUmpA 47Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182772; x=1780787572; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=mqAMWHJ4ZyDn703/S3TnTscEknZwgPcmhOcKuIR84wH7VhpDmB+CC4bYZc7y2X87gE p8D32LoYjAOyCrDi7wkshO8BrS2d1zJjQcvrCRsZx8fDqe/YdU1bGaexjvwOUrMa3y62 yO9VbjICbqj+SsJBm+IvV5jJMVDKO7wkVmOA5T2L4vf28z5bk9m8j0QQ7Y+jShuEnL+C BLyBY4ekvydv2D6zmjB2HTEr67xVWvILV8q4Vk2yVu0K7p2SwKldhxXLOUA/kpdQJevd ycANZ5oH11a9X19phBUHhRB4PUeIrVPqUIULZqC31pNUmzSEWIh2uBBjyfmRmx6/h9HY 6ynA== X-Gm-Message-State: AOJu0YynhDfyGWlaCDRH+TZf59sbVuXlvPxfh12tEsqaxo2nu2SvfR20 5oDM+Lq5pfDLFY5yCZjFZ9UhHyDThF08TZqy8XvnwCagkX7JVQm0hM0O34mjSKsS+bH6q6PAiut EgnlLWFU= X-Gm-Gg: Acq92OFsT3bqGLG8Wxf65uq62zlXspT9G4QExL0lUPS9uaoFqbBdO3hT3AePMxqzjeB m1Z3hcHMvjv7oZXWqPo48dAaoYN1Ekr78OfCl1s9YVAJGCqG/e2ej+YtzkojEI87OileDWsd3I7 gxX4qHhYw4LiD88uozoBByaCIPONVxKBhq4wxT/9ZZTb89Yu0Q6j/7nxtxbdSf6aeZ9Pf0azEzm fvDqXhZUtIvgWyi9s7x7hd3+UBRyxLHgF9cEdxjDqB1g1JUjxfOdW7ofoDto4dhhOlWIchBPcst L703PbdE6PyHunmDeELW60RDnidnZ9P+mk5K9KI93P1seQHT1CeEqYjLuQUIS9s5RXnjJkMoIhZ JhPa2pDyhvjiOANnt5R/Mzip0jsGnzQ5Wm/0Vj4OGZIJGBBKpQ+uFWo/i86BPQFySnKqNyetZtZ ZrIm98lA0cuQ3CmfMVbPvTyi5RCPF1bcVR2JxdEVY= X-Received: by 2002:a05:6a20:c6ca:b0:3ab:2fa:756c with SMTP id adf61e73a8af0-3b427bfa25amr5634167637.1.1780182771989; Sat, 30 May 2026 16:12:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 20/41] target/arm: Enable FEAT_FP8 for -cpu max Date: Sat, 30 May 2026 16:12:08 -0700 Message-ID: <20260530231229.400441-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182915884154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 3 +++ target/arm/tcg/cpu64.c | 6 ++++++ docs/system/arm/emulation.rst | 1 + 3 files changed, 10 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 5ed7a7badb..1c0c404b7c 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -222,6 +222,9 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); + GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | + ARM_HWCAP2_A64_F8E4M3 | + ARM_HWCAP2_A64_F8E5M2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 39dc769a04..b48dd01a2c 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1392,6 +1392,12 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 + t =3D GET_IDREG(isar, ID_AA64FPFR0); + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ + SET_IDREG(isar, ID_AA64FPFR0, t); + /* Replicate the same data to the 32-bit id registers. */ aa32_max_features(cpu); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index dc20632097..470f7d891e 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - FEAT_FHM (Floating-point half-precision multiplication instructions) - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) +- FEAT_FP8 (FP8 convert instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182895; cv=none; d=zohomail.com; s=zohoarc; b=OZNp+ZZV/KzmIf7IGh4doRpoLsghuubiLnLFofJB/QOLqW7nSy8pWob9I9b+/I4ffqlP7Dq6uz5YThUkplf0pL8BPc7PiHhnttLybJe6JXNcFGre1jSNk7/VB/c09ljeGp7hmUrsj/cAootqisR2B9IPxS20dgZ0yL/rUVPSQ/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182895; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=R7ebaMu+cUpvQEK6RZVh55pMxGzJkBwOwhq1Axy+nIHP89hCJ+J97YKHGm2g48Oke3ZL3/oQrVXuYXrCVjQ024AwqZUO7OtcbkUIMYjc7jUDcpad5QTgxybBnNE6N7y1+Xu30iAVnMs+epCa5tkOz8QTsF+1Fsu5ZEY476d+10c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178018289567176.0438862223084; Sat, 30 May 2026 16:14:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrS-0000I0-41; Sat, 30 May 2026 19:12:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrQ-0000Eu-0v for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:56 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrO-0007Yi-Ei for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:55 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-36b9d265355so1573855a91.2 for ; Sat, 30 May 2026 16:12:54 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182773; x=1780787573; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=M13BaetuOc0OZLXHzV57TRPk/ebdq0lLAX9he1SnYft+88y0oN/q+4FKYVZpUGg/q0 f5VewJJQCaqxHrLn+wT4/t4Hxk50fqoNHr3HpGcU6Q8IyidHsPKaLTWXZqo8m5eyDJFK FBK7DfhVAFnDgQmOMxSZ2VMv+plLPlYnaEfpa0UF/Q+ZxTIlrWPxz4W50SZXmb9J2tdx a6E0JIO9AUnx9Bb5wQD2NYyXbaOpo3XW+3P5fpzZv0z/OF9o7pPNpXEffsWi5JgjSgi+ 0E2KaI7tV0mMMMOCAYUlLy0cTyctZdCKhtL8IxuFY5dn39OY6bkTTfnwkaEYK29Z+R7h cMiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182773; x=1780787573; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=rjSUCynMHD2qdJRv5fiimkEPCy9f4G33FZ/GxbA/TYwPsFE6IlJ/H4FRvKwiXIp1+A ht5A4zQhk6OsYHJ5dv4yA8CYDYb0gQOkxTrlA9vtyoPLzcYoO4OoLbpr+HtikOzERHVm XRhcSs4a1xGdjuqQaafPWM6PN3mttON9QWOQ2OzBV0fUWXQ31QjOgHA5QtTA8Fm6amcn /LD0cJBzg+ExwjcC177Gr3MYn+xmV2ztnLpZNdpGviTtu/mgd+Ppwowqdbjc21vmUSgv naDJRrSY2en43nnxhs4sIy6/o0xS29nXNFcvNjKu6boHQYjDq0j+xxjflSEygzrvHMeG 90ug== X-Gm-Message-State: AOJu0Yz7jNfJ/hO4kC2ac00rI6QAZwWeZXjJYuYlfwmwAiKjbbXyvhxR WZsCfbLmKV2rB5AF+h5t66FLwqJnslUZJL0feVH7JtQmKxogx/v9PcYkT6q9+sPb3VI4DiCN064 3lEEibS4= X-Gm-Gg: Acq92OGrOoSRr04fFU0N3jxHKDWFE3uzD3GUOByArJb/Awqa1WRq6jZd+m/BcF8tHHO t4s0dR9r2JVhY3kfpnlNiGf/AeuzXMP4xKHgYwA453aMDy3wnmkr6A9ty4enUimmfPqM+Qk+LU7 jxy8Py7OIYOer8PeZD/JN7UU8o0FBL6bqj4kqs9NUAdmDtiOuPEUs3hJDXF1Io9Bv569ei16x7M doYnmAJ+2iueYNJpusWoGSrUMao9v9fopsn1I+l73KfilFIP6quu+V1LujfXKPEqcIEBbUutz6J C2JcTU+ktHhyYwQpYKPD8WKvUFnmK7mzvqRqMjpbw/GXd/Nqc8Msj3AnCH1m8/PteI2zxmtYpcs x+PuQnIPAmLx8gbf1tixNapx7Owp/M940ErBl4JWswyP3TUM2glR5JBmuC3/oOK7j0IKh//vrnm wVnolVmXssWCqUbKuD8ktItyQqR1gsxQDIWipPOz+zxGHm0jEQLw== X-Received: by 2002:a17:90b:574e:b0:36d:633a:e8aa with SMTP id 98e67ed59e1d1-36d633aec7amr3361391a91.13.1780182772958; Sat, 30 May 2026 16:12:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v8 21/41] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Sat, 30 May 2026 16:12:09 -0700 Message-ID: <20260530231229.400441-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182897577154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b220ed3437..3a754f8d61 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -397,17 +397,28 @@ FIELD(ID_AA64ZFR0, F16MM, 48, 4) FIELD(ID_AA64ZFR0, F32MM, 52, 4) FIELD(ID_AA64ZFR0, F64MM, 56, 4) =20 +FIELD(ID_AA64SMFR0, SMOP4, 0, 1) +FIELD(ID_AA64SMFR0, STMOP, 16, 1) +FIELD(ID_AA64SMFR0, SFEXPA, 23, 1) +FIELD(ID_AA64SMFR0, AES, 24, 1) +FIELD(ID_AA64SMFR0, SBITPERM, 25, 1) +FIELD(ID_AA64SMFR0, SF8DP2, 28, 1) +FIELD(ID_AA64SMFR0, SF8DP4, 29, 1) +FIELD(ID_AA64SMFR0, SF8FMA, 30, 1) FIELD(ID_AA64SMFR0, F32F32, 32, 1) FIELD(ID_AA64SMFR0, BI32I32, 33, 1) FIELD(ID_AA64SMFR0, B16F32, 34, 1) FIELD(ID_AA64SMFR0, F16F32, 35, 1) FIELD(ID_AA64SMFR0, I8I32, 36, 4) +FIELD(ID_AA64SMFR0, F8F32, 40, 1) +FIELD(ID_AA64SMFR0, F8F16, 41, 1) FIELD(ID_AA64SMFR0, F16F16, 42, 1) FIELD(ID_AA64SMFR0, B16B16, 43, 1) FIELD(ID_AA64SMFR0, I16I32, 44, 4) FIELD(ID_AA64SMFR0, F64F64, 48, 1) FIELD(ID_AA64SMFR0, I16I64, 52, 4) FIELD(ID_AA64SMFR0, SMEVER, 56, 4) +FIELD(ID_AA64SMFR0, LUTv2, 60, 1) FIELD(ID_AA64SMFR0, FA64, 63, 1) =20 FIELD(ID_AA64FPFR0, F8E5M2, 0, 1) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183279; cv=none; d=zohomail.com; s=zohoarc; b=iZflT6dCAToUhNh2i0JpOF4oXSml8yJUZm+fHi6HB4WJsGy6R872cyR824E5VNsFL6xjKeAfkgAsDQnydNQQu5vhgnDVl8Yx9oQik3yLVwOheYk+kdhy1LcAca2vDrKy3cNpRCrrfYyfgQGGextyhF5ujARB2T0ZdYwYJrVdqkE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183279; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=SCNGRFtnWD6tHSxsDS2EDextx6Wt2NroeNNg0/l9Me8S9nCPqsrCPVLy2E0z2lIhhHz7Hu0nqO6Kwl7T9I7kZvLnI6vQDUxwXk3I5TftVyb3jiAWXMuxthmrN0eWC/icIc7bHXhPlcwWyNRtX6YClzYIUE0ieYUln6KbqCbjosg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183279529440.79914985070536; Sat, 30 May 2026 16:21:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrS-0000J2-KZ; Sat, 30 May 2026 19:12:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrQ-0000GT-P4 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:56 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrP-0007Z6-3g for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:56 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c858014845aso472611a12.1 for ; Sat, 30 May 2026 16:12:54 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182774; x=1780787574; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=Doz/C/h8tgkAchsSB9GkCP+C4U/jrDHnzbT9EhVq+EfwuAK8qDSYO017uKheHJ7f/8 XAN/2AUb7jcC8eWlnv7P6nhBOb3I3azxCRFbmWmu6hpFsdAWFMjRAF97uXQudnm49t7V y5ovSNXutu4886WzQ8B912t/fHD48RNUAJ+8HFwHmip2d5mU+GQ71Rx8nNg/ekO5gGdi S5DkF5jucld/OvrEKvE1S8URRuQHh/2Cg5Ac454+IwHG96BDIN/hCwLKGtUVPYYSVS4q 8bPs2ClWWRCotmwTEvBDEArdVvK4olbuvydNtIfI9ROsgyM0TxwtOW1ulKJNGgZGyCPQ mbuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182774; x=1780787574; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=lQ3N26XSu7rJKWKF7O14zKnJtuG7fm0XHLaZgMroCGozcSj7O2lafAmIMzqxeQ4YWR 4Jf+WGSBKZtherQ2hiwO9pmudzbF5dWZZc7flutwvWJsjjTpA9BuFYFGWmlcsR2qrj9Z /UR9oLY3R55uEldwDQQk7rBl14DvckSwRZ+WAo41VFK9x2I1bs9ameqiiRQtixB4iUjA xlDElSmQD0LjeHU/2XnPrbn/JkTLtKtiY/U/rqI97bMjctFWjZDmkT2WvlgaB7aufL3F RnJsmgkLaqFx1j4o6+qvlB4sY2/tMoVrvkNaHKb0qlCSo1xsde8ByLlSunCX24w4jGMw AOXg== X-Gm-Message-State: AOJu0Yx5DiFj2tMj3Ubps0giqg90vVd1oAqdu6jun/6BtrirsUqitjXX rikWQXs4g3PLo0SCpIaBicWBxPcBSPfPvnGHrnHT7TrUvYHyuvYvaYIOAeK4Cx8ZAzPruzQ2wI0 PDf7tlMc= X-Gm-Gg: Acq92OGIWGcuGSzpazK/KHhy+ui2DNZgQkHKEb+66CCgmG4R1OxMP9BN70MB963Q/P3 S7R7ot2qopoVTLDhIlAg5blmatRv54g7YuZJy6z+ytrAaTQmgb/ftGZ3CUDFV63D5kgRr4qtriB KzgRgsqQsj+rDk1+CqbAke2ZLRR2jfSmvmANXYruUiMBJFZMSiJdDFZbReFslMapZHrd0YM84An Pkyo2r4r5YFvdpWKBs24KAjrxxsk+jL+L0MWGql0VcyzvN95KXrB25Z4oA3jRSmNz9ZJtrDn+V8 O8rj+ib7iztR/GlKlfXKJJ8PqrkDvogV5vOrcnUr61dphf6a54yAizfnWvgJrfp1i538M7zB6Hq 7MVChZV0fESgSX0eVrYgbJ9U/U0OeP+vuk0MH/E0+SCbefOqzsqNwXF+Ehk16us18LMKQVXhzIZ 4xFcFLo9enqMaA8dfH+nHCgcW6nRtJW6fTuhsw/D0= X-Received: by 2002:a05:6a20:450c:b0:39c:4e62:b843 with SMTP id adf61e73a8af0-3b426791ab1mr4428143637.10.1780182773695; Sat, 30 May 2026 16:12:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 22/41] target/arm: Implement MOVT (vector to table) Date: Sat, 30 May 2026 16:12:10 -0700 Message-ID: <20260530231229.400441-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183281139154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 3 files changed, 25 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 3a754f8d61..050a826849 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1580,6 +1580,11 @@ static inline bool isar_feature_aa64_sme_fa64(const = ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, FA64); } =20 +static inline bool isar_feature_aa64_sme_lutv2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, LUTv2); +} + static inline bool isar_feature_aa64_sme2(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) !=3D 0; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 76bbacfb6e..c4bede2ae3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -391,6 +391,24 @@ static bool do_movt(DisasContext *s, arg_MOVT_rzt *a, TRANS_FEAT(MOVT_rzt, aa64_sme2, do_movt, a, tcg_gen_ld_i64) TRANS_FEAT(MOVT_ztr, aa64_sme2, do_movt, a, tcg_gen_st_i64) =20 +static bool trans_MOVT_ztz(DisasContext *s, arg_MOVT_ztz *a) +{ + if (!dc_isar_feature(aa64_sme_lutv2, s)) { + return false; + } + if (sme_sm_enabled_check(s) && sme2_zt0_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + int tsize =3D MIN(svl, 64); + int offset =3D (a->off % (64 / tsize)) * tsize; + + tcg_gen_gvec_mov(MO_64, + offsetof(CPUARMState, za_state.zt0) + offset, + vec_full_reg_offset(s, a->rt), tsize, + offset ? tsize : 64); + } + return true; +} + static bool trans_LDST1(DisasContext *s, arg_LDST1 *a) { typedef void GenLdSt1(TCGv_env, TCGv_ptr, TCGv_ptr, TCGv, TCGv_i64); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 2b9e41a75a..339de72b8a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -141,6 +141,8 @@ MOVAZ_zt4 11000000 11 00011 0 v:1 .. 00110 za:3 z= r:3 00 \ MOVT_rzt 1100 0000 0100 1100 0 off:3 00 11111 rt:5 MOVT_ztr 1100 0000 0100 1110 0 off:3 00 11111 rt:5 =20 +MOVT_ztz 1100 0000 0100 1111 00 off:2 00 11111 rt:5 + ### SME Memory =20 &ldst esz rs pg rn rm za off v:bool st:bool --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182871; cv=none; d=zohomail.com; s=zohoarc; b=Kxv5Mrlb7EyNbuDxCXgJSaCC8+5Xx7us127Vk4ri/sWKiBFmcGSvhak4Y/3Jb17aVgFg3uK6meNnmbIupByPx6hcLgqbRH1lnXK4MXkBBMtTlBAwCsNw2JKNtrJBw1I0frPMk/lvnszVXcg57PuL8eaGTVjNqUi0mleIuYqeY9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182871; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nlZ6aEiuN3XiGycYwMYA5NFhsFBR0Mas87WbheZnGvw=; b=HTuje4NvQWLr4Ff3EV3f9HFmegU3QtG/aIzcrDVu+M2kjvanGm0NurMI8n2CQalU99x46CpTRuDMK0Q6wJo1CJjaS+FC85dTN9CVvh+6SGwpeLsJIOiDMe68M5GKz8hCrEq2m+uYuO3l9GXX24IJeaNtgHkWGMeOIpjkK7FiRx8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182871417371.24178755199284; Sat, 30 May 2026 16:14:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrS-0000JK-QH; Sat, 30 May 2026 19:12:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrR-0000Hb-IK for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:57 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrP-0007ZL-Ry for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:57 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2bf1cda2b17so15187925ad.1 for ; Sat, 30 May 2026 16:12:55 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182774; x=1780787574; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nlZ6aEiuN3XiGycYwMYA5NFhsFBR0Mas87WbheZnGvw=; b=UOg92qJMxgaAQ7yJEWK1Lxoxtq7V4uAThkbY4dkTa9XK+NO8dI56+Wl449jWG/NwmL AGaNOOde1Y88LWtBWN8sQ7ujTA4KdoiEKnE5cKM+aUOCV2DMUPREMa5XZouyeAStryl7 e9Yv7+hNtRvWo85VDnu9IMzlyLvcX/7eo1vmopORDHgY40TC1Ul3+Wja8tPmGmzJAwTo d7ndl0z+monbAbB31pCJZboJ9prKOJDoFN2s8qnpu+l3Ol2cwvJNgbP3YOPXkTfRqmh1 TxRpCTAdF2UueCycDzwZi/CojJhn6Fg8cdG/XmuDQofsLCnEDCXfhwwoVaXWYUX0lZy1 CFng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182774; x=1780787574; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=nlZ6aEiuN3XiGycYwMYA5NFhsFBR0Mas87WbheZnGvw=; b=GJYptvsbQoAAVI69YeHCQIeTJjuZ6oALI9qsvZssllBEPU8TUXTurZGZmERSWrd1/G a7FzFlixcgPXUNsDCN7MULX1euVIH6VMy1YQZtAaiqkleAz5WN72tkUJuVr5M1Ad2BZl t3zMO3iTb1lD0kg7H48IfkqNHF/1KG83rnCgOIA2G+s5FKk23ja/wmrUgYqU3xy/MYiw bILHLlbJJSUDHi5bMT0722kotQsd2XBX8SuYXIQVVx1LM81vS7pYv2p+vADkPaGd3U0x njAhd14/RV+G3a2FJ8S76aJu+XZrPn4lCeP+PqW0TLN0DeCfVqWkOYgah3/lHajsjrbA 1myw== X-Gm-Message-State: AOJu0Yz9NQP0iUucB94TReDX8FNrpdSGcqjowHSm8kI+BlyUvdxOfLJ+ 4vDpVPyDoSEUeevhPpGh0jDCOo1W/QUZhYvceXXCzREHA18lJWkOHPkrCoqzPj6ZCcy3QssnnyZ 2GOZgg04= X-Gm-Gg: Acq92OHYfzGC/ejRD5cJid5cxSFXaHYyZs1rCnheLMkmoiitzag9BaBidgotpH7oV7J t9CPMVSmltQCJiY3I7suSlHP83Mzm0YJskdyOXve8iY0Ruxuc9rPS3EZ9kSjxqyHQrFAcxp3pz9 slZKbmmVjZS9ZNHOcKCAN70fdqSqSG/Xbom/ONupNLm1uz8I7Vd/aYQzMGREE6BhwU0fm2ABihS FIihw2RR6P42JUc1D/Piy8oyaM6ChCRurOr5N0K4GQqsSIZ4x2tH82cHqhVkaymZQsj0g9MvGu0 kt5yM+b78kSENG9H74PWwmcGoegVbHG8gp89nKFiTJsxU6/EP/XHmeYLBIycPUHr+Llrz8QnPJb 7bdacwAUqagQfIpaZbbWsshVOUUfZf03A82F7GeWScDJO5VVAahT41QWqTpEGGxAQtAaaUw50lW gE6Xkc52bvLspnwRpUH9GGzyGECJ7iwoLnzJEk9Vc= X-Received: by 2002:a17:903:22c3:b0:2c0:b31b:b19 with SMTP id d9443c01a7336-2c0b31b0d81mr22333595ad.21.1780182774330; Sat, 30 May 2026 16:12:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 23/41] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Sat, 30 May 2026 16:12:11 -0700 Message-ID: <20260530231229.400441-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182871708158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-defs.h | 1 + target/arm/tcg/translate-sme.c | 6 ++++++ target/arm/tcg/vec_helper.c | 14 ++++++++++++++ target/arm/tcg/sme.decode | 6 ++++++ 5 files changed, 32 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 050a826849..b3ff825488 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1653,6 +1653,11 @@ static inline bool isar_feature_aa64_sme2_f8cvt(cons= t ARMISARegisters *id) return isar_feature_aa64_sme2(id) && isar_feature_aa64_f8cvt(id); } =20 +static inline bool isar_feature_aa64_sme2p1_lutv2(const ARMISARegisters *i= d) +{ + return isar_feature_aa64_sme2p1(id) && isar_feature_aa64_sme_lutv2(id); +} + static inline bool isar_feature_aa64_sve_i8mm(const ARMISARegisters *id) { return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_i8mm(id); diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 05ccf795e8..8ec6c16319 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1120,6 +1120,7 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2b, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_luti4_2h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 +DEF_HELPER_FLAGS_4(sme2_luti4_4b, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index c4bede2ae3..98d3d18791 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1846,6 +1846,9 @@ TRANS_FEAT(LUTI4_c_2s, aa64_sme2, do_lut, a, gen_help= er_sme2_luti4_2s, false) TRANS_FEAT(LUTI4_c_4h, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4h, fal= se) TRANS_FEAT(LUTI4_c_4s, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4s, fal= se) =20 +TRANS_FEAT(LUTI4_c_4b, aa64_sme_lutv2, do_lut, a, + gen_helper_sme2_luti4_4b, false) + static bool do_lut_s4(DisasContext *s, arg_lut *a, gen_helper_gvec_2_ptr *= fn) { return !(a->zd & 0b01100) && do_lut(s, a, fn, true); @@ -1866,3 +1869,6 @@ TRANS_FEAT(LUTI4_s_2b, aa64_sme2p1, do_lut_s8, a, gen= _helper_sme2_luti4_2b) TRANS_FEAT(LUTI4_s_2h, aa64_sme2p1, do_lut_s8, a, gen_helper_sme2_luti4_2h) =20 TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, gen_helper_sme2_luti4_4h) + +TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, + gen_helper_sme2_luti4_4b) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index cb633817d7..eaf15a0cb5 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3349,6 +3349,20 @@ DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT =20 +void helper_sme2_luti4_4b(void *zd, void *zn, CPUARMState *env, uint32_t d= esc) +{ + unsigned vl =3D simd_oprsz(desc); + unsigned strided =3D extract32(desc, SIMD_DATA_SHIFT, 1); + unsigned dstride =3D !strided ? 1 : 4; + uint64_t indexes[ARM_MAX_VQ * 4]; + + memcpy(&indexes, zn, vl); + memcpy((void *)&indexes + vl, zn + sizeof(ARMVectorReg), vl); + + do_lut_b(zd, indexes, (void *)env->za_state.zt0, vl, 0, + dstride * sizeof(ARMVectorReg), 4, 32, 4); +} + void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) { unsigned part =3D simd_data(desc); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 339de72b8a..495330aed7 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1014,8 +1014,14 @@ LUTI4_c_2s 1100 0000 1000 101 idx:2 1 10 00 zn= :5 .... 0 &lut zd=3D%zd_ax2 LUTI4_c_4h 1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 LUTI4_c_4s 1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 =20 +LUTI4_c_4b 1100 0000 1000 101 1 00 00 00 ....0 ...00 \ + &lut zd=3D%zd_ax4 zn=3D%zn_ax2 idx=3D0 + # LUTI4, strided (must check zd alignment) LUTI4_s_2b 1100 0000 1001 101 idx:2 1 00 00 zn:5 zd:5 &lut LUTI4_s_2h 1100 0000 1001 101 idx:2 1 01 00 zn:5 zd:5 &lut =20 LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5 &lut + +LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \ + &lut zn=3D%zn_ax2 idx=3D0 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182886; cv=none; d=zohomail.com; s=zohoarc; b=Y2oUVzOg6hoJlqCZe37F+n026yhSpjAuAao/r8n+eSEZIRNJyxlrI5LgaU4GE4VvMiWcdebvLDUdbxlHXevAqEHXcUYgLA5EBIdF66uvmnZm3DTHf7j1MA8lGLEpvHKFE/QsnuTMVlqqYDYxsfmXoa373vO2My7PZTXX6HeBk4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182886; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=S4qBrEQvg03CNKoBSPBGU4weWTGaxQyqPDsW4Fj6aF/OqD+3vbqvAOgEvWyKBMauqRi14nq5HEL9U/8zDpNhz7SMoADTGL57cIgwocGo1/wQyrXDVwxjR4/HR/LZs2TQeClVu9WYAwVAMUDw1LzzRjilcjjvpfdflo9hGLlobcE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182886487424.2988219184832; Sat, 30 May 2026 16:14:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrU-0000Kg-35; Sat, 30 May 2026 19:13:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrS-0000IC-8S for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:58 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrQ-0007ZZ-Gt for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:57 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2c0c1e0b0faso1055815ad.0 for ; Sat, 30 May 2026 16:12:56 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182775; x=1780787575; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=iBEYWDWr8ROj87Ekpz3M9/KV2W/T7Au7lgUXdMQ07S+pGTtLq+q0hNvQECyBInkXAG sXIhNz4tHAnY0zeF3R6rT2HlcGOjgo4DgcKTg5pQgi91m5pizSCbkCpe78+nr3DG17I6 LRx/9q+olcvSz8xHyoBNKwry7lr4NlF4ubHjE4BIpvJte6vOrRekGG96n4LZm3rSRG2G Hd00zqw/A+CCz1eZ+GVuUs1ZLigeH3Dqw3JgKAu3gxSWXnO45DBlCw+Z/enpyAcCkl+S JPEtpE8+HZYnNT0SyHLNu2LTBbF3bWqSE6XKSioynSCMUmTlifMoJVbVpnghXy/yy4Yx klPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182775; x=1780787575; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=JII1ZKtITfyKpfU4phEOE+QgTDIXMeMV0FiMxAEe7h0ljMBycWbP7nHRXArH/3KLcn EIJqEJE7l2cWMjem6ieSRZGHep2uyK1RsDffvXmJox717rrTeEH7PdvAA3keLHAuOI8f QA0iBKoCDbFdhADF600to3OMNMVw9qBGOAjaPOYoGYF5j05fSUwqM5FWuBCpC8SYd+0y nE1tCNBRK1+2N0Pz3Jo+HuywKMNtfhzYk9DBBa7vBhrfypO6cxBuIEqJbJ2J7vlSkfr9 X3yQQl2Rqz/I8ro+QgD0wb0eF8LhiyIB4p5TG+YlBSoCIk/U5IdoLMbITVeRBl6UFNEK CR2Q== X-Gm-Message-State: AOJu0YyKQs8me8nxz0EcwOW1b7fU9ZT2lsKz2on49unrWX32ZL3oOoy2 A/BTFMd0WdHAMvJFOZzlPjkQthMGFH2BBgyQvqSa2frs2Sh87vlxzbZdisEap1vlDOSPMAD/crG H72i6/5I= X-Gm-Gg: Acq92OFNVJ75pubdIRpFuRkT7bIpJeZDdiPvdh8CIT2n/1YxZ3coYd9PXuQLymkTI5J tcfazG7p/Wineuuo0DDYCaKEjyhkCNDteusKnorbefQaLYkLekcKW0JrV1vs0gkPUlXd6E7mfwZ 7Jg9qktxNtBzhh9BxWrjweI547bGiDjAJ2oqy3WxD+BukHKs9LQxJ9IcHGIpUKoY7anJPYZbbHX +Fgx0CdlhVAR+n2BeqNBM5pU1cXmrxMS0ZVImisvrlOy/4yQHeT0+ZCZ6Dhi/dopXcEeNDaxslI gS+ex6qCavCSHi9vi+XJj9fR/otS7etzqJJhWcL9nCYN1ojdblnNOJbTyPFv2fbNothEaCjJidb /oDrelM5z+NwUrSq9j/0u1kG8dzNtMnVR0UhqLL4hit0puo7GwIb7vxfD1LSDIDweZm8jz4SMOJ j0X2jKoQgJVXJMv7/s5xUgrqeDqqERdFUDRkhdC6k= X-Received: by 2002:a05:6a20:a114:b0:3a2:dc51:458 with SMTP id adf61e73a8af0-3b427f5b717mr5569806637.41.1780182774927; Sat, 30 May 2026 16:12:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 24/41] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Sat, 30 May 2026 16:12:12 -0700 Message-ID: <20260530231229.400441-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182887454154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 1c0c404b7c..06c14e82ea 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -222,6 +222,7 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); + GET_FEATURE_ID(aa64_sme2p1_lutv2, ARM_HWCAP2_A64_SME_LUTV2); GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index b48dd01a2c..e466ab5b8a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1389,6 +1389,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, F64F64, 1); /* FEAT_SME_F64F64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, I16I64, 0xf); /* FEAT_SME_I16I64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 2); /* FEAT_SME2p1 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, LUTv2, 1); /* FEAT_SME_LUTv2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 470f7d891e..41fa9bfca3 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -160,6 +160,7 @@ the following architecture extensions: - FEAT_SME_F16F16 (Non-widening half-precision FP16 arithmetic for SME2) - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) +- FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183297; cv=none; d=zohomail.com; s=zohoarc; b=BXhhmOeMUAY/hODZZv8tWd5k9kGL8brMekfvFV6fvtk7TkFt024Xl7hplzOMAy3R4YTsdzMieX+7ctPxXM3/7P8vaJXke1KWEtODyp9m/AerDGPmHHTWv/Tqs/pFPu+PpHJ/Jit5sRgYCSM5Ys9fHbQ6RO4uNA7HoOwdnXpsS94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183297; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=kGuA0BfbT5sPb+B0NdIfgyuS31mnm95yRWd682ff2+WvW0eS31ZFg8GLRQfNOvzUqGKDs8HwRfQlqnfddjgZ9EGEpJskYI/WxtN/XR6W5l0cwXKB5FxbacPoroBQ+8+e90JYn7o/vf/84xqbFrqLMwFfOzYqfCVhOUNHydDCzSE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183297093395.57330718718936; Sat, 30 May 2026 16:21:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrV-0000MI-76; Sat, 30 May 2026 19:13:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrT-0000JQ-87 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:59 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrR-0007Zp-7e for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:58 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-c85825bbc4fso734258a12.2 for ; Sat, 30 May 2026 16:12:56 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182776; x=1780787576; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=i9p1DZPDsUpVQCaeVTYeCfENaMNwlt1Ov9KixAoaKdIjG5HT6mI0etYZrJDqcLeTmU Vt1a+9AtM0lVTxjzCZqS9R0a0/Ntw2c/3DbQ+ndMJhzaPuvkgaOk9vK4v6XaQBzvR58V F0cE9n1GIZ0c7BcszzVuix0oFKX7qR5Kr9/8/dp7WqhziuBPFCizBZ9TXMH5/VllXhdz iY3m4aLPXFevq54nhdKlBmF/xwQYYEg0UrweoPTlIS5XTsUudS/cp3QcZRE1fpk8Ciz4 T5cp2ZF1pSsrvcdYB8ZyF5tqFGzAlFzGtFNA0yLmo7UW7EkmyA12vGXIFo4IFCNFpsi5 P4LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182776; x=1780787576; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=VpDOg6CMCm4htvboFriYEmNm5g4DaetRBigDoPv1ijSDU0QVfWmrkPmxptufV1Ypic TW12BHHjdbDzbIatrwB6KiwFu2/xBIfFyVNTX4t2USv53ep2BNY649d0fFdPVDBpC9Lb PO9oqvSha5YHlUWW18exbiiJ8WGxq5KDEV4Q3+2DCyiw8KL5CbmH3uiSwDGpJtWjOYdj VzIxnLdrdwPd0m+KTxO/V61vv2RCQaoJRyMFhHPY56G9ZIUeG+aFVDZMII9b2Y8EN3h2 UhexUfMIpH0ax1xcYwd1396ymS9FDIeNuMpr0t9lfpdBccnp/YyCe0Jg+j0J2lHcPjSV WsKQ== X-Gm-Message-State: AOJu0YxpZJjI9gVb42G/W5V1Fl8jd1freZCMcc641dT+uEwdaM28GWQ3 3C/oODMxTGkiRJCa6UmtYkH/1YaTjWqbO0fuMkNvzVlvmnD+/2+zsqa/x/MgmEYOlcVCwzccByK LEqkC994= X-Gm-Gg: Acq92OELYhUkX6hxwInpUzbxxauPBilbrmHHPPwY9VXJFvgw8iD4dryuG6Gs1PyG1iq ufOuVtgpUhXOOhiDJ4ANKVfE7BBxSFY4NkS6UClZX12tfblAgCwtvu+dC7yM9dX0WWP0yrNWL7N 96pFe/kYxOWuXiPB1Gw24xRSD3loPabgG+wtsINYLh55wfAR3jIFxxvecT6e4NQ6vskesp1TVyY XjbZ/3Yj0N+CPQY7hucppQNAGwirOGEmLOr2pYoherZguef/KtG5JZIkUSEpENZHDqCppn+Ms/s GBzNfUwf78cv7fCwljJDA7witxK+xX9mKN/7nq3uHOyc9DUIT2DiuVXISsMYI/e8coK8VP6kI2H 2cH7sHDebKp/JptNRs1L7jWke709nVa5FKxEXjGNJNbGgV2/INU8epq+oat1Rc/KgLv+59J9aPM spuXFnRQKxHJ760Tpz9jelxoF3slk1sl6kKlBAtJY= X-Received: by 2002:a05:6a20:6f0e:b0:39f:a42:9247 with SMTP id adf61e73a8af0-3b4281db00bmr5413840637.37.1780182775571; Sat, 30 May 2026 16:12:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 25/41] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Sat, 30 May 2026 16:12:13 -0700 Message-ID: <20260530231229.400441-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183299238154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/helper-fp8-defs.h | 3 + target/arm/tcg/fp8_helper.c | 105 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++ target/arm/tcg/a64.decode | 8 +++ 5 files changed, 137 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b3ff825488..418abf33ab 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1600,6 +1600,11 @@ static inline bool isar_feature_aa64_f8cvt(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); } =20 +static inline bool isar_feature_aa64_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 36ae977431..7aa8366d94 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -23,3 +23,6 @@ DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a39dc6f859..316e151817 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -568,3 +568,108 @@ void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +typedef struct FP8MulContext { + float_status stat; + fp8_input_fn *fmt1; + fp8_input_fn *fmt2; + int scale; +} FP8MulContext; + +static FP8MulContext fp8_mul_start(CPUARMState *env, int scale_mask) +{ + uint64_t fpmr =3D env->vfp.fpmr; + + FP8MulContext ret =3D { + .stat =3D env->vfp.fp_status[FPST_A64], + .fmt1 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S1)], + .fmt2 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S2)], + .scale =3D -(FIELD_EX64(fpmr, FPMR, LSCALE) & scale_mask), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &ret.stat); + + /* + * FP8 multiplies don't update FPSR.{IDC,IOC,IXC,UFC}. + * Since this is multiply-add, DZC does not apply and only OFC remains. + */ + return ret; +} + +static FloatParts64 f8dot(uint64_t a, uint64_t b, int n, FP8MulContext *ct= x) +{ + /* + * Because of default_nan_mode, NaNs need no special handling. + * We'll simply get the default NaN out at the end of the sequence. + */ + FloatParts64 p0 =3D ctx->fmt1(a & 0xff, &ctx->stat); + FloatParts64 p1 =3D ctx->fmt2(b & 0xff, &ctx->stat); + FloatParts64 pr =3D parts64_mul(&p0, &p1, &ctx->stat); + + for (int i =3D 1; i < n; ++i) { + p0 =3D ctx->fmt1(extract64(a, i * 8, 8), &ctx->stat); + p1 =3D ctx->fmt2(extract64(b, i * 8, 8), &ctx->stat); + pr =3D parts64_muladd(&p0, &p1, &pr, 0, &ctx->stat); + } + return parts64_scalbn(&pr, ctx->scale, &ctx->stat); +} + +static float16 f8dotadd_h(uint64_t a, uint64_t b, int n, float16 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float16_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float16_round_pack_canonical(&p0, &ctx->stat); +} + +void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool high =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(2 * i + high)]; + uint8_t e1 =3D m[H1(2 * i + high)]; + + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[2 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(2 * i + idx_n)]; + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index d6466de03f..4abf75531f 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7467,6 +7467,22 @@ TRANS_FEAT(FMLSL_vi, aa64_fhm, do_fmlal_idx, a, true= , false) TRANS_FEAT(FMLAL2_vi, aa64_fhm, do_fmlal_idx, a, false, true) TRANS_FEAT(FMLSL2_vi, aa64_fhm, do_fmlal_idx, a, true, true) =20 +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 2d06f14e1d..715d5f05d8 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -25,6 +25,7 @@ %esz_hsd 22:2 !function=3Dxor_2 %hl 11:1 21:1 %hlm 11:1 20:2 +%hlm4 11:1 19:3 =20 &r rn &rrr rd rn rm @@ -38,6 +39,7 @@ &rri_e rd rn imm esz &rrr_e rd rn rm esz &rrx_e rd rn rm idx esz +&rxx rd rn rm idxn idxm &rrrr_e rd rn rm ra esz &qrr_e q rd rn esz &qrri_e q rd rn imm esz @@ -1215,6 +1217,9 @@ FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ...= .. @qrrr_sd FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 +FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ + &rxx idxm=3D0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1333,6 +1338,9 @@ SQDMLAL_vi 0.00 1111 10 . ..... 0011 . 0 ..... .= .... @qrrx_s SQDMLSL_vi 0.00 1111 01 .. .... 0111 . 0 ..... ..... @qrrx_h SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... ..... @qrrx_s =20 +FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183324; cv=none; d=zohomail.com; s=zohoarc; b=nPqpgEL1PuJ/69uM4XN/yoDu8//LdUJhLdqchdPY/dMTz9XcoR4G+rr2TINhXf1nC+DgvjTVibsoWK19dl4zLtgdviu/i2CqaXn2Wg7eZSC924WnsJ1ciyN3iMaDp49q1uUpQY/LmEamk4rjdRL4ED1tZyZZQuXmUA3p8VSSQAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183324; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IQqPNC8DicGYwyNnJ/K+IIlXc1mscqAi+348DJPf5DI=; b=TDU5EkrG1qp/+1ADLK9xZpuc0VQRRaB0IcU1iZVkgfGo4faaKSfGPAbgUGmxWlfCmnTIqBrNg/OzPL/ZBRtIb3ut3LqXOknnlest7kxr6pOXrhzcgtto9dpUDvtiEFYxSHO1jr7CHGfao0QgeHd26MSk55Ui4ml/7u6rIac6Riw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183324805597.9691572236039; Sat, 30 May 2026 16:22:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrX-0000OH-CG; Sat, 30 May 2026 19:13:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrT-0000Jw-L2 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:59 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrR-0007a3-KU for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:59 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2bf237e1433so19155505ad.1 for ; Sat, 30 May 2026 16:12:57 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182776; x=1780787576; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IQqPNC8DicGYwyNnJ/K+IIlXc1mscqAi+348DJPf5DI=; b=i2kcJlujP4EZe/IJxumvPkSrxly2t25gD6NMkQZ64VH6WVUzM4ETUGInFDat/NH7P+ 0GM6hKnBMmFI35I9T2AZoOyls8uBH+3sG2RgOiK7R1ZfnY83np4dT/aZvE8FSPC8n3cJ IZsX5Pa2LFdTEstodsHLupLGOlk7nFiNy53VjzRFcTgupzuuwk+M0nrn+5WKIU9id8AM X82Jjjc8841msz20i/PUDCTJoaWVJ0R9ZAstNbeuHcCltncLeaeQXU1wOSMu/RnBM7Ii hPLKWeR7WjtvP+NlERbgqOOKm/D/wxLKwLMENi6lvKUQsFSE1NTs0w+z6GdEcM6u4Vl1 Nq2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182776; x=1780787576; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IQqPNC8DicGYwyNnJ/K+IIlXc1mscqAi+348DJPf5DI=; b=AuSKMPBnu4xQ/QuLFGRx/nJ6WCc1ttPVKKcTwYYt2daEIR818SS4Lf6mgtBE70bVQ2 QiplBkY1scfVX2W8eji3LZxCwTaT/uQRkLU2Sy1pFdFtSrpnLhy/3EB90HT0EYRSyp9G K3p0dX3aUKAq4YLRckTYN0AZMPxVm9FvQd4WLrqEQnorckJMLDwm4afY7ltYQZfzeYlQ EPrLOuhirHGuul6pHQ+4xuLb2S887h6qiV9YGGvxC8jitHuZypwWxnIj+87FWmNXJJ6S jryxPQS1NW7s8z43HyZpZUTCYOoBS3fMocXSHZmycqZVOGwktgmYPeQLZ7znpRuzUiYT lePA== X-Gm-Message-State: AOJu0YwXFZAjXqMW5lcTcllIbXW487BlQDo6EdGTEK1LQDqTjLzNFEm1 uesGpiQaUmWnrg6TyFuglMktqsY+zq/U/pwBzh6OOWagYap+1AByMo4zmuE2HnEekNLW5ZqZ0ev HHt+yNgA= X-Gm-Gg: Acq92OEqKeLVlNKyD/CbwQVAj+gvlmPBKMhLnkiTCNgvu2pd4D1+jHs7UhGsAr8FwkN HbkCwscE1XgYr8jEKjtWSPz3terF95x1LNntufIO6q8dQhY23MoHhOOeHrWF4dyLUHkRQViLWhu dtqTWbW1/73sZARySiCcE9e/NL3p32KwZ+zAuO1bmKZiJSJeqegFPk/eNMQBX8MGR2JXbJqF1ia 3o4m2G7Y1TV5bgRG2l4uzTiDJOVP1w+9FSeUoi2wm9An8atEA1bgfl72egdik4loj3v60q0XuHl iatP1bgur0dpEq6LX/3Y0sN4Zk/8D9kNBLyfsLhYM4Ne+TBsCIf9RnaU6f+hOGMn7Je0RLR/k0y uwWH9ud796lKkOGSsJrCpw/fs13c9nV1L2y3i7v1pJSvbzj10xjSHaqpQCaer45XpQ2LxH0/3vU e1W6NGtTNSIQ7EZLiREcXutPPF/Am8ZJyEpilZ1aVb/QuyF9MEMg== X-Received: by 2002:a05:6a20:7490:b0:3b2:86a4:ab57 with SMTP id adf61e73a8af0-3b427f88ba3mr5377371637.1.1780182776149; Sat, 30 May 2026 16:12:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 26/41] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Sat, 30 May 2026 16:12:14 -0700 Message-ID: <20260530231229.400441-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183325607154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 33 +++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 7 +++++++ 3 files changed, 45 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 418abf33ab..5e9eb3405b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1555,6 +1555,11 @@ static inline bool isar_feature_aa64_sve_b16b16(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ZFR0, B16B16); } =20 +static inline bool isar_feature_aa64_ssve_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index a891117916..1044b81c95 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8355,3 +8355,36 @@ static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI= 4_2h *a) } return true; } + +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, gen_helper_gvec_3_ptr= *fn) +{ + bool fp8fma =3D dc_isar_feature(aa64_f8fma, s); + bool ssve_fp8fma =3D dc_isar_feature(aa64_ssve_f8fma, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8fma || (fp8fma && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8fma) { + s->is_nonstreaming =3D !ssve_fp8fma; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e2106fc7f5..71ec09393c 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -29,6 +29,7 @@ %imm9_16_10 16:s6 10:3 %size_23 23:2 %dtype_23_13 23:2 13:2 +%index4_19_10 19:2 10:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 %index3_22_12 22:2 12:1 @@ -73,6 +74,7 @@ &rri rd rn imm &rr_dbm rd rn dbm &rrri rd rn rm imm +&rxx rd rn rm idxn idxm &rri_esz rd rn imm esz &rrri_esz rd rn rm imm esz &rrr_esz rd rn rm esz @@ -1864,6 +1866,8 @@ BFMLALT_zzzw 01100100 11 1 ..... 10 0 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 BFMLSLB_zzzw 01100100 11 1 ..... 10 1 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1880,6 +1884,9 @@ BFMLALT_zzxw 01100100 11 1 ..... 0100.1 ..... ....= . @rrxr_3a esz=3D2 BFMLSLB_zzxw 01100100 11 1 ..... 0110.0 ..... ..... @rrxr_3a esz=3D2 BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ..... @rrxr_3a esz=3D2 =20 +FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183014754686.4156109802478; Sat, 30 May 2026 16:16:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrU-0000Lv-Ry; Sat, 30 May 2026 19:13:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrU-0000Km-2L for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:00 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrS-0007aS-7N for qemu-devel@nongnu.org; Sat, 30 May 2026 19:12:59 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c856db4fcacso1942966a12.1 for ; Sat, 30 May 2026 16:12:57 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182777; x=1780787577; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8638pdFBL8KDRGiBmUmVT7L/zfj6XnB9LqR0Mzcf5iM=; b=wGBu0joyEOUyHm2gsozMA0poMyxSdiyGQhVzZ0DlMKTbgDVUchVk4qoQs6CuC2sBJu EoRj830S0ieX7HKQ/VrX/crUieWZzA8sV2yqitgF+cc9d1NOwc/SR2rzQxdvSPLAq2wT 8eYxyXfnpFC83GR/82/KaKfs3QnmlgRWWqnnKhlKxOp94hXM8Ub0Tw8R9QJkfzXtixmo 9u3h4O9TAkpUcK3t6C2socMQmzN7lyx0qHyeSetbkhxOT1FKnJRGkQTblGfx/ypcF4R5 Mgn7Z0qLbLXHXnLRH2M8SO2iCDa6iN+hPNOumNUhB4qtRir9WEOq6LEUd3zz8PZVb4yV Avug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182777; x=1780787577; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8638pdFBL8KDRGiBmUmVT7L/zfj6XnB9LqR0Mzcf5iM=; b=MkCtcjaddReYHHEHTSWUiPx14TPpkrjwuKAM2kjbptblkG7KM8rNgUQHAlEtzxUhPv i2MUn2S8AECce8G1ipvMoPjz1odDcfPVCBXFcMVLl6uqgPdR2DxR419K2s9Kvtamaf40 lqre/AHTCFEdDY/OfNaYzSHGxJsx2R2955fGpxOz91vf9Mc4/uYSMCP+jbxwrhG+WqW2 HJXv2grFGmL1aduldR6To7iLUKiT0QpRmaH2d5Z5sm6X0DeuD+2VF61QVsJT2hazQZV3 9FlNUkLGbAAiOYBw6pChrkSDo1ky7dvZEVt3OXqrDxVbsGW3QEbM+KQnO5JiI6AnZukv cgFA== X-Gm-Message-State: AOJu0Yylgjl2kMq2up+3j+XTJCAXt3y90ChKXSLzSUMOBsvqfcbwpoOx 9YsLRG50Ld9tEWwtk3LApRuDlAH3cAeDzKOJuPscjBNKIiuvxpzf490ogNM/cWg2xrqAGp6StDM MBCi5fE0= X-Gm-Gg: Acq92OFb/Dlrbcu1rDWKbix5AUIzHqhcinioNbVQ6iJOj8d1RRHgClx8l/Nf0GEt2fG ZG7LhjWMBRARaxYSP4x8tChFyki1xewDOzxf0qjjrosBMKTwse9S5vB/Z/PuTiAqY56VCmNtrS/ uF6cOkaRUog+mtZ1kW165PY9FdwoB6iaQxL9EoN2aVSRugFJGDPyhiEyWK80KXzvhkyYBNq87mi ybi0V63svwDVvEyqSCv0Vv7MzaCWhmEuihYP/H2Lkv/v8f8b8OopPAevHP6lkeYknMglc5HeTSk b9xpBd9nsIHGYAZ8EWEGpd956AbySgE01rJkva7vS+5FG2IfDo+8Vrg5yaXbDkspAsf4PgPPzrT o6EyTv6JyXlUBACBWiO73XXPbEHTfN+BwzIZ6h3n9aui3l111Yxlx8MM4HjY7ylL/fExSzOlpj+ twSlhFTUsLC3LGNlBfLYudahseAYpiqd5VdsOrAKQ= X-Received: by 2002:a05:6a21:4584:b0:3a2:e089:ae5a with SMTP id adf61e73a8af0-3b427e73a57mr5123330637.20.1780182776785; Sat, 30 May 2026 16:12:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 27/41] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Sat, 30 May 2026 16:12:15 -0700 Message-ID: <20260530231229.400441-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1780183016237158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 3 ++ target/arm/tcg/fp8_helper.c | 55 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 ++ target/arm/tcg/a64.decode | 7 ++++ 4 files changed, 68 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 7aa8366d94..802a3b430e 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -26,3 +26,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 316e151817..2e3eb43799 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -629,6 +629,16 @@ static float16 f8dotadd_h(uint64_t a, uint64_t b, int = n, float16 c, return float16_round_pack_canonical(&p0, &ctx->stat); } =20 +static float32 f8dotadd_s(uint64_t a, uint64_t b, int n, float32 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float32_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float32_round_pack_canonical(&p0, &ctx->stat); +} + void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -673,3 +683,48 @@ void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(4 * i + idx)]; + uint8_t e1 =3D m[H1(4 * i + idx)]; + + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[4 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(4 * i + idx_n)]; + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 4abf75531f..b58a55895b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7483,6 +7483,9 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) =20 +TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) +TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 715d5f05d8..ee7391a13c 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1220,6 +1220,10 @@ FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..= ... @qrrr_h FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ &rxx idxm=3D0 =20 +%fmlall_idxn 30:1 22:1 +FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ + &rxx idxm=3D0 idxn=3D%fmlall_idxn + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1341,6 +1345,9 @@ SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... .= .... @qrrx_s FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 =20 +FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182869; cv=none; d=zohomail.com; s=zohoarc; b=TkndDlBsMDLrJkOCsG9ibZmiPiyE/2W8e0WNuDB7TXb922+L5SwJid+HxpW39M9m6ee8q2vuE2Strae4tvBUrlwLS3fqzyi47Fmx1RdyaxGFxTlSZ3/L3giweniK+3mHEli5CZgAz50GzX4HUZgLk4+GjiNDDRiDz7VkZvUgwj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182869; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zxaQcX3SsrNf12ryZ3sI2+knj5jWNC9sXQqDHj+8xnE=; b=mrc+SddBujZwwIxndAndnuqSMI09wjP92/pEHQ5Dzl1cUU4YW4NGkTUjZ3hxKPMgyMfHAjTFxYRT6UfAm+M+X/hYXEN3SLsVQU0BCRfiwdmbOoNWvxYpwoQuFLj7OHzGOzLQqjiUHhc3IwiVXeZgpezq4Sg6meTJUBZde/nMoY4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178018286921189.04518806292003; Sat, 30 May 2026 16:14:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrZ-0000RM-85; Sat, 30 May 2026 19:13:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrU-0000Lf-QM for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:00 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrT-0007ai-0z for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:00 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8423efad617so39549b3a.0 for ; Sat, 30 May 2026 16:12:58 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182777; x=1780787577; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zxaQcX3SsrNf12ryZ3sI2+knj5jWNC9sXQqDHj+8xnE=; b=de3uq6qclHN3K+LqU/UX1nQt0gKRil4zfDPf+y6lgIynBaITVLnq9s8I475Xjag5tY 43G5iZjiKIqbnJ6T5qNQYuP/4jR509KY2OQaGUbdmcL2kKhisRLqtAMvP/29YF2nIaFP XMgt0n+ty9rOSf5XW1sHTaGd8f3makadrjGZiu0AHRQB4JoRrdRuCJR32d3lz/5NFs94 HTJPOmXvV5f34bcoqhWGHgvkzBQiFtvfGiIXBEO9I7+6lIJ8/tWiOtD1bP5dmEJrMjIn YZzRbw2G5b1rzoViAJUZTi7MVjDOcH0WzPQkuEynvVtV9ikcm9bao+xuzp3SZsc41tDQ 2lMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182777; x=1780787577; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zxaQcX3SsrNf12ryZ3sI2+knj5jWNC9sXQqDHj+8xnE=; b=n4ycn9ZpHqnD/1Yr+M8ygcHCYFdZPTX2fd34pQyt6EqO1i7/mZy3nb1IZdmjWSTby+ YjEdm6fi8EQwth9WyFSXykxtgYLm1g0QjMuyJDQ80rCU7mT4czcCUErkCtNyaq4+IXQq qQVP/DNnO2Jk0Q4nU/btn8UXtHL9FYRbWoyjdrIv2Pu86bARkq6jLZiR0MGclp60JjHi Wx9r7NTnKqCoINA7dsBTwEfR2MeroHwAhmcKPHCVT1My20lnwFcmsjgDAyUowavxW4sC IJA8EzsqxVuKRxxo73wQ7FHE+Q4HS/D47LQZwRxqmr22pgYILv4znh5zNrXEafcqzJ34 sjbw== X-Gm-Message-State: AOJu0YzpMp36vHuhl+iCqS/JhK5A7VlkjDnk9MVDCTALkrGdZ0UQK4XH vnzyDhiSDMqiu+e4gj09ik+T8z1j+PjNq6yjWfzATlv4921OCOmTX1znindmrQWtPclWmbqX18o uZXlURYY= X-Gm-Gg: Acq92OHwUGeTaFBD+E41FbSOXeoTVq6BKaqW/v9K34e1J84SgyTBIPTkCZpFETq+S4h YYEgGQrpZh1MrMJvI7f5x00cSj3srMqsM66aIgvp8rPrgCJr4VHsvXNRo6YHQVJBSlaO3YgaIhA 1NoSY84EpSLUncUmAkSBoLfvOXOARw7LU+TFP9Ivy7wduP2kMKQEHkfYA+A8o+O4Azubq0o5DwR ECXmY7lTxzn8JqlauH+V+cp6J5CNaMeH2tY+T4uu552H/hfYmv0+6EEiLWum24gL032UJflTRbq nVyWSKM7YG3GHrk+FbYjfEvokR0sLo/DskjLf4oJfhjtNlA4n8CX+4IYI3m6ynFHZrzRBhWGnLS gCFUh98W/q2ERPk5qvQj8lnY8seVPAcxIP7QrWv6eg2iYLm3tzHfzpAXn5fTgQJUusi2kD0xunS 0/L9uOB84d4rsz/ELW8LqwdAlBi0MYJ3eOSQXDFtU= X-Received: by 2002:a05:6300:6701:b0:39b:e9e1:699f with SMTP id adf61e73a8af0-3b427eab30fmr5355167637.12.1780182777357; Sat, 30 May 2026 16:12:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 28/41] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Sat, 30 May 2026 16:12:16 -0700 Message-ID: <20260530231229.400441-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182871166154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 3 +++ target/arm/tcg/sve.decode | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 1044b81c95..95ec3a011e 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8388,3 +8388,6 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, = gen_helper_gvec_3_ptr *fn) =20 TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) + +TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) +TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 71ec09393c..06bbd7fa63 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1868,6 +1868,8 @@ BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 =20 FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 =20 +FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1887,6 +1889,9 @@ BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ....= . @rrxr_3a esz=3D2 FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ &rxx idxm=3D%index4_19_10 =20 +FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183052; cv=none; d=zohomail.com; s=zohoarc; b=PrAbopOgsA4O+XWPXujeSAsh7hy7xNXm/OiMSOl7H0QcDP17sQ+Yer1ZbBPG2gygghDfAn+82cZ5jWb0hyzhRPfVW4uaOPBHFulnO1bQPovymgdiGK68iaRGd/WW7Bkkm/JIRi1uytJSursDWJzGLXXqii+yo7wFG5ptEAaXvF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183052; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=BHBFED1NO+osmTd8LZ+cA8TM83kvkCyErzeorbhfRCinYwK0NMKmbyuv5oFw6ymHv+kysK2qB6DuCpRC+fnxc7d2fXOaDoO+eGg755CzWe2g5F10vpLniGF16G/eUTLB9xExHMbA+sei3iUWP1yuEQy+ZJG0hUAYQxRUvY/P1VY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183052203732.9507712331582; Sat, 30 May 2026 16:17:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrY-0000P0-Bw; Sat, 30 May 2026 19:13:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrV-0000ML-8z for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:01 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrT-0007b6-HG for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:01 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-36baec934b6so1152059a91.0 for ; Sat, 30 May 2026 16:12:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182778; x=1780787578; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=fxBf+cpryuAcRWbXEtCd9h7HKu58IIakWU7mIajTcW3akyTGH0e1RCs/G/wzGAMzB9 7cT0JVtzkJwoxMaHljksMThlOmCryW3BhQI+NgvvffG8f/T++m6gAp5jsvULabzRuLko BE3ybQnxHXYTa8/tQPhvrxt5OcyFXPixItMxit2hKQb8O6/q2aNaooCVw4W4g2E1M2II iNLk2H5W/WAxlOMXITGEpjkvYx8MQchueTtSZWG3Rlx3qPsn6tdeuf4gOrCLDP/tOT6Y oK38BAriylx2ZYT7CPzn5REzHy4arsyX5kyoFiNbQifoNrPLiOe2iNcVkJUwYCYsxxgo cZAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182778; x=1780787578; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=VWMhovt9dv41+CVblBluBkXLirsxFsjaXpREo3ex4q0C0jypFn63/0C0+yEMcxdkDe ogvKwaKAseHYrjHFMKYRmjl5v6lfg45KM6bKf6GnY0pd27BxUOpRwlvaSWGADOx/rKs6 I49xarjsk/xtE9H0IuQHyTAmNeZVZ8EXXRV632gW7fJ2a3vbMvVruvYiVapp3rahHtQW sFeS+gGczpcSSpEatj3y2JbZZEdg1l6m+OTc+/c/jotceyYP1/F1ayqd1k21qHUV9QNX gLZU1MS6gHXwhsiVt2mpZ5kRhKwM+TaS7+FgMjsKi4otTHc++OCndZFXQbP0bW8tjJa6 62QA== X-Gm-Message-State: AOJu0YxC6xqTBtfZ4r3hXR86v8nQM766B7zDI+AREibnvPSJcdXHK/Wj cOEehGSFA0ic8p9mRKkTBHVz/jxLOfIFpK4Mj4oodqd3SrsyN8pBsp+S9atthGPDu88QvkIul8f zAEnyRSQ= X-Gm-Gg: Acq92OEc1ntXmu3agxJFukuOXBzrLBeEuxjV4VRJoVCgM5FyVHbaHWynJsSeaNM7VZh NKimbb20xiT3Qn+XLoVxMgHrsVh/CK3jURWy7M0z/oO7+T7BhS+V5dmaM9lFs4DluuijB+TXGa2 whOKTjuVJTUC832jAy5c5+Djpfn7VhCkcoeJZmUjK901KQfKNoFYp2TF2vUnlH30oOcmmFNomZQ kC+NeqeM3i4QOhe6kR0mYw1limeAnBuC5bzL/jRsRhvQKaY96bCDrV4b8bT+8wUHtvNyrwzxaiY 3+UnlEIhQ2untirrASzU6nXGPHMEqDZZ5mk1fxdpXv4upTobbHgqTLDKdVj8OuTt7a7pluv5V7w jAlnjc0DqXFdqwdHEmMxTxvitvTkRLIm67RHKH+6eWyd68BhksYmXZ65R5ZxZ0pjjLzJZtMgQr0 MUh7PirR/dt/9lYylXJIHC1Y80rVp70ri8k+hH3m0= X-Received: by 2002:a05:6a20:144f:b0:3b2:b1e9:f1f2 with SMTP id adf61e73a8af0-3b4266e645dmr4420952637.4.1780182777928; Sat, 30 May 2026 16:12:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 29/41] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Sat, 30 May 2026 16:12:17 -0700 Message-ID: <20260530231229.400441-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183053849154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 06c14e82ea..a82d65a681 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -226,6 +226,8 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); + GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); + GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index e466ab5b8a..6ad841c51b 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1378,6 +1378,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, B16F32, 1); /* FEAT_SME */ @@ -1396,6 +1397,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 41fa9bfca3..78d1938656 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) @@ -161,6 +162,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183042; cv=none; d=zohomail.com; s=zohoarc; b=fbAOis/lAsr89cnnrpZb4wJ7qHptNPXrl/8VFXcubxGVA4o5/1bQyrs5n7+U+DHnFBNWG/ozXa4LuYN/xFumracZMX0M2iYKH9WJXla0Fl+dcd/7d4FfyZ8/cs2fmUYt4wQMtTusHtzdH0ecItfzcH0p7/6hA0rm3crYps7d9js= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183042; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=DFPddd1JKXpWxOHPc1rBbkxaA3IFVemhePrn6rUDRMrJyBxrt6fLq+4SbsSLWdbuvkKbaxpm6muCAbO5p+iIV9LVgx2i6V/G6SQVNmzBp2lZtl6wnvkeFUgefL3YPI1dbCxvt4Z7+HILl6UyzsYqWPvAqV0TWsl0XAzJ39x7P4g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183042633220.94604782735792; Sat, 30 May 2026 16:17:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrY-0000Ph-L1; Sat, 30 May 2026 19:13:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrW-0000ND-Bq for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:02 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrU-0007bS-1C for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:01 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2c0c3315c5dso2097805ad.3 for ; Sat, 30 May 2026 16:12:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182779; x=1780787579; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=GqqgCtDGTDAiAgUyuImJV5xAT/N6GgNmyaQ+oVf4pcWTj1XhNPApP2Uq7ZthvKuZeG R/+wyG9nH45X0xpxhSDxw9XhsMhU9zGCo+8x97m02tnfpiA154QLbqXEjgf1tlq0BCQY YlTxsLmLhPA5BpAXaTFqv24Xmc0bO7QqPJPe8uMEBS5k8l54GtR4JYX9CbdZDMfoDCQE fCEvLcNmSUFzXOqC6+4q4A2NAwHgxmeRwNDvDXP0dXu75cwoiGtAO1/KQ3wIs8ye/YUJ O55hzDSNYZ1NUsL87Okn+FakjmJQ1xkTVdZQ8IhSOI5dd6cNfCyXgEJqcTi33mm3hkJ7 hfTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182779; x=1780787579; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=KLg4s4eEYA6Ge2kMSjyVaTqvjDZDcOx0Dk2yS8UBBf+u55d4CncixYw7V9emKICNnh ylOv/Hpaq01tAhXnV8tQbqtQDljXmkgheGabolZnOb7wiqnbWLp1dzG73vsxsOB5S/Mg c5hwE6rq1J+pu+iX1+qp1xL8+9Kcyz72C45Y6jnM1MlmNudGUQzJt3d9anLRAKP1gMmq kd2OK5iHSS0UUiPcNysmMp7TLnjfL7/hqNg+AhS0iS6aQd66gIguJYka73xsMHRLDMfr 6rgN9JyRyDesfNYvorx9RrGzpk7wGIz1i9g0NsyA8vm8R0aeE/TG7k5IgI+Uyp49DPR6 Jv5A== X-Gm-Message-State: AOJu0YxKXC4l8kjupIiXX/++rNL0H8nUKn8us/XnvfauLSOssj4dCgyz sQXjLiUkxTnEPuQ9xjb5koQnjNq7y0k8i06LmiJdmFnZ71WhVgS1+HJYv9No9otv+ow/pOZA35w rGLUBp6A= X-Gm-Gg: Acq92OEKKKjYdf3yu1s6Y9wg23DR8NcLBg58wS2EyvngGWJCQGgrtqJnP/Wx4nt9gkA GvSBhFYbSNowkNWVZ6jvRuwXzb5TIiIk8OAKHvu2kyE0cxID3MovFz1mXV7fgD7dWpljks1BAru WCSVRPfbHw+jym33N6HfUeLOmVTeRJ5zyMo3fa/i87W5xXbrnTap8C0Wwwx7BLek9nFQUMdyaVI 0JEBR/nsXnYl7szoNlYo95/L/tTLfYO1LiVvVCjgfAlmp5E3MY2onIfHdL4vFNIIT3pn/YJDpR4 vE+ekDFselqL6DABrYRuJ1A8jxBAUQPJXYp28FWTW5pE0kQdN1m2hjXFgCulF9fEhtkZGjd7bEO CbYzCoK7pwhGoki1HKpadkuyTFIhIycpNn1bX5g13j+XFNGWADL9cz/+wg7uSrRwZu8kPfAM+9i PV8e2iwk6EDq7RR3nhtkaH/xKYfzLoK234z+CLzTc= X-Received: by 2002:a17:902:cf12:b0:2b0:52b7:e82 with SMTP id d9443c01a7336-2bf367d0043mr62499315ad.16.1780182778627; Sat, 30 May 2026 16:12:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 30/41] target/arm: Implement FDOT (FP8 to FP32) for AdvSIMD Date: Sat, 30 May 2026 16:12:18 -0700 Message-ID: <20260530231229.400441-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183043757154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 30 ++++++++++++++++++++++++ target/arm/tcg/a64.decode | 4 ++++ 5 files changed, 81 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 5e9eb3405b..4342a2461e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1610,6 +1610,11 @@ static inline bool isar_feature_aa64_f8fma(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); } =20 +static inline bool isar_feature_aa64_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 802a3b430e..ee6f2e9236 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -29,3 +29,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 2e3eb43799..d1d5b22cbf 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -728,3 +728,42 @@ void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_s(n[i], m[i], 4, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint32_t e1 =3D m[i + H4(idx)]; + do { + d[i] =3D f8dotadd_s(n[i], e1, 4, d[i], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b58a55895b..960de1aa86 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7486,6 +7486,36 @@ TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, = gen_helper_gvec_fmla_idx_hb) TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) =20 +static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + 0, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) + +static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + a->idx, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index ee7391a13c..08c493c11e 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1224,6 +1224,8 @@ FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:= 5 rd:5 \ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 +FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1348,6 +1350,8 @@ FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0= rn:5 rd:5 \ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 +FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183034; cv=none; d=zohomail.com; s=zohoarc; b=A6vHT2PTaEcv9JFDdAj5bF837inNUGsd59qymeJRWqLrwu5UlW1tgFFKI2H0k+24cZjOexCvyoOEcPhpCex5WrbfI5RkuT2FD/dw9zd/Bl5aQJRb+bcruNFgJ69BUu9wUvMMSFPlbR2q355u3xiq/9D64mCwdfZV3QfzFu27FgU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183034; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8GUy3BdiFH0e2kziTMnKk/rosFHDSopdGmPfzydA1pg=; b=NwQK9q3/81Wqp1g7mqC+T03U+LiBPHva7w1e+SW5f3b0IZH5xeTPBmzF+92t2hx2qPHsPn6cjN/cj+eETIH/QlnF4xtBJD+5qNSnadlFV9buc6tpM3sAU/ajKGczQOBzMobB1iJtomLxsIt6Vc8kbqgbVaoZacRRXQfxqhKDGKU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183034373923.1426327995732; Sat, 30 May 2026 16:17:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrZ-0000Qp-32; Sat, 30 May 2026 19:13:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrW-0000NX-IB for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:02 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrU-0007bo-MC for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:02 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0c379e8ffso1236075ad.3 for ; Sat, 30 May 2026 16:13:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182779; x=1780787579; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8GUy3BdiFH0e2kziTMnKk/rosFHDSopdGmPfzydA1pg=; b=HfVykE4mBVsqVtPSzaPc6PPK0WigZbkxyxfhySes5JzWsjNvJuc0euMQKa12LYKV3k UlKQyF3/TnpMdRczlx32qExsws7A+p4Qf2w01DLAfTAEvBtuHDZEnIbOl/o7Jna2TkF9 //SB3ZWzHDKD2hjN0fg7AtWxGCUtaAatlG+Unc2cfd94V72lFAonLxz0pGuKkj+8AJap S8RhepXQid+iRORPMn6F8mpUKsZDY36waWLwn2ZjOAky9ugsIBXK9B3STEPIbiiKN6Hw 6ujZHWe6WHISGgd8dPRsrfKoP896RWUn/gzxa7XVC+wDUiwUNYt1moeBoXOuu9RtnFeb P/4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182779; x=1780787579; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8GUy3BdiFH0e2kziTMnKk/rosFHDSopdGmPfzydA1pg=; b=ggvnje2RNdJo5KDI9P/7b69TM+oBdcPApJ2zGBphXLZ8oalkgOvY37wTwhKCSvduOC Xy9jfLgcNz4yIjI9hC6TvafG+Bd1KQrtZzwEWQdtAo5cGgsHq/H0Ef5oM/bKcQHynqGz QFD2bpBAI2uqAzM3ETz8JCcrixENIpx6nrtNmGZcQCDEVMOer064kS9G0FbRc9INdUSZ NVyQpyjQuNBUra1nLS4i+sGVfh11y/Zwj0ov/JUVMKidJpSuPrzwRfx95dlHIJKCMBiL mcnT/ySRGSYW6pMOOML0fDxPmUrZ4SGeRbQp3MmjyyoJtY7uRgLtQ3ifB3bsqN4lBBpi 6aWQ== X-Gm-Message-State: AOJu0YwOGeQFyQB05iOwmoeXgnUsoFG33zvkeq6+xP1MlcWmjIQ41I+F WLRUDbrRYw0fIP4vJBR+IOnSndfead35aQl05XG39M4TAGJG1JX3wdTIXKyfIrr21hNyIoRgAKZ AfEU+3Mk= X-Gm-Gg: Acq92OF+BlIvQ8bQ1TWWOLs3euLSNayIbKZm4Kgt8oEuO/QAkyD7cXyJByqOzdk82l0 0leESPmqfFPEgf0nk5XTyfIiT7GIBaYii3y1XpY5UUX4O6/jY5F4DR6VUI6srRSS48Qzbg0n9OQ eBNTSqMae3cC19Owu/kOdr375d32ifIVgwMz5lOW5xabRjcGOq3k2ipDQJXxfkkvtYiBZDd3guC 2/JRUZg824IFEN2fQRowROCj5k3oma5u/KbHwx+b3sYjAUX/+JGiXMPlTxEB23vMSESNvKagTOO 1+c+gycYCQS9FBA/MWzdrTyPsPpEvz6x+xhf3nJG6zWV3jTA7gbV4sLUdnx3gusnvnLLHK0GG9c gNc477fWFIgtvw3pxoA3+wR+pbcHVx/qSymHBiltLHrMuhlPWRlTf6VbzwtvPDKuZEKtFGe6t4p T/JZE6LoKt5IM4fmFu3rIEOei/rW//3/wZDdsCLQA= X-Received: by 2002:a05:6a21:9202:b0:3b3:23a2:edff with SMTP id adf61e73a8af0-3b42823c91cmr5086905637.28.1780182779208; Sat, 30 May 2026 16:12:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 31/41] target/arm: Implement FDOT (FP8 to FP32) for SVE Date: Sat, 30 May 2026 16:12:19 -0700 Message-ID: <20260530231229.400441-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183035683154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 4 ++++ 3 files changed, 44 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4342a2461e..fbf4decd74 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1560,6 +1560,11 @@ static inline bool isar_feature_aa64_ssve_f8fma(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); } =20 +static inline bool isar_feature_aa64_ssve_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 95ec3a011e..96ea0b4bd2 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8391,3 +8391,38 @@ TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_= fmla_idx_hb) =20 TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) + +static bool do_f8dp4(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp4 =3D dc_isar_feature(aa64_f8dp4, s); + bool ssve_fp8dp4 =3D dc_isar_feature(aa64_ssve_f8dp4, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp4 || (fp8dp4 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp4) { + s->is_nonstreaming =3D !ssve_fp8dp4; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 06bbd7fa63..c49e992f10 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1874,6 +1874,8 @@ FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5= rd:5 &rxx idxm=3D0 FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 + ### SVE2 floating-point multiply-add long (indexed) =20 FMLALB_zzxw 01100100 10 1 ..... 0100.0 ..... ..... @rrxr_3a esz=3D2 @@ -1897,6 +1899,8 @@ FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn= :5 rd:5 \ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 +FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 + ### SVE broadcast predicate element =20 &psel esz pd pn pm rv imm --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182846; cv=none; d=zohomail.com; s=zohoarc; b=DqRsUKv24pLO7Yh5eSv+Igm7vGtM77r9laTXKkz1mlfo458oW/gOb9+aNSjtwuDGlLpqV8YRdfTqAqRM4ipjtACHh9qQyaTHO0oQRyfwGMtCaXTdVYGY7jkPAGKVMkoZddPm1+7C7NW5m8BmoIyzS4GF7ou1bVNYM6XbPMHsT2s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182846; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=lAqViVl4koTpiT7Hy7qcUDjArJOLgay0bM3uit/p9JpNl7ux03yFvqeAMniAs/5IDBnd/2X+6wOUwuIuzB8E3k96NLxAl/SG6fo+i3JX+ASppFVITJvEzSU3eAS5TEtC9fWFLiMb6FkglVDYrH34TaAkUsYJj5wQo5E7FGnYrhY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182846645908.9215724988271; Sat, 30 May 2026 16:14:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSra-0000TM-TA; Sat, 30 May 2026 19:13:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrX-0000Of-Hb for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:03 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrV-0007c2-67 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:03 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2be1dd4af34so136576025ad.1 for ; Sat, 30 May 2026 16:13:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:12:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182780; x=1780787580; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=SfymqyvVO9CAcHWrjHDXaUIK5zg3VtzhiET/V3aMGkzvfgFjzrIo+OBhjxJkpCcB7C Owfs3Xbnn4ScV2DNR/gTzAYgoNfNtk4N46rw4WciGQfDy9GWXz5OIlj7D7E+lYs73pt5 /Dqr6ZP1SzUmXNms9baOhUiq+8hzCRvqHcX/Lw38kjqRKcigLNsNyNuo31oAxavetHYh gAQayKOOXCil7KdOf5dD2CpnOjbd0LQuNujwFcBfSP2O9P4KLW7ZW2BRKsjiqb6UgTHi Rme0VT/2oVweAJS2aIiCv6nkMxC1YQuX91/QYIVA7/2qZmneHwrwRaE4rd9BANn77cjF PoIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182780; x=1780787580; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=YmrrJc8yybvcSD/ZOi7c8c3uQZ9nWUy10CXW2ykYQ3FhVnO6brzgzBqxVZOA0p3mUY i7EG9fO7itAfokZJtreHf01QQ8AwbjA/Ikcx1L/LmdB3xDPitMhdDx9eefUjMwKQF0sp 0+oJ7wsjLkdaFusEWhBSazYX69Uch1BG0y4epj8fKGvk38l1oWdgok8otfxEyxqpXBp7 PKv+aspZSHGGEP3ou7JqlezBjyTThm4xiouGBHMACuej6lQmL8OiBH2nSISo3bDnRsVr 5p6HPq363SXnbJsuDrM+p/+fgDO31Tu744emNxFnkH53ZubzXoAZBEM1wH6zj+IYwqYs FDvA== X-Gm-Message-State: AOJu0YwBv2xW/bWR3aJvf4vadC3SH5YL6XHOmA6vqjqDOwGNBLCQHXzB CbEe7KzEs/xgI1kgHYCZKBHJmmT+8DkppjbrWcRHdSd7oP20Lk1pmK3eYNMpOLeWwSFfG39vQwa GBzpcDD0= X-Gm-Gg: Acq92OEdIrjzCMdMg2Bl375ipSumCwv7j6j8+5qpH/OvmlUv+3GE9diPJGr9i39FQTG ur/bxWn9pIcVmaz7X99XXSKaRMlE/VxVdk5VhGm2vYPm6FaD1zv3ynp6r/HIUKJnIL30E8NlAHr ggWWvSJpLbyqoyzob8HYDVsv+J8JsFbu3mOeS0UxaP9ueXNN7/FRkg076xk50e7u7zFwY0F/5vS y9VuEQahveeC5gNXGmVq4gB8FRjTZI1mn6vK5juIFw2gJrdZliA/04dVwu7nlvGEue/6xdndZmd e22KV6StiVSiTUxpjnNGK3zu66yXbfpbSokAy6ognvLTdldY83Tl6yJUT1ZN9JOT5BMhSehhBZl eiHPXLriObrkM3RzvSceKTcL7hTT5AZnVRhaIWFbZXP5Glo7YFNBrC5Rg8T12Dvq39yLkX04IgL Vn/DxaYfCQIvsutkkFp0UG998VuO+wRvvCs5keuMg= X-Received: by 2002:a05:6a20:43a3:b0:3b3:c7e:fda7 with SMTP id adf61e73a8af0-3b427f5167amr5081932637.39.1780182779820; Sat, 30 May 2026 16:12:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 32/41] target/arm: Enable FEAT_FP8DOT4, FEAT_SSVE_FP8DOT4 for -cpu max Date: Sat, 30 May 2026 16:12:20 -0700 Message-ID: <20260530231229.400441-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182849122154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index a82d65a681..be33fede6b 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -227,7 +227,9 @@ abi_ulong get_elf_hwcap2(CPUState *cs) ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); + GET_FEATURE_ID(aa64_f8dp4, ARM_HWCAP2_A64_F8DP4); GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); + GET_FEATURE_ID(aa64_ssve_f8dp4, ARM_HWCAP2_A64_SME_SF8DP4); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 6ad841c51b..1e2d1311b9 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1378,6 +1378,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ @@ -1397,6 +1398,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 78d1938656..8d786f9dae 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) @@ -162,6 +163,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183319; cv=none; d=zohomail.com; s=zohoarc; b=gYkx9FPVLFea0KT5OhqQaIwOxRJdjq5klNF4SnBXre/ha0topI2hXBq/VoYpMk7wsnYfIdYr2AA6RFuRqIBKUELlFeyntR4IfyzUfUrXwSx73FmH5B8c/Z3RfccfAdj9J/HHwH78wOVq+WtpIT77tX0OLxoaOjcH6mexG4EFgqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183319; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=GmGrSl4qGufBvl3J+qkl8qcGkmNfaS+2Q35jZYMkEIdOZ+HpBONSQg4/WW3pRpzGbuYg6a5Ms/wvHsc3v9SO+o/wl8RwBiNAbdGqOL4pErVFLqUYy9D1CjWxh7LWg5sHGszgzxucjc88e3Yr0cK0DIGYcYgnS7dVGNVQKLy+MJw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183319250377.0274555789631; Sat, 30 May 2026 16:21:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrb-0000UZ-Oz; Sat, 30 May 2026 19:13:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrY-0000Ov-68 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:04 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrW-0007cZ-65 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:03 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-841513664bbso4972231b3a.1 for ; Sat, 30 May 2026 16:13:01 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.12.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182781; x=1780787581; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=AlBBFiJilzWJz05Xuryrmy8sN5tf212LXWFTFd+P4bn+G5lC0FJSq0NkFAs0KZ5D77 mpf1cJ1fOoQIda14MzReuWvc8CEK/IHcjJEKzLECPv0c7TYDpFvR1EcG/5sid7KeokZA PXnyyBprOxwlE+212VnhEnpPZaBM749vk86SUvpL1lQRD0iGbXLpPzdt6xoR9SzqontE duWBEie4YRS6JjUJE+MJ42ME0oiLXRJ21vUJOmgzQeACOwkNWUL3o+yMKiCObPOqo15d dyQ5N7SYjNyJ/JV/3P+/7elwvDmEMKC9rEksJ6Dm06iQLBt+o0cL6wBRgzjyRw+aozRY sjdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182781; x=1780787581; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=naYWOD0b5KkNOITj0ZVB1MEtLEr1hMIhH2tMZsY/u8+CWe8r0icsALXOYGDapdVUJC YY+O/JSOCYgkWXwCe5XRyoGeFCJuLzN5yDbpLKNxDHiWjHFhP2omq8zvb5vs6J7JGl6R OCl2QQtm0Raqr3r3trvV2S8Yh0A43aoFvJHs2+CHStxXujJpEtSlpfuxHd2wTwkK+1ua Y71HyDqnDLo/xgaAowuen6DHWWs4sMQqPvVb3nYj08DjV/RLeNTtNkwR9yLmvm/kS4pT uVROgieeNGMWG7KuNUr8BJ6YAq/s8K7YbTqfCFi/Mp9DzCPmCau4x5KynvyS/eMXpn3J rBZw== X-Gm-Message-State: AOJu0Yxp3HIv6TLd6gHVQTOb4tVR5NeKABfYUX5d4jdzuETI1TFOAD/I lb8I+fbORGeFu9ghGPblPxWLrbkwIUxJM2TPPeqTeEopJ9xxwzubETtqoj/7gltXk9CqesSKeV1 hziX9j1E= X-Gm-Gg: Acq92OHI4MerhRtMCArDQ5/phDy9Pxww0yebWePgKqiJwojK2+s7sdRPTn2HiQ5KRfc hmKd++Iwfh260u4HU5dZJp145MXCEUUNRxJjIn7vKUvord+5XVXTYmJArAcqx+EeWZqq/z/PgZl o02EkzZ4UPItbKvkFN1koRQwNfaX5Lx2TLh6AsLxQpbHjtwUh8nucvmGFOVpTLMHWE8FkesTr9i wmbPHTrC9uOobC7tk+5Wv5LAryfuQBSqevZOCia6Oetc7U9TEcNmOUT+WXsFGwBFNZY5pNX3je0 22HDJgjF8adUp7QfiJE675nwCkRiKsQrN7FXvEBuAyjJFexyNXugSWKgVxhpmeBQgRLIuDEVVXp 8Ra5osLBOnsLdvdtJZefgEOPH7+UT1G/hcqVcOksWDkapmKKEotjHxQuaVZBfO1OWKz1XxJYepY BwSNKBY+XNXFJAunEaukODvtPItbJL8a7eZKDfh/8= X-Received: by 2002:a05:6a20:ae2f:b0:3b3:23b4:6950 with SMTP id adf61e73a8af0-3b426abecc2mr4817044637.18.1780182780476; Sat, 30 May 2026 16:13:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 33/41] target/arm: Implement FDOT (FP8 to FP16) for AdvSIMD Date: Sat, 30 May 2026 16:12:21 -0700 Message-ID: <20260530231229.400441-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183320730158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 2 ++ target/arm/tcg/a64.decode | 2 ++ 5 files changed, 51 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fbf4decd74..f6184b80de 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1620,6 +1620,11 @@ static inline bool isar_feature_aa64_f8dp4(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); } =20 +static inline bool isar_feature_aa64_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index ee6f2e9236..5995d77577 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -32,3 +32,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index d1d5b22cbf..a25e0a1d92 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -767,3 +767,42 @@ void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_h(n[i], m[i], 2, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint16_t e1 =3D m[i + H2(idx)]; + do { + d[i] =3D f8dotadd_h(n[i], e1, 2, d[i], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 960de1aa86..83d90cfcf4 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7500,6 +7500,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, } =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) +TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) @@ -7515,6 +7516,7 @@ static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e = *a, } =20 TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) +TRANS_FEAT(FDOT_hb_vi, aa64_f8dp2, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_hb) =20 static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 08c493c11e..a3e404e7fe 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1225,6 +1225,7 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s +FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 @@ -1351,6 +1352,7 @@ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:= 5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s +FDOT_hb_vi 0.00 1111 01 .. .... 0000 . 0 ..... ..... @qrrx_h =20 # Floating-point conditional select =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183320; cv=none; d=zohomail.com; s=zohoarc; b=AFNNV/nuwU7Va7/nci3pDtWoSi45tYq4bbyca8wVMkXfGy1Xjxp/PYhykMFZmekD+1R41c7BRk3ZWnQDyQbbLE0nyf+rCSu4r62cWHVfnHL8lTNH+1f5+JgVd5jZ0sb7o7Hs2yVZe8J+LEd3dn0mdwHeBQ+qUr4ZPXUUOQlyJgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183320; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SDizsp0TNMdOeGSvDCCF2t8154x2x+b4OLcJcvFBJCI=; b=HWj/UIJgch0knxD9F08gJwASnd0qCAWw6KMaDZwjEUYPqfu03+0qNDMW2018Q02H056w1Z6kIpu2tPsoQvG9utVn6Cg6IHLENMYM+HqlB50YzKT2NsEcJPSARkJXxp30ikmg/jpKpy/SS7belm2SPB+5eJ34O/UIgLFDzsAhnLw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17801833208399.544555140506759; Sat, 30 May 2026 16:22:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrb-0000Us-VH; Sat, 30 May 2026 19:13:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrY-0000Px-OC for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:04 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrW-0007co-QD for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:04 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2bf20f6be6bso10533765ad.3 for ; Sat, 30 May 2026 16:13:02 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182781; x=1780787581; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SDizsp0TNMdOeGSvDCCF2t8154x2x+b4OLcJcvFBJCI=; b=FflS1D7AAsH4sJlmg61Et7PugWgBuZE6MJhAd2pLIO3FYjXRnYP/rRxMc/ihMetp3O Wk/HDSha0GOFli2mvPd+ZsG5hIZNOh94xllR6uV1g4LGf0khdV8/7WkaF91N9fGMZ8du 2Dn6k1HS1yQqD5yD4Dca20zx4IVLg0Qh3lGPHmKRJmG5D3LCSBeSgX7ghQ8f2UpyzANy lnLMiSKuOF8NSbFdPljzBKM9OORtFvPUEixqypVy6VEWOA6wCWAreZ+h7wtDOx2CNpMc UFMswYuBy98jT56C9TRtN2kk7GsjKxSXjUPnDpME4K4cICnIoaYnl6eqwfWtUpivIAKq wOmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182781; x=1780787581; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SDizsp0TNMdOeGSvDCCF2t8154x2x+b4OLcJcvFBJCI=; b=YvG7/gaiSu/D+8DuV+yhO7g0DDdzs+HgA1EjiEdVqobnIKUqFLNkA2MZY1DSrBacJE 6FgVnpwQJb/Om4IbBacJV/Ehw+gMnugCuDpuWwwES09GCp4trUtJzfg39NVmNlczDtVo +QgBBrp0he4mNRCBjf1WuVngifPLX0aiBNj24pJtAqSWOVbC74JxtMP8g2UPe/+NbNvR 9GBAvfNmDIc3RFlgcxgLh8c5rh0pU15jeSVArch23K3ZdE4FWecV9i+eWnYOLdowJNnR 4JUd2jVD67qsg9IPs5sccdaldTdRX7/heP4a/9eHjiPX/3IpAgfD3ML5ZqaI4c7DA66y yBJg== X-Gm-Message-State: AOJu0YxbV9KW1Kpj8uVsMtK0xrkDVSNzJB8aV8iCvJRyyJAR/IFdzrB9 lAOfJ3tRTlpFJMqPybMec9AS12GFk+fywsg760XYEAdTKm+I9rGATcEK3HgEObjeELaBQ8sFDxn +JPsSFJE= X-Gm-Gg: Acq92OGwwp2OeEg29aJuTQItAGzwbCb93LvKdZT5Lv96ol6tELR3pZ1ucc+aGQjoskW OhZtBXOUH6Hpn1fB7y2iV/0eV4yb2rjUwNVtqyzIGMt1RuyDB3PuhCZsxHASZPUrws4h1XckqTS nLt3tu5e4FjwtJRjlB2iAEx0DIDeZKQFIlZZhh0sGA4i0y55aVkmnyYlUEeGu+nyhX0/XjB5faL gbEyig33/BikSqh99Zx/Ll6gJCVfMSGP9DlStXZydvK6RIgC0jVeyjqMomaOMw8m5u5WpNsM2j3 j7NSwXDCFb2/pNB20Zm+ALEgskBr7ZGuw/w64rvCCeruUFmh+OWAwpgHiEMQ6ILgYl/EmOX7unv P4Ut5z1EUmOj0sxqTLmE0uxi+bJr90zH6rDogbsu6BmEpooq7879PPWSqMapzaMB7V2YtkqDIIF BKZVPimdn7G5JELHi7YfQhLgSw0j0jdI71qMcDk3PLc/1slk7aNg== X-Received: by 2002:a17:903:15cf:b0:2c0:ca99:3d8b with SMTP id d9443c01a7336-2c0ca994083mr2056605ad.40.1780182781275; Sat, 30 May 2026 16:13:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 34/41] target/arm: Implement FDOT (FP8 to FP16) for SVE Date: Sat, 30 May 2026 16:12:22 -0700 Message-ID: <20260530231229.400441-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183321625154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 42 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f6184b80de..4629a3cf3e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1565,6 +1565,11 @@ static inline bool isar_feature_aa64_ssve_f8dp4(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); } =20 +static inline bool isar_feature_aa64_ssve_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP2); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 96ea0b4bd2..cf370b3c86 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8426,3 +8426,38 @@ static bool do_f8dp4(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, a->rd, a->rn, a->rm, a->index) + +static bool do_f8dp2(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp2 =3D dc_isar_feature(aa64_f8dp2, s); + bool ssve_fp8dp2 =3D dc_isar_feature(aa64_ssve_f8dp2, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp2 || (fp8dp2 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp2) { + s->is_nonstreaming =3D !ssve_fp8dp2; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index c49e992f10..26b3c7697a 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1875,6 +1875,7 @@ FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... .= .... @rda_rn_rm_ex esz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 +FDOT_hb 01100100 00 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D1 =20 ### SVE2 floating-point multiply-add long (indexed) =20 @@ -1900,6 +1901,7 @@ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ....= . @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 +FDOT_idx_hb 01100100 00 1 ..... 0100.1 ..... ..... @rrx_3a esz=3D1 =20 ### SVE broadcast predicate element =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183321; cv=none; d=zohomail.com; s=zohoarc; b=QwGMAhl7ZUWFJAq0L7QXPZ1I9Lln/ychP9+i21ID7RXr7nzod4HuVW+cdj3Q3uiVe25qIDIsk8wrjZj1e6rYUWKGMToHc3uOCAySPPWJ6//ZUPgH6fanLoOjm0Kjt2dKSJ1lLdcmv0j2L/akSjqEshKiKyQjNHIGwmMzwSTCvLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183321; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=QLe5JcjP5Ie7UalfxWh4USJgVP3HWTh27z1NPQ/Sct83bD6kqWGahz1f4Ib8YgUBkivcQ/9ZtNntpfsnjhdbrrtjB7i7vGhwYa4yHrepfI9ZgeI4Sgz6+X14nf1EWl3Y6stUep60W94XAG/3wGe5zXG3j7mx45kiUTxWek08zQ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183321326538.7288893184285; Sat, 30 May 2026 16:22:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrd-0000Wa-UL; Sat, 30 May 2026 19:13:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrZ-0000Sx-PW for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:05 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrX-0007dA-SZ for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:05 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c8588ec1b44so602731a12.1 for ; Sat, 30 May 2026 16:13:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182782; x=1780787582; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=GjULeUZa0VCzBQX6aQGign8ZJN+PezSymBIzkPPPuI8x/5RJtIElSLCRYfmO/j2Yjz PfcfrUTlFgOeTaQhtp8vtxefp0VRgzkerTqH7zelaIHGLxqDuOrfHVeUnKF83jKncOyx ziVWd7JK1DyabGaJ6BTBGVjUuLRD6qlaNNkAwtznhhEKWyDy1yuM016FB7j6CVNauoi6 KtLASHiArPncbxuh8fRQOMPLb173EOrG+XRgK+SJJy1DTXmJNt5jLpLIfs+Dz6oLdxWq 2+gRiFeQMThtvzaVWmSIkYQbfyoFrtk7R4Jh0yed5aeQI4keK+i0BjN91oRrDGeIz3ih 8t+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182782; x=1780787582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=s7cE3yvJ/3fnNFPhBl/ZkUTthKH6BC61Ee/hU9EbKY18+LAIwejyLDkRylOyuknxpd KQIQF0Ft/JGPX1MFdc1zBLmsI2epOtonnU/oRPzW1j9FDVsMg3xpJSIih4KOAQClPxlf 4Da0lcLwoOMKEv58XSAkl01yb/WWgYxA9yUKOCzVNYqQCh/2v7enTu4ApAEMBWVwYwYs DKky/QfT0I2iHf6jRv3sGybdbboHnBdkMnuCUxteiNEw+YbE1qInstz0Wi7Y9W1foweZ Kv0hv6mD0P+/L4QgTRYhEQdRReKfkNLTohmqGAeN9xUBZtdwLt0bA6nDqJWU6UyFLQ0c 1TjA== X-Gm-Message-State: AOJu0YxbZYV3Ebhfd63C5Gk4zPxT9CoumB92dNawG3aQ8FPbwahT+3qN h0axSzbkiuM2nkQj6O4RuvI/gkWopS5/ebPwO+RnaIR3sXk7z0HyC7MHfx6vUHT0sSeA793/0Zf 63PSID84= X-Gm-Gg: Acq92OEPLkx79XNY8C1563OR6oZzFjYYG55vvmbRuP2nSFMbQTGXqZ3CUVWEDLAfsAJ ggDUpFApl1oAMenWs2iNCDaF1VCXFqw0jqUaQQg/eNKAdafUvY/ZVhhpl76KtaC1MazZyO+1xj2 /B6WsbWyI8vLbO7RENh+Sr0+puWKHqUmPSH0s+AQAu0Uvm9aUzHmL50ifg1aKcSwuwpDdeC5XQN K/yESHaLNf0tZ2hEjCtku8hqUcFqcvTRclDaoAyZalgjf6ZS8R8nsmZ2+gSvW66CAW5spBWKuYg s7dAZTpyLZJNmtQDmWMfuMI5KbzVZEt4gA0ddqVdcIl5yPrn52eP5bcRiHmV9x/+esJrOGBM5ug Z0W1cagJe96TOw+91W/vXPCTGNPn6xHNyMgfhFiC6mOMOlxZP7xX2ribM4NbbRWqNc9wDqb7jIM Qkna/Okk1c3Q2ysE8asdGjQpyQa8sS20g+wDTj0oWH1Q9sv51KBw== X-Received: by 2002:a05:6a20:c709:b0:3b3:bdf5:117f with SMTP id adf61e73a8af0-3b4281daa25mr5363619637.40.1780182781897; Sat, 30 May 2026 16:13:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 35/41] target/arm: Enable FEAT_FP8DOT2, FEAT_SSVE_FP8DOT2 for -cpu max Date: Sat, 30 May 2026 16:12:23 -0700 Message-ID: <20260530231229.400441-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183322834158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index be33fede6b..d40e39169b 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -228,8 +228,10 @@ abi_ulong get_elf_hwcap2(CPUState *cs) ARM_HWCAP2_A64_F8E5M2); GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); GET_FEATURE_ID(aa64_f8dp4, ARM_HWCAP2_A64_F8DP4); + GET_FEATURE_ID(aa64_f8dp2, ARM_HWCAP2_A64_F8DP2); GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); GET_FEATURE_ID(aa64_ssve_f8dp4, ARM_HWCAP2_A64_SME_SF8DP4); + GET_FEATURE_ID(aa64_ssve_f8dp2, ARM_HWCAP2_A64_SME_SF8DP2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1e2d1311b9..893e20f0eb 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1378,6 +1378,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ @@ -1398,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 8d786f9dae..f1c8f5aa68 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT2 (FP8 2-way dot product to half-precision instructions) - FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) @@ -163,6 +164,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) - FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780182927; cv=none; d=zohomail.com; s=zohoarc; b=AA/mJN855tBAkjXZz1xTMam5VpHSPXv2Nfx5w/TqsXz0XAwuvVQrymBu6giunFCPyYVsxIIy6dzdX45IIJNvJnYrdvaJWiYjl+vlpi2UN1Zuh5KTuFG7bQICS+jBnfN0ufLvZLrGdSBXO2BJ2qDBcGYCahiGYtvsxmPWeNaqOQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780182927; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=llHvkUPIPAlYhgGNgIM6gtKchMFZ5Sffqd5cBy667et6Kp1hVxqqQrSbfYeeIFTOGXNqOtpiUIBtdiL5OI7rkoz0k57ZM+XT6E+11/gQQiK5+E2a+Kb+7v2xq7eJWrj3MrklQA7INUv+rsArHYy6fSJvoG3u4LIl9qoMJfg7kkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780182927084845.174054840697; Sat, 30 May 2026 16:15:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrc-0000VP-EB; Sat, 30 May 2026 19:13:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSra-0000TG-80 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:06 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrY-0007dU-Ie for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:05 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-36bb3551f6eso1949891a91.1 for ; Sat, 30 May 2026 16:13:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182783; x=1780787583; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=CglyTx1f7FjTTjoLf6lsiXk8JCBtUi/Eunh+M2wpd9WxiSmS0NMWjXDS1B3dgvT3Cm 4Esm830JKY3Lbm0M77Tp9u/DLbLr1UWdLw9Vb1htbPEHrY9FVXGLAOBcSGdIP97KAzGa 4KIbwCoPc+7ufLa4nylfDKWHYaC+1WnnyLRLrMBHh3tHpBsHWqeIYXgpnGjHg37UJDC5 2fJkr2OtaKJQkEg9rddyKiWW5YCvdxyasUu3i+cEmoiLtSjDxm6X511peU5DLO/mj8QT jJZyhAQT59HD1n+GtKKw3U4VoR0YBEqdHbKH8INpO1oSEh7sdQ0Pn4Pa0yW90jcSYqdZ TN3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182783; x=1780787583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=XMrmjukstX7pBM7iAz7PVBjm0um+kHHqz0SUZ9TRneUQ2E7Dk/b5PJ2sCrsmQXHdzP Mxt4KzawGtKGc3Rh4CjG9LvQWTkPE4by+wsLkLWlsIKIl3u69TQs/udtCPT3dHPAZz9H 12vnnIzATq93RDWikWbWCnMUI3YDwWSmVTsv4aeaJYSwFkp1kTQXEaAGvXUF1twFpo6k CnFy+l5FmYb5zcicpvO++xwPZzvSffo0gD7JNuwMDlLY3v6M5ca4WOHkJ0S4Sz461bX5 8Ka+v7J7KJe2hl3+SwYeDowyOxt3MlV3E11BQXX71OpbtQselQb+WAg5cyIFsefnF8ES D/LA== X-Gm-Message-State: AOJu0YzBEESvBq29ebpbPaWUPIO+W/cjEowOdoBko6P+7rL1XBi6zRDA I+PD3lC39LlsagtFzs7f3tr//mZfVshYW4W1O+8i2qWiIsnSifv97a4gCd0HplwI9dMNSkGyZB8 n59oMj70= X-Gm-Gg: Acq92OF9jCjZ5Z+2rlTiunVEfRyQKpckXvjyFUoph7yLl3TZQui9KH+hTvlUVCehXH0 CHqSa0gFV6DwM9KElAK/5zNHR8IpMzGHq7D/t5igXRQdMJvwVInJdZ6ms25FP1315qsldyyJSuo 26lmQe8E84e9Bp9qgV4Ku7KIER5LiRyM1rmpxt7uN8W8TchkmGeiZH6HsUSNLPtYH/Oy0Sj4e9n U7MhF1vFrFd3gDBmXJwTkb02arhqkH5anxWmQNiikzRw7ehGs7u8MvkTfIfIv/uUtfUFswfw/7J OSsNLgJv+88muOlTQxw3S81LfZqQ8UHRdDEwQlPOrDhAz8w+2Tac3kQhBofXxG+Wd4alyrt4B6T +0IaajzBrjFXGHUM+Xg9AVBruWmgsU1LDU+OdgiaztjKxQon9GKrC4UjbV9KtGshQ3a9izTPQWe /1oKJZV2RPvZItpFVXz3kLMEfKqeiPM6BSShcQsBs= X-Received: by 2002:a05:6a20:244b:b0:3b3:9199:b1a2 with SMTP id adf61e73a8af0-3b427f80487mr5190326637.42.1780182782602; Sat, 30 May 2026 16:13:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 36/41] target/arm: Implement FMMLA (FP8 to FP32) for AdvSIMD Date: Sat, 30 May 2026 16:12:24 -0700 Message-ID: <20260530231229.400441-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780182927915158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 2 ++ 5 files changed, 35 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4629a3cf3e..1fc8db8d58 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1630,6 +1630,11 @@ static inline bool isar_feature_aa64_f8dp2(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); } =20 +static inline bool isar_feature_aa64_f8mm8(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5995d77577..3c74f02022 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -35,3 +35,5 @@ DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a25e0a1d92..9db4ff4c2f 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -806,3 +806,28 @@ void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 16; + uint64_t *n =3D vn; + uint64_t *m =3D vm; + float32 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float32 d0 =3D f8dotadd_s(n[0], m[0], 8, d[H4(0)], &ctx); + float32 d1 =3D f8dotadd_s(n[0], m[1], 8, d[H4(1)], &ctx); + float32 d2 =3D f8dotadd_s(n[1], m[0], 8, d[H4(2)], &ctx); + float32 d3 =3D f8dotadd_s(n[1], m[1], 8, d[H4(3)], &ctx); + + d[H4(0)] =3D d0; + d[H4(1)] =3D d1; + d[H4(2)] =3D d2; + d[H4(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 83d90cfcf4..367f87f05d 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7501,6 +7501,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) +TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index a3e404e7fe..6922e91010 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1227,6 +1227,8 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 +FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183296; cv=none; d=zohomail.com; s=zohoarc; b=SJc5plcoV6S2ALndTdCxEPK0ZTOGhJNzYcIe1uSWtv7iI+EZXlDQtf7AM8eed8p75Qtj5BaPLcO2zJDrfmakvHNf6CrdCzhHDcDOWBq1wllmHwQ1JjNgPlIdYdbRLOpuDaxMBDu5rnVzrCqI01lcFBJWpV0nkzkEhivEfbQH+ZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183296; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WGo4qqEtI42nHrPCcXab2YjAMcQp38Ka3VdQ+FON0mQ=; b=Mdgwppkzip3cWoXJso1oNGlQIt+mXlCdto2qkAhPF+mbvKgWuwRhWFv3lebA4VsR2H9/UhI+2Im6mSZrQCFeA5nUskA1PrEMx8H1iyRX2PGVc0M7HAoYS8XezJikq78WIB0GxzDX2imfvV1ee7p8cCxMRoNVvJR6sqL3v6oM8UM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183296544304.73624225572485; Sat, 30 May 2026 16:21:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSre-0000Wd-Lx; Sat, 30 May 2026 19:13:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSra-0000Td-Nv for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:06 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSrY-0007dr-Vn for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:06 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-36c68964315so438164a91.2 for ; Sat, 30 May 2026 16:13:04 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182783; x=1780787583; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WGo4qqEtI42nHrPCcXab2YjAMcQp38Ka3VdQ+FON0mQ=; b=SRouIVCR0k9zOA9H/xW4NP6cp18OR24B4THHe110/3LbVZOHuNdiNoHz5H1k7q8Ckf MTLqXQBKjpMif45qlu1UkjtTgEHA2krexx10t8FVspragXjAdGgpYsJ8AMKZfM980Gv5 yt/+vAzJFrjhc2IlHjK6kKlBcj+5IvMKVZszsL/JA9L37YeT3ApuJeVp3QlHoM1HRHzi SOLYQqnEWd0VkznyzLuoRZgFvPk+brjB7JEq24thooRqdvzNXJIswWp1BpwCPLWcd9YC GxsNu+qmYSKUKhIxryOL3N0v5NjTxZNt7M1kRjr3xdLDSFaaKSHFbExvBU9YRdithRBT kJyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182783; x=1780787583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WGo4qqEtI42nHrPCcXab2YjAMcQp38Ka3VdQ+FON0mQ=; b=J6uSOUZYKlkdSHhPvgOAqMIQSLLW7/DEwy+C2Eb+UicbyZ6KpuD18vYn2+Q8/mEcdP DqZk95yCqSSFzxTXA2avNlvB+PbAY/fLZxpAnYtt2BklgfTvSVLYsBVj4OvPEyBfLymG 8SROHKjlTjd6FJyoL68RIsOpdlFaZ+ZDV+yKYKuuff4ubgZJGHHVxEMoRrjMROMOnOTa Ce0K6sORSXtHUfeMJRSJNUIK4IiLQDG5fhLUd38Pr5cVrqiOYgUdQAF34Tsu8WWU+ubo RucW4ra1l9Cm39DnWRBmtny4NKJfR4zBRXtN2A5tDVbyghpXIDCuP2HpnLFKdK6QhfkC IVRQ== X-Gm-Message-State: AOJu0YzCyZVqdhSkkbj8W7yFFM7ZPEX29y0YbudVoll1kZwapMsVxoYW czrnp8ik+5zTlslrY+uqdeGgAqtHAICZoVNIcqRMpFIyyOKDydX/7qp2q5AY4ht8BM1q+86x0Xn 4qiTAX14= X-Gm-Gg: Acq92OHnpOsnaYWj6SahIDlJMDzQsFC46ffQqEPFJuKrDrtik8vK7icOoQADny1chpN m3nUhOHeIIcluXXxqgHxmTXsQBMtS57G1hAvZbSi/n6A3aL1PjvVJmYS4NygoPP5oLnLbbzK2nL NJNY08IVbDu2vow4kv3rLJBzKbfiqyhu9Cm93wJGM8Ez06z3O1/SlwRjABaB5umA14JyXMi+Aq1 zmCfSwbwyM/Edc11kkRGICQg2vnFwq7vwJCCEGjXnmrWAPP/pZJv9tWf+e+CKCU14Qw38y/D2IQ f92RB+PMWCECBmZBdpupNhzvHZ1dzXCkyaN59AYTuNtH8yownPqofzHvvzptVSRdJqX6xMBJ09B Pdqdd1IBlIO14I7u2YN38PtStHZ6d0JDxNn5Q5/Y/8fKRbmJUnbR9QWk4s+LwUEQ3wkNGf2Fk1j MGuvOEmRAYfAxZD7TUyQ1YMQzZiQUBIm1PaAh7GVk= X-Received: by 2002:a05:6a21:2d46:b0:3a2:d436:acb6 with SMTP id adf61e73a8af0-3b427f33810mr5755176637.37.1780182783334; Sat, 30 May 2026 16:13:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 37/41] target/arm: Implement FMMLA (FP8 to FP32) for SVE Date: Sat, 30 May 2026 16:12:25 -0700 Message-ID: <20260530231229.400441-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183297283154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 16 ++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 23 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 1fc8db8d58..2b1d1034c0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1703,6 +1703,11 @@ static inline bool isar_feature_aa64_sve_bf16(const = ARMISARegisters *id) return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_bf16(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm8(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index cf370b3c86..2ecaa0f1e5 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8461,3 +8461,19 @@ static bool do_f8dp2(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, a->rd, a->rn, a->rm, a->index) + +static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_esz *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, 0, fn); + } + return true; +} + +TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 26b3c7697a..6610432528 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1808,6 +1808,8 @@ BFMMLA 01100100 01 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D1 FMMLA_s 01100100 10 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 +FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 + ### SVE2 Memory Gather Load Group =20 # SVE2 64-bit gather non-temporal load (scalar plus 64-bit unscaled offset= s) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183307; cv=none; d=zohomail.com; s=zohoarc; b=HMSC4NrD2nRgcYgtFlvLDFoYoNTyC8HF2ygE1KvVAf5tYbztv7dC1djy8bZpExH41gACkdhsoz9/2bM40oYXNpJAR/rlNerdJP93Dxr/CdMl1NEX99RBJcPvhM5lhVdT8IoJEh6HIKM4O2FsXV6MgMjr0of5J4Y2kTQMDK4qE0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183307; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=SEQBzaxraJoWiwGZL1N6pSav6YIvAD9OToBVIrVNVuiVc7dWA1tT9c9zx61lMckwsozDgOsOhpHC9+6KjnpHmw9OKtzjohcs8sI8vl+rytJbdHlusE0Abrj5XRqcqvgYQdRs/fkcuKHdZepmurlN+C4xjwA+KiKEw/4HM2vNpYQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178018330749256.933596723799155; Sat, 30 May 2026 16:21:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSrd-0000WH-KP; Sat, 30 May 2026 19:13:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrb-0000Ue-R7 for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:07 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSra-0007eM-5b for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:07 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2bf02708e8fso21743815ad.2 for ; Sat, 30 May 2026 16:13:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182785; x=1780787585; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=CVZxLvi4Tsh6Ef1lSfFFuNqyGzP2qhAQBiBeGROnV05iU8xnO9aiS4RAQ9y5Dnzb7C OoOTY3KWmHfCXcWBZO5FUyqnRewM7oTJqoIq5wDJ86XzpnBfEg52B4s1zP/+lR16d1R6 zdDK4Aq8Vx373V0r5BjJH0jePRHxemP7rKwjEI9Si+aEV54ugKqazFgLrFDtXRb8s5/b P4m4k4HE498Z0AaHXZ8olCUN86h9WOkZH3GJ2B5BuACpqzoyr/Q6Qzb2AmyfsuRKuJLc LuOg/r/lMf3/p+UCC3iMqU/qgUUOns0K3gXT8M703/HRgZXtZ/KZBuXUvLNdNzxYXlV8 Ztmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182785; x=1780787585; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=gFLmzd5SFbH/CtZ66SNmtXhsovE1zsCNVGUROukFqnjHgmzhogHgqf8HYWRM+Vn7C/ njaCfVA3X0Ht0IsfFVi0FWjkmIM6F4BcZxSuxLn7Q0tAVQqPBEZZSawYh1wJVE0+7fsp r5LYlF+jM/R/AVxJEzRmtuOYeJKTrEuvbTGVTFDdIEiw0RLUTzq+WV8zu0IBOl5HGNX9 bK+dlulI/yvS1K/+AAXm6ZGixTKHnQ5goPkyAnc5m3H4fZcvOVoghRZbtq+1AwsL0Nwb +P4CyOzfPQBtGXaH8ux9Y4cioj/yCRM7+jqxIAoZ/ub5cgRIfAFhg0bxk+bd3hZKug0U EfpQ== X-Gm-Message-State: AOJu0Yw35LqfZMrIoa6Ad/QWlE9vAdIA5CzJ3CjCwYpOtLenANeGxeY+ EU4cJwfX39NOTstch4QOPYi/ZeH/kMNwI/CKTRaHFGv7RnGkBzpa/UWw/HFBbtxUPjx7NJ2qs7u of3p4aEI= X-Gm-Gg: Acq92OEYTjErBU9wm85p98CKDVi1DXx4VcRIUkHGE9k465tVlJdzUz26LVxgVs91nAA 9TN3mx8SNPetcfBjWHHdEzFgUUGOpZJ//RDN6aeWhspN6TdiXDiXDTvuEPT7EEKurOsL0xsUU7i 5f0BdcZezguFEEZeayB6XtbXpskspytYOlwpkmJqi8FVVvtfBJH5PEQ0/zkVNgNb3R5nwlyZON/ p9Nadd686pg41zB2OdHFS0he5W2+0XxMve+QHemnM4W0PysVqVcTOR8sBxOMhFt0brqp9fmJtA1 AOAtvUtJ+tVK5eykUjJKq4kEXed2ejJudEnJVN5kXuPlUDtze8DKF1sASm46awrwanKjGjBdv6A xsqXCUQEXongjvIfJd+JIgtdWMQphvkfg4K3on3z+ogQADFAjXyquzZ2CnAXyqsdVfYQn3M6Eya R0rMM+TD6FiOQ2wExET2uJgUWZHDr3N91qOa489FA= X-Received: by 2002:a05:6a20:2d13:b0:3aa:f9cb:d43e with SMTP id adf61e73a8af0-3b427eb2dfdmr5399873637.18.1780182784666; Sat, 30 May 2026 16:13:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 38/41] target/arm: Enable FEAT_F8F32MM for -cpu max Date: Sat, 30 May 2026 16:12:26 -0700 Message-ID: <20260530231229.400441-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183308732158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index d40e39169b..7864765ba0 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -171,6 +171,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_rcpc_8_4, ARM_HWCAP_A64_ILRCPC); GET_FEATURE_ID(aa64_gcs, ARM_HWCAP_A64_GCS); GET_FEATURE_ID(aa64_cmpbr, ARM_HWCAP_A64_CMPBR); + GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 893e20f0eb..15dafb9aee 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1399,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index f1c8f5aa68..dcfb4f2073 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -67,6 +67,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) - FEAT_FAMINMAX (Floating-point maximum and minimum absolute value instruc= tions) --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183010; cv=none; d=zohomail.com; s=zohoarc; b=dB+CYOzLz+OOK42lyHZRBkBqHRsf+V7q6Kdvf7xjC1shaRiGDsQgMsEtp6j6lVZWZfusVUvc++rRkyqxXDcv+oeAGEGMMVPOS6jmQxZSxkspZhQsr7d9GW1tom84TPFWHwbgMUp52+qSY9QGwiXSVGx37NMhrdoe90P+oy/FIfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183010; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=FY2tCaCfQyKY/sHYReucRcTjNDq7zV7iWn++anbrw8j2Usi1qDoaPHyzAt2cnbwyp+tNHAxxzCc/iY7GyFdHexcRoBnAQze3mg+Woaa/yhIf9xuThJarmFk8M9kNtrOyMeY57aGqyYvnS/3ifgJH033Nfo+aGybd+hqzb8FrIkw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178018301046645.83240703256638; Sat, 30 May 2026 16:16:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSre-0000XD-QK; Sat, 30 May 2026 19:13:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSrc-0000Vp-NM for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:08 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSra-0007ed-SU for qemu-devel@nongnu.org; Sat, 30 May 2026 19:13:08 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c857d04cc99so497005a12.0 for ; Sat, 30 May 2026 16:13:06 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c857729d3d1sm5634356a12.21.2026.05.30.16.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:13:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182785; x=1780787585; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=YrN67H9zSkY/k1IVJiEyK/5dhZMgp1sue28U+yXHuWO/2weuSRjsvOktNKfWKegMdP QyFq5cfrsfxt9EjpI4xlI5vXkrqGsW6jgjLEnjWP2GDqG8T3kMow/9fXOfTOGc23Te6Z UQnHhhS8JNS+DwgxuhCrBY9Rgb6+hF6tnRuxg2sMRk5GcXHd0yFh087MP7uasDoPKOWT tgh6TBFPNek3NovTzKhBT8aH9QCB+MFDP+zYQoP43kAt38xLzZmwwA21NPfLPupHVQC8 LM+B/zVekhE87bhVJihnyBvZXCfG8YclpRVE1lP8KAktGKwduA0MVnkVsqhCVB9nFejf xFdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182785; x=1780787585; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=QA1lu8QcqEagcf2/65yYoqwqOCBTrTDiiNV89J+5Sts0wYBsV/qUWCFcIMBUI+0pfQ Q4JG+N50rgTmgIaeoY/YfCGH1TXcecCHo/8pNi/dfIXUjpBAf0+CimvY8NxLnhVsA8n5 wDYsiRmbnwzRZ1TJW2R/amiLrYu3Zb8DpYgQirOoFMCLaTDk9gew2cTvdESf7xhCjBv3 Wzg/TpuVnZo9wEvsC+Oqps/vNkpyzak4D2pyQ06rZy7rAaHbxflDfxd+bKoiAHVS2yV3 Xnv6fiywbgFY/6+i755rnYAbP+9P9jT/mRDJ02PMBcLROykI/rdbHbLuYH27Ut5eONyw ig3A== X-Gm-Message-State: AOJu0YzWqlgmLu22bo3cgKPkJgDkcbMwCJiOlpPX8y+hicAJ3AV+e61/ fgl4nZgoRipuNqUeMpJAV9Iyvl0cbVd56/75zDvboLjluNxao5Obj/5TRy332eb3koNPq5J6wHC MHDAaDrc= X-Gm-Gg: Acq92OGi3oCCSW1jdThLCL62lKi9imP5s9gpiWcdEh/vMgmW19ZCgNjIyqYq5SDIEar 6eS/Xy2gkjo5bKTThTBkfvDHTWNJTEqoXllIxOlEPsT2tpCSPs5Uo9hw56dP/CsWGjYHkkrZZhs PmIuFbxiaDSrGNYJpzSz3UBF/xra9EGrLz/NcPyfPfC/d0jGo9KsSJ+tnqOgQ9+rGuTsy23fPd7 lQlWGaeYIH4E/FYevYGV9sTl+UtYsjmyWYJ8VEAZ8Hac8orJwasxbDG604SQ9arEql4L8yJnEPo NDv+z/0gX+5RymJ91kPC6HdYcrXPwr+dxoOjhaTs4VXuCBKkxk0As8sd5GVnWQ9Fjog3EZCE4Q3 gf7Ry9lUhX9ZDOWTd4aMspcwYw0DjrGsLD4fNqplGUH85npWhecro86V2g3XR9DU1A4bExz4CAY mg3yhtw2qwLNVdljt5J9nHLRw2ijUHdj7F1S+7NWM= X-Received: by 2002:a05:6a21:4d0f:b0:3a1:90fd:dcdc with SMTP id adf61e73a8af0-3b40fb3903emr8202281637.6.1780182785356; Sat, 30 May 2026 16:13:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 39/41] target/arm: Implement FMMLA (FP8 to FP16) for AdvSIMD Date: Sat, 30 May 2026 16:12:27 -0700 Message-ID: <20260530231229.400441-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183012210158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 1 + 5 files changed, 33 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 2b1d1034c0..6d65706186 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1635,6 +1635,11 @@ static inline bool isar_feature_aa64_f8mm8(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); } =20 +static inline bool isar_feature_aa64_f8mm4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3c74f02022..e942308af4 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -37,3 +37,4 @@ DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(gvec_fmmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 9db4ff4c2f..8365da9893 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -831,3 +831,28 @@ void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *v= m, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 8; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float16 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float16 d0 =3D f8dotadd_h(n[H4(0)], m[H4(0)], 4, d[H2(0)], &ctx); + float16 d1 =3D f8dotadd_h(n[H4(0)], m[H4(1)], 4, d[H2(1)], &ctx); + float16 d2 =3D f8dotadd_h(n[H4(1)], m[H4(0)], 4, d[H2(2)], &ctx); + float16 d3 =3D f8dotadd_h(n[H4(1)], m[H4(1)], 4, d[H2(3)], &ctx); + + d[H2(0)] =3D d0; + d[H2(1)] =3D d1; + d[H2(2)] =3D d2; + d[H2(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 367f87f05d..126b7b44b8 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7502,6 +7502,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT(FMMLA_hb, aa64_f8mm4, do_f8dot, a, gen_helper_gvec_fmmla_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 6922e91010..28cd1faf61 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1228,6 +1228,7 @@ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ...= .. @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 +FMMLA_hb 0110 1110 000 ..... 11101 1 ..... ..... @rrr_q1e0 =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183295; cv=none; d=zohomail.com; s=zohoarc; b=mvrU5PXSWmFCIh+PkQpocTA/+Rl7haBuqZfxShZzmdB32ZE5pKeJgUwQzhLTwkKFu91WWnG5LI8HlMzi0lv4d0G+qN4/DdmLVbAIttCsyVJG1T7TCnzIjTeRZeJf43JBy0UdXaV7wozWXLNFVUugb1rqA8h4671HUlHnRdvy/MA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183295; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dl3x98BtzNbyq66CLNFsSvmqL5Pi9sVPBM0ykXWwyPM=; b=bEzIbS1bNbsScYfhbYV5n2le1Ky4a/B4ya1rxjwmAZ3KDqW3o25NRS/QU4MhOvW5/IYHlLErnaJGiwz7fA7N18LE2ZSF02bzADEgbfpVgTNqgyj4/gGwrO//NqUQQZvNI++MIiVjzlO87y6GhU6LYFOYURsudpbqBpcu3cznXIs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183295934629.055705517912; Sat, 30 May 2026 16:21:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSuY-0007pp-Ni; Sat, 30 May 2026 19:16:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSuY-0007oP-2h for qemu-devel@nongnu.org; Sat, 30 May 2026 19:16:10 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSuW-0000H9-Iq for qemu-devel@nongnu.org; Sat, 30 May 2026 19:16:09 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-36ac67f489aso4597586a91.0 for ; Sat, 30 May 2026 16:16:07 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36bc0c3d44fsm6370038a91.17.2026.05.30.16.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:16:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182967; x=1780787767; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dl3x98BtzNbyq66CLNFsSvmqL5Pi9sVPBM0ykXWwyPM=; b=aYhTX32LBdKkGef2DhDe9iIzk1dn3mwCcrFPg7+z+8JliD7ZPPdzZ+Zk8412fiiAz1 3z0k0e4ZIesUvW+GIxdlI/bxRvYMP9lwyTfXpcqxOSsoMZC/djbYLCprLE0m+jzMkxd8 vvRxWAEbbTwV6ay3R7q4mW7yZhdfwVXcX/RGe00rgjmCi9+5uGsStQh1dmUtPtopAc9P s//S51RwxKiJSpHeAIkZvaIPO5kfDqiOV8MGgXIfcHjevNwign4Cx5jH/enehBoAH20e 6nSCemxDifgMORnpbuvrU/J5kfQu7ML6O2zqL6x5v10g/NP/17VvbhcJqfJqoY85uMEn tu3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182967; x=1780787767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dl3x98BtzNbyq66CLNFsSvmqL5Pi9sVPBM0ykXWwyPM=; b=lD9j9TWPUmB+Eu1FSQaN4+UnOA1Fecgfrio9fi5tCCIhSDefjeSUtwPJH056xSjUHT uzTUvbJffUNp8F6mCQ2BK0J1HoGHrTat03kQ7tPf4qL7toc0YT3p2QNafdXqReH7If8n NhWfCnaYBrJhBxoFLp37c1aVXOth4bXokiOzwCiKrjLDVllwtzib/hSbvU1jQjN9Ue9p CKVStACRxPBihkdH1mMRbpIzXEYWAHqrowADCrWkq0gnr3ceP961L/ag41oreLUn5Vho 8dxy6IkpHZuDlHbLapA7KDE+eriaDw7ewlKzXRvCJKfGhD1Z09/PdGtRitYsy/mfJi6l TICg== X-Gm-Message-State: AOJu0Yxg14of6tDzZKQrkJh+jkaNlvYaM7UT8o/1S6z1kK0C6HG83yM5 grWjQdz03dsenPPIIdJd4WZGF+V+9VSCbJChtyIR15Q4c4sqhrUE1WOMIxuxs69UlQ0IN18285j rFrlEJ1E= X-Gm-Gg: Acq92OGmGZrFRHZcSA0Gfp+jYhua9StzLuoRu0VC4Wr6Wg2PXAfnaHaKuhFvnSHhEh/ KDstaI/85HRpFrjKlfOh+Al/UPnKiyDUOvj7/hNiKin8GDZ84Udfyd85/B3whwFlN/sE+P/tgQl 1f0RiLU27phDnTaPXt+R3eRlK6FDPxA5gCB18B787LsvKyWis9fOr5eaC20dwq2p8rtXjI3jBGG kGVnoxsfChhhECE8JaDcaSLfgHgXCdipi9KL7fyyCJJ2R0PTBypJu497oytd5zV1sltgHGrStIs V+2Cya02J+A7HH3r//YDaA+8WPxMf/Q43aUnNkTUsJBOrcmmQfWAU/bsGd5QtltyXvAfBGD+PYC K1MhvQh7L3H7HPydWOhCZcnWoW+CDtXeXZu8bXWRkl/04+uKMSVkVovNboyDmDNb9L1tYk8H7+r Er92kfgArUQjtaoH3Gsx+JJ6rL05svI/eHtndwBn0= X-Received: by 2002:a17:90b:520c:b0:36b:a162:a1be with SMTP id 98e67ed59e1d1-36beb2e0700mr3756697a91.4.1780182966781; Sat, 30 May 2026 16:16:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 40/41] target/arm: Implement FMMLA (FP8 to FP16) for SVE Date: Sat, 30 May 2026 16:12:28 -0700 Message-ID: <20260530231229.400441-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183297212154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 3 files changed, 8 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 6d65706186..5a14507682 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1713,6 +1713,11 @@ static inline bool isar_feature_aa64_sve2_f8mm8(cons= t ARMISARegisters *id) return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm4(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm4(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 2ecaa0f1e5..ee1ed181a0 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8477,3 +8477,5 @@ static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_es= z *a, =20 TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT_NONSTREAMING(FMMLA_hb, aa64_sve2_f8mm4, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 6610432528..b53fe6a58f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1809,6 +1809,7 @@ FMMLA_s 01100100 10 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 +FMMLA_hb 01100100 01 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D1 =20 ### SVE2 Memory Gather Load Group =20 --=20 2.43.0 From nobody Mon Jun 8 08:43:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1780183318; cv=none; d=zohomail.com; s=zohoarc; b=b0orBS+0cOdAcNkC75MImIjay3f5KbD+V+L7D5xW3vx5U1DvKODS1h36QxoT091axamBft9KjVPJsITsh0UAHSLzCmcv452WDg/ygp/2973N7yFof/b5uNCN/H5xMlduFeljTsQAodbjdulngQSkXLMKdWuCHnfcAP+bOzVMDwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780183318; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=BSr5zBOZpTSGiBFOFTJM8bod/KoI7VTFwh2UvFcF/7n5Oqa7w8V/u9asHcew6O5kt1TAG0+OFDoN/3DQBCKr7fYRrWR6c60maOQ+yT7A9KbUUjvueP0PAmEX1J0+hc/THe87RwsBgX5wZQMEGB+QkrpUtJV8C8FARvi7sMFmbqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780183318131803.6582620829817; Sat, 30 May 2026 16:21:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wTSub-00081J-HX; Sat, 30 May 2026 19:16:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wTSuZ-0007uW-Bb for qemu-devel@nongnu.org; Sat, 30 May 2026 19:16:11 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wTSuX-0000Iy-Fw for qemu-devel@nongnu.org; Sat, 30 May 2026 19:16:11 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-36ac67f489aso4597594a91.0 for ; Sat, 30 May 2026 16:16:09 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36bc0c3d44fsm6370038a91.17.2026.05.30.16.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 May 2026 16:16:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780182968; x=1780787768; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=fjHRewbTzULSBHNvJKnSZvFopCvOjXnvkM/3qhBwgigBGYpFxcbvlW5O5iXyK6M1dt u8mCc44TaOfbOFScsBD/VhtqElo/079NVMWGRv86Fxh2xi5NylRCA3wSRm6B3hpB0fRb c9Ph4yfnGHElfnLfwUIVYRY6uc7nCuGiW2jXsTaUjwOKDkZBI5pvHCqYaMBnCJPGqU+I 0RyYeW96I5uY2iVgXEo54UFbQxd5I7GOR3K0NdxdXjAqh1hLiiNE1hPcImHVgfsnCpNk tKUmD3rdAII3Jn3qASSusK7yivsJCJr2kD6T7DpnSrwPVWeuiFc6iAkzAjgg2nkk9Voj s2lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780182968; x=1780787768; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=s1hc1kKC1dSo/AQItR31sxKBZD8o1GBpiV/0KT5UHBhK4JIfjFhsVym8TzHJ8qM/VF G3ba8wTRCQxeIa7HcOzFEnOY1zz6ip55tiRRsQMHAAR1Y95sYbd+3ybgFjsOyER3SqkA VsxZ25C4ClDnroRh2XIPcDx3G84K2e/EykME80/WVnODSlVV3bYWVsN0pnOU5EFkx9Q6 nAJEzpMsiUDJtABXuJZG7p2+/PK1damFT2Zre2UDXY535y53+avLOxx6Pb1oOR4fn6ed EEwQRbgjlOIMI3r7ozQOz8Cd1xbyAOm+NF5xY3sv9RVhK1ijTCgFvd9vFxhe+Pa6EmwO FeAg== X-Gm-Message-State: AOJu0YzJLXk+DSLYy4iUVD0vRKOoKD5SjqRTGgljKbVNxkFPigNpCCs8 95zvbmR+jVkhgMfK++xJvP8Z/NVCu+r4nPWANgs5QDJGl5KV+LDHbPPoxWDO6MQIS9EtIjuYlgG VPrFjKic= X-Gm-Gg: Acq92OEdDuE9VlovdPC2CVP5XG0VsJCZT1GkMZHzI8hhxv65k2ymnWcqeUyjVWsNInl 4dNYi/79v8xgxbxVGiSStPpfLli7Moo6AvcjCK6EpcPOwOYUqrdpZLLPXdYeTx83N0mJ2smayGz mjjLnI97yGJVfqv23kbkMRaQ3KWYN719fxrGp8r8WeohCXZtc3wQtjTs9jt5yNi5z1QMhval1kU 0WsIeZpz+q+z+XdOMNCgOHbqYpBup/PsgOoqMOOQOt6B2wit7XaZympeeE6W7N/5ilE+vVmr3El JlAaoJp12AhMQz7+9VmF1kdibX+DtP23W6RkzYzPdpgeX9wrxgQXNQi3HIoi7AdzHLkSENcSHJk M/Nd5Crb4D3p3+pJdtUD0h3FlP/RRSEBnsFEUu2/MSJ++GCFgClRdhfP/XBbd7iVSG332xy4RT4 W+/Zy4LGp02YnjQpHuEzpdKPW8CqLKZGr/J/xCGbs= X-Received: by 2002:a17:90b:3606:b0:36d:630a:c4e4 with SMTP id 98e67ed59e1d1-36d630ac782mr1664470a91.3.1780182968027; Sat, 30 May 2026 16:16:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v8 41/41] target/arm: Enable FEAT_F8F16MM for -cpu max Date: Sat, 30 May 2026 16:12:29 -0700 Message-ID: <20260530231229.400441-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260530231229.400441-1-richard.henderson@linaro.org> References: <20260530231229.400441-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780183318729158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 7864765ba0..4887a3a7b7 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -172,6 +172,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_gcs, ARM_HWCAP_A64_GCS); GET_FEATURE_ID(aa64_cmpbr, ARM_HWCAP_A64_CMPBR); GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); + GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 15dafb9aee..15c1ece4b7 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1399,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM4, 1); /* FEAT_F8F16MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index dcfb4f2073..64b2a87e1a 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -67,6 +67,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F16MM (8-bit floating-point matrix multiply-accumulate to half-pr= ecision) - FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) --=20 2.43.0