From nobody Sun Jul 26 11:53:08 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=1782427064; cv=none; d=zohomail.com; s=zohoarc; b=SHR+rgJzHEyXdLqcgyTscUEjGQjU6pdKFv5tfLyXeoihp9k8Ks8gSULS0BTr5rP9vFL+0VjKqvmOrIcLpsHuFCX9TJX6qgO3I5vLanMn1QEQVeZXFqEAo6irNGFO61BH1TVq/sBr6Mk6827qXueP3Da91y1dQ0GVXugOgH9U07g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427064; 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=rh0jxi2qCmB4n3gHnWVvwU8lQ0gEebULAbRxFw11d+8=; b=PiabEkSGus5Gp9+THDFTGGzOsJyWNTtAcwyrfeSX3wQXSaYeKQxyqpwgaJUTW71LvdI2jR1M2ac/p0xD3BpxDkFW6rBqJnIo/dhElTnTSOYRyHCcDKUZ+ZwNIYoYJfvTCqNc0cGltu/sOSePq2B1kbN/2Vkbilw2iO8AKcsoHzg= 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 17824270642041009.8506403882328; Thu, 25 Jun 2026 15:37:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfs-0005T0-Fm; Thu, 25 Jun 2026 18:35: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 1wcsf5-0004aw-5h for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:14 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsew-0002Jn-CT for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:04 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-84592b55832so125496b3a.3 for ; Thu, 25 Jun 2026 15:32:07 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426722; x=1783031522; 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=rh0jxi2qCmB4n3gHnWVvwU8lQ0gEebULAbRxFw11d+8=; b=oT10JYk+ZFAZ5gtbZLWkwvRNHMUrE3Jhiojd1UUnRt9fIY3UlKrcxyc5L5CgPOBiYq qKehwrUHhDs5VuNzPfAWxQaIohC0RYcQ5hMaja8iBDCYh4yvyMaYPBqz+a7DRzOoTlqA H3jRxsLdoF2iQc8yjV8G5Bxd6EPq0kSa8TJXQZkV1zhTKerJ2SVXMMcaS3YDV/XG5fhP kk9SKpF8tFtbjuppft39aOzUNQABFOUHqGteAbAKyLnUfms0V26/NKNnEAL3vfaxCQAY cir3GJHQuZhWXLceC+lbGTmGZXSJPXoIrK0k345edv0X7Wibqx7pKYwb0F8hCoHTCU6F uKmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426722; x=1783031522; 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=rh0jxi2qCmB4n3gHnWVvwU8lQ0gEebULAbRxFw11d+8=; b=Qm1Us/zy5r/S1yo5vsn6P661zGqUhtjkK2kP7I2/8oEMyuGzT5qcb82sspznsWmTLJ wp8SdiwATQhWuZl3+ciVwoE6P62cXIYhbfp0QIrLLt5kgxmSgLNReZ8cbhkrQfRUdnRa uPT7N47o3dKLzgT1QSfAssrKthp6J6b9qxQPpVsChkgi42mKkR1r45s1YD5Sou9Ynsk1 V7nY9Zw52cGXakAEsT4ryY2uzZTTTGxwbqnLswjIhgBpCc1koA9viaDNXIQYJJVp66NB fzZ6x/7GgjvXWdKKlL8EtCQzxAkj0J/x7klTBr3K5LhrWybkylan7+CUeew/86aLNF+o flUQ== X-Gm-Message-State: AOJu0YwrW+kiOtMVzjj4TIFugy1OCNE+LPbeEcNHSkExOUrYlGWtjoXw v4ANINfXl+JjUKk3mPkE4neAsdnlXCE4ptkfowq3gjswH6Vspu78igBMZMm/VEuYSPzztlrQyG8 ljyHH X-Gm-Gg: AfdE7ckakzRGKEop3GDEEuk2s58FLTpUNec/NV7/y64w/0MaQ3kNGolg9V7e8QSjUqV PmtUAtvNZBnHs3AgxnNrII1/yNtGrTzsPKyh28qmvFSKRNSp4A6gyV/yszYgpZ3dH6Yi9DsieYj 0pKVxLu/uqL8CYtIHKHSTn0y+B2xx+9/SY4IechczznY1jpe/kIUTnujnXIugdEZkbiO5s2ue2t sgw9TYWTVKbSLtk9QbtA4Y8LIt8oJ9CSPGIn1MqDYq5mZndi9aNfjRKuXLs8hRbb8M5vWtOB3CC QuKndPN8xbrLezPQFLGfzM6m3sHOWZpBbL3Oni4Vk15DnuBeATT+VtWrfU+AGQy1lVkX1vEPZXm 5rhA2sBuSnFalUtLb8oDMPbjFwJQP+Eb7AINtaGcdZp+ngLaX0qNMGD8uwgaxioiAmFnsEeIyQ/ QO5lTvTfFwKbvRFC1oJPGAVqppbkCXBy2K2FIxq0yHzeCe/AZIFQ== X-Received: by 2002:a05:6a00:1d1a:b0:845:48be:b046 with SMTP id d2e1a72fcca58-845b3adfba9mr4350691b3a.36.1782426722297; Thu, 25 Jun 2026 15:32:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 01/15] target/arm: Implement FMOP4 (non-widening) for float32 Date: Thu, 25 Jun 2026 15:31:46 -0700 Message-ID: <20260625223200.763198-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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: 1782427065559158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++ target/arm/tcg/helper-sme-defs.h | 4 ++ target/arm/tcg/translate.h | 5 +++ target/arm/tcg/vec_internal.h | 8 ++++ target/arm/tcg/sme_helper.c | 76 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 29 ++++++++++++ target/arm/tcg/sme.decode | 12 +++++ 7 files changed, 139 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index cd78353609..a0afbd4fd4 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1575,6 +1575,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_sme_mop4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMOP4); +} + static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 01aad4c231..9e1f09ce5b 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -355,3 +355,7 @@ DEF_HELPER_FLAGS_5(sme2_sel_b, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, i32, i32) DEF_HELPER_FLAGS_5(sme2_sel_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 462d4c1c74..4a2cc95034 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -268,6 +268,11 @@ static inline int times_2_plus_1(DisasContext *s, int = x) return x * 2 + 1; } =20 +static inline int times_2_plus_16(DisasContext *s, int x) +{ + return x * 2 + 16; +} + static inline int rsub_64(DisasContext *s, int x) { return 64 - x; diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 77e5b01550..d7b558034d 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -547,4 +547,12 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, = \ clear_tail(d, oprsz, simd_maxsz(desc)); = \ } =20 +/* + * Perform SME2p2 quarter-tile outer product. + * Iterate over ZAtile[] for esize, calling fn for each element. + */ +void sme_mop4(void *vza, void *vzn, void *vzm, void *fn_opaque, + uint32_t desc, size_t esize, + void (*fn)(void *, void *, void *, void *)); + #endif /* TARGET_ARM_VEC_INTERNAL_H */ diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 685b6b46be..b08d91e6de 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2601,3 +2601,79 @@ void HELPER(sme2_sel_d)(void *vd, void *vn, void *vm, } } } + +void sme_mop4(void *vza, void *vzn, void *vzm, void *fn_opaque, + uint32_t desc, size_t esize, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz / 2; /* in bytes */ + bool nreg_m1 =3D extract32(desc, SIMD_DATA_SHIFT + 0, 1); + bool mreg_m1 =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1); + intptr_t host_adj =3D HOST_BIG_ENDIAN ? 8 - esize : 0; + + for (int outprod =3D 0; outprod < 4; outprod++) { + bool row_hv =3D outprod & 2; + bool col_hv =3D outprod & 1; + intptr_t row_base =3D row_hv ? dim : 0; + intptr_t col_base =3D col_hv ? dim : 0; + void *op1 =3D vzn + (col_hv && nreg_m1 ? sizeof(ARMVectorReg) : 0); + void *op2 =3D vzm + (row_hv && mreg_m1 ? sizeof(ARMVectorReg) : 0); + + for (intptr_t row =3D 0; row < dim; row +=3D esize) { + intptr_t row_idx =3D row_base + row; + void *vza_row =3D vza + tile_vslice_offset(row_idx); + void *e1 =3D op1 + (row_idx ^ host_adj); + + for (intptr_t col =3D 0; col < dim; col +=3D esize) { + intptr_t col_idx =3D col_base + col; + void *e2 =3D op2 + (col_idx ^ host_adj); + void *e3 =3D vza_row + (col_idx ^ host_adj); + + fn(e3, e1, e2, fn_opaque); + } + } + } +} + +static void inner_fmop4a_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4a_ss); +} + +static void inner_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(float32_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4s_ss); +} + +static void inner_ah_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float32_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_ss)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_ah_fmop4s_s= s); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index ff5554eefb..aab5eab9df 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2002,3 +2002,32 @@ TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, ge= n_helper_sme2_luti4_4h) =20 TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, gen_helper_sme2_luti4_4b) + +static bool do_mop4_fp(DisasContext *s, arg_mop4 *a, MemOp esz, + ARMFPStatusFlavour e_fpst, + gen_helper_gvec_3_ptr * const fns[3]) +{ + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + int fns_idx =3D (a->s ? 1 + s->fpcr_ah : 0); + TCGv_ptr za, zn, zm, fpst; + + if (!sme_smza_enabled_check(s)) { + return true; + } + + za =3D get_tile(s, esz, a->zad); + zn =3D vec_full_reg_ptr(s, a->zn); + zm =3D vec_full_reg_ptr(s, a->zm); + fpst =3D fpstatus_ptr(e_fpst); + + fns[fns_idx](za, zn, zm, fpst, tcg_constant_i32(desc)); + return true; +} + +static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D { + gen_helper_sme_fmop4a_ss, + gen_helper_sme_fmop4s_ss, + gen_helper_sme_ah_fmop4s_ss +}; +TRANS_FEAT(FMOP4_ss, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ZA, fmop4_s= s) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 3a65e1ad4b..5a3d47cdfe 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1086,3 +1086,15 @@ LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn= :5 zd:5 &lut =20 LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \ &lut zn=3D%zn_ax2 idx=3D0 + +# SME MOP4 Quarter-tile outer products + +&mop4 zad zn zm s:bool n:bool m:bool + +%mop4_zm 17:3 !function=3Dtimes_2_plus_16 +%mop4_zn 6:3 !function=3Dtimes_2 + +@mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn + +FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427002; cv=none; d=zohomail.com; s=zohoarc; b=mdZqtP0bp0lKn574jQwxkEU0NPlDk3cCMcoa0yapworCUE81ljyWP0210Lk6yc/NTyVPcDZ0PYIky7z8+9zSBfPiHvvgVM9zSD6sTTEJXDJYBdzGS9gsyMp7QCtlPQh/30+iq9grZeXHYUNUQkAQxNHr6Q4rkvxw6n6g+yiH3B4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427002; 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=6F2LfCMXaCi8pVIM+BWs2Fk5pa5aZpQbg+/ah/uJvpA=; b=ADx7r10wCinp5GvvoA0w/PK8t+mUM8apudj5DdQz6fFmWYOYdrpcCrvaj6XlZ/dnJ2+YjPZJDYN+eVu7920vGcpAKGqkk2z1iGdPHizRsuQlQv4iFdc03tZ40vbZh4kmKSWnHfRaacI6FSp2W3sDJ1vMhMu0ZOr889K8ldpjKMI= 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 1782427002829704.8334692957939; Thu, 25 Jun 2026 15:36:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfZ-0004mX-3E; Thu, 25 Jun 2026 18:35:38 -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 1wcsei-0004Wr-6Z for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:47 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcseZ-0002Jt-Ts for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:41 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-845c65e0a10so73578b3a.0 for ; Thu, 25 Jun 2026 15:32:08 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426723; x=1783031523; 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=6F2LfCMXaCi8pVIM+BWs2Fk5pa5aZpQbg+/ah/uJvpA=; b=ILaoaU2LGi4rf784sRYMHMVyZCn/EUu1H8a/jWVPhvzGC1cUMQKFW1xJYK9eQJ2DFz WHiGL5LDu4ky+PE/pmribuc6e/X4C1yGuo2PXv+NAMDC/4Wty4B/264BdcPGjYnF0Vhi wLWySuxwOmF0o9Q8/uAEtuO86KPFo0E7ozJtfVR6bhGAfAXGoqhuNqb+FU+pH5bI2PWj BHMS5ZYio70gTV2qxIFqtCM9Zw5S2pvD7gpdqKgy+7AIij6o12XRuYLqFLWPocOxZ1kZ OT1WHJTTLBNCY4WdWCtSTQwOv6O345LpzVFbHkZtHOCKZiI9eVZ7yibTKq6bHMnGZbc5 /+Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426723; x=1783031523; 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=6F2LfCMXaCi8pVIM+BWs2Fk5pa5aZpQbg+/ah/uJvpA=; b=SVKEh6d+7gBIsmSUb36iKJ8lXY2ac5tN0SuEUgbWb/y2lX6iYNdkPptYlRm6U+xGO9 dRTCcpxsu4zC/q2JBWMHLfV/mReQF1z6PNAZ9jtgR26XcEdRrxRBAReoftldWZ09sHjX KPT5f/DcOnNhi/h2B0vHgvaceLTBeqxKtCwmKUR2ihdHj0KgKJ7cJ38NM/ikyjBEz8AU BWAAtmSJZrh7z+eid6lfMUDW841TONrUpMIzuatgRW5bPs2dST30FOK4rVyQiBTRnE9u hTKyj++ASc54/MvOQLKKpw+JujlkVNq1pVLjhQWhcWVYdcNhcIytZic7HuopigIo4Tfk 7RVQ== X-Gm-Message-State: AOJu0YyHOTIr54dmzTX7Ujjo6pgh6BurcM1+UZ0vmO22MEUpYi65VSUS iHx4iwe0cRm6SjbX+AZj6aRTw+PP/tGXtSGWbPLZP7P9buliKQ+KMrv4VM5vDEFP+rkmIYGmuWt Xjbav X-Gm-Gg: AfdE7ck7g5mwFaYvc0dd8wMOTXzLW4nmIJUm3T8spEWnUKT63Tij6DwFABLry9/7/yV pD/DuKf/HCvemGbHyNpNWbh3mCsc0WPmJCYONnlsBw9zKPlYmX/9lvOa4681KkDMCSDOvUcWJSP VmrBI8eyH3h+G+KYoabm55uh+OyYEzdFg6RLFzjhM2mfTnxzOT6qq9psoo4lZCYovlBnzHNezP5 TNlbt2cDAsSTrIFCPgNj1TJrLxFd+Szd3Ne6yFPYOT05DVzyRkkUNbQD7qjD4+3oE70j4za3Css kHWMygSg8FG2jvzfUgN209A2cnuYQoWqmjYrb7OrlbSzHbBLpT+32lFG/Ue/VC5DReyUm0lDBlP kjy/JnXxf5FPB+Rs0PxzqijYEIgWlNyE1U/72Lwh184gVyVWhT7Umom5BbqVV/mNb+1N7ohl6UT Vs1YG1X5Fy2dvEc+qjfIGdtOTPRNSxRfZYGh6ObkyjixMiib75Rw== X-Received: by 2002:a05:6a00:14ca:b0:82f:38df:681c with SMTP id d2e1a72fcca58-845b39a28demr5319394b3a.6.1782426723107; Thu, 25 Jun 2026 15:32:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 02/15] target/arm: Implement FMOP4 (non-widening) for float16 Date: Thu, 25 Jun 2026 15:31:47 -0700 Message-ID: <20260625223200.763198-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: 1782427003365158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ target/arm/tcg/sme.decode | 3 +++ 5 files changed, 62 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index a0afbd4fd4..822391aeb3 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1792,6 +1792,11 @@ isar_feature_aa64_sme_f16f16_or_f8f16(const ARMISARe= gisters *id) return isar_feature_aa64_sme_f16f16(id) && isar_feature_aa64_sme_f8f16= (id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f16f16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 9e1f09ce5b..ec7389d2ae 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -356,6 +356,10 @@ DEF_HELPER_FLAGS_5(sme2_sel_h, TCG_CALL_NO_RWG, void, = ptr, ptr, ptr, i32, i32) DEF_HELPER_FLAGS_5(sme2_sel_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) DEF_HELPER_FLAGS_5(sme2_sel_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32, = i32) =20 +DEF_HELPER_FLAGS_5(sme_fmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index b08d91e6de..c4d149f7f7 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2636,6 +2636,48 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void = *fn_opaque, } } =20 +static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4a_hh); +} + +static void inner_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(float16_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4s_hh); +} + +static void inner_ah_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float16_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_ah_fmop4s_h= h); +} + static void inner_fmop4a_ss(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index aab5eab9df..d19cd274ac 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2025,6 +2025,14 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, return true; } =20 +static gen_helper_gvec_3_ptr * const fmop4_hh[3] =3D { + gen_helper_sme_fmop4a_hh, + gen_helper_sme_fmop4s_hh, + gen_helper_sme_ah_fmop4s_hh +}; +TRANS_FEAT(FMOP4_hh, aa64_sme_mop4_f16f16, + do_mop4_fp, a, MO_16, FPST_ZA_F16, fmop4_hh) + static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D { gen_helper_sme_fmop4a_ss, gen_helper_sme_fmop4s_ss, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 5a3d47cdfe..227f3d7790 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1094,7 +1094,10 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ..= ..0 zd:5 \ %mop4_zm 17:3 !function=3Dtimes_2_plus_16 %mop4_zn 6:3 !function=3Dtimes_2 =20 +@mop4_o1 .... .... ... m:1 .... .... .. n:1 ... . s:1 ... zad:1 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn @mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426949; cv=none; d=zohomail.com; s=zohoarc; b=gABAip9cQZkntvBT0i4s7vS6F+pW6RtDSxSLa8kAgUK/yyVPiYTn7DN9olsiz5L7QHaGIBFwLkX88oGJOJ+yWm4vqi9xHCKIGtCNf6P4CgPbO6GIE7kVbXguKADHmV/0YAjVt8Paixo+1wiXVD7O7bndyRaxtfSYGiP6rTEwHDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426949; 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=HYg6O/4r2F3F+UyW1bVMkx/41FMFXNdKQIUxxS0oZSo=; b=NkdGpkV8sDMWTw96gYElmD/MdpPgcrqBpF1JXeOLN7dhgROyhMr/pMvpHDOWqWbokH5t0fIhZDj0/AjuQgW5D9kOZCVP7LYJ2Bz2IdI3SwF+gt0wtpIWM1kGH2JHmaWBQh+Fw67SKMb0a4IQFsnZzt3em7uERIi4Q1s14H4eZ/4= 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 1782426948756351.37249795980586; Thu, 25 Jun 2026 15:35:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfU-0004gb-Um; Thu, 25 Jun 2026 18:35:34 -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 1wcseo-0004Xd-76 for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:51 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsed-0002Jz-6N for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:46 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-84536ecfc5bso226343b3a.2 for ; Thu, 25 Jun 2026 15:32:07 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426724; x=1783031524; 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=HYg6O/4r2F3F+UyW1bVMkx/41FMFXNdKQIUxxS0oZSo=; b=VrErpkAfqy3H4L+FFrY2UsVkJAaLOYn4oSTzgQidVulHtkZO2V408hxqPfM0EwgwkT nV0lop1g85s5eDk0EJYeeZP7E2cC32Q75tw9/BCjlkjedSCuXH9gcU5UqIB6Vzzg3quq mKIuWHKnGfkotT23pkw2dHVoAeEyF4BSZ2cM65KQO8lQ/M2er8raAmg1FaWFFaZmNZFV +GKn8/oJiNn8BJE6y6QQPuDfD/oEmS1LzmNYOa6dQcRnqUuBF20SGazEySFiwc5UXzUg cZt5iYUYXbaKPgfeHscmoUku1TjcfT7JxySsBvz3wuelCvaWw48BJqxlgy8wazkM/sIY Rl9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426724; x=1783031524; 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=HYg6O/4r2F3F+UyW1bVMkx/41FMFXNdKQIUxxS0oZSo=; b=lN5bNE/v8AlNd9T7pedK944FlGw9nhBLnYUYjCYNld3oBElPo3mihmRjUx1P99qfAM 8li2gT3CNWnGJa1C61BFdX7l1i14eI71Cs6nfibT+/hWVh1Dhmz2Qc8kR/11g4GY7fWL +SVhuuYv1HSlqocNOmwGWPXTCge4Cld0MSxVzSGHYQZUJ2I3QTXdeXjzBfdUn6Czyf26 Aw3ZD3P6t5LmZ3scghZeHjtoX2RGxPjOPXDMbuUQgfKhczoyE1+V86bnkWaDizHa5nfm Lq2BtdS666oxedxlIoY979vXoq19fmZqM1MjX/noemahATZ2EDtN7aOIiP21qDpol+QZ 11UQ== X-Gm-Message-State: AOJu0YyMN5Vm2BRXyTZFoamjAVL4xSuY9h5+lV+2ZInxg7hAnL7sInes IQidric0n2NBxyk+x05WhTYWvYCvHr9Y6mad7AIA92X9/Jfk/13XYeY8VI66bp3an9kmx32OpGk wt3iz X-Gm-Gg: AfdE7cmTv50mmqyzUgH5LYJgqcxKtas4Ci8K3Q/OSf3M6XcEi2cuzsW1PwGnfEaC4As K8Zy5LSNE4TQO9b5w4F0/9bIVRtKPPL9QNiHpWnJZB/L/1OsfsL3yErSy0H/8/UNtHn8rGZrSIZ qJK7wVEOwx6EgawW6AIwV6jS7BzV/Uq0o90xUBcy5J+kCZOvBO+sGCI0BPdvxYCfqz5Kf2Wg6zU UV84VztsOl8tCtPrzsSiUFb3nznxJ+4bnJTAUjlksYE4ZIwr54lNbCQ07ELvFnYJS3CVEioPIzF fVI+QKg0+kAu9fQ0GWWAb0AgK8Dshgk6r7dT28tssbqBrx09lTdbG+OgpPCPj9fAYxuTKfCpBSX FrBgdDzya8Kj6M+yQEu0I8SjtWEDwdnwzb6SV//lF+t9mC4dIO+7sfGYQxKvleMUOXxjmauKxrP 8ddK+oZP2AhCTkLG99iNLueTcc751tXppIkR3weRwoQH4p4tJxgg== X-Received: by 2002:a05:6a00:2d88:b0:842:5da3:9b8c with SMTP id d2e1a72fcca58-845b3af923amr4453429b3a.36.1782426723836; Thu, 25 Jun 2026 15:32:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 03/15] target/arm: Implement FMOP4 (non-widening) for float64 Date: Thu, 25 Jun 2026 15:31:48 -0700 Message-ID: <20260625223200.763198-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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: 1782426951157158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ target/arm/tcg/sme.decode | 3 +++ 5 files changed, 62 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 822391aeb3..cfa97023a1 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1797,6 +1797,11 @@ static inline bool isar_feature_aa64_sme_mop4_f16f16= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f64f64(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f64f64(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index ec7389d2ae..8a2ff88d49 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -363,3 +363,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_hh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_fmop4a_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index c4d149f7f7..81ec7ccfa1 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2719,3 +2719,45 @@ void HELPER(sme_ah_fmop4s_ss)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_ah_fmop4s_s= s); } + +static void inner_fmop4a_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4a_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_fmop4a_dd); +} + +static void inner_fmop4s_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(float64_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_fmop4s_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_fmop4s_dd); +} + +static void inner_ah_fmop4s_dd(void *vd, void *vn, void *vm, void *vinfo) +{ + float64 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D float64_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_fmop4s_dd)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_ah_fmop4s_d= d); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index d19cd274ac..b6c49b9993 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2039,3 +2039,11 @@ static gen_helper_gvec_3_ptr * const fmop4_ss[3] =3D= { gen_helper_sme_ah_fmop4s_ss }; TRANS_FEAT(FMOP4_ss, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ZA, fmop4_s= s) + +static gen_helper_gvec_3_ptr * const fmop4_dd[3] =3D { + gen_helper_sme_fmop4a_dd, + gen_helper_sme_fmop4s_dd, + gen_helper_sme_ah_fmop4s_dd +}; +TRANS_FEAT(FMOP4_dd, aa64_sme_mop4_f64f64, + do_mop4_fp, a, MO_64, FPST_ZA, fmop4_dd) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 227f3d7790..3b7d8e9430 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1098,6 +1098,9 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn @mop4_o2 .... .... ... m:1 .... .... .. n:1 ... . s:1 .. zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn +@mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 +FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426937; cv=none; d=zohomail.com; s=zohoarc; b=R3Vqy9Rz6xZEqSBQOI+vmwi+WuaQY5mN0tZYJCdfODJRvEvl+HRpAwSJVaz7au/E6DZAM4rHCFsndf29ND1R60ZzSaUTbrQveXCW5Cq40DgH7KO/geli0zxk5pUeliPT0r37upVB8kLuPvCmXPlHjzNRehkZPTKdBRxhC+eFw7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426937; 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=tMMaiSxuvvK/MMllu8ARtJOHHm1Tfb2hW3iiR5BWhXI=; b=Gjm/I/EIIaP93vYPltE1af3A63IySCYqxKTlHUYV2UJdyyH+I6Xugb3FcPoeb/euCMJT0Gi84B5+Qn1QdqZNQOjf4TuGJE5i7JrFpVL4Rqc/zYJzLz7pCy++a0FRBX7/zr4Vsv82UO/7VHeAtl+p0qGu+FHx23c6Jz59KLuJ7ws= 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 1782426937857751.9942391482379; Thu, 25 Jun 2026 15:35:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsf8-0004a9-L8; Thu, 25 Jun 2026 18:35:17 -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 1wcsel-0004X7-Ni for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:49 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsed-0002K2-6N for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:42 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8424b00710aso190665b3a.0 for ; Thu, 25 Jun 2026 15:32:09 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426724; x=1783031524; 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=tMMaiSxuvvK/MMllu8ARtJOHHm1Tfb2hW3iiR5BWhXI=; b=krVhDUCWoZAHv5SzLA+d0y8yGX4sujWpPkwKeT0apfXKo78AOgP3W/wYo0332R82mM gJq1qB2Y+4w/LgUkas9D+MAM9zxT32aqEBksEvrGptjCJXWsWvYQJcnHyHHngl5J4HEM RRTH9ASInxKPQDoq/AVtA7VcpoAc/n6jKIl5mbkCe1zmTu3//5paJJ4pIiVUbflsLxtY M1tHhIs2S65hfAYuDXLSTv1C3bcye5h7pXNa1sN4WoShQXKRyHyg9NKq7/x4oii5w58j ZoTDg3WMbf6xzT1tlnsIAZPKtbaDK38acZDF2eytFt46B+GHKxgoALnroYaaJlcPBtlw qoIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426724; x=1783031524; 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=tMMaiSxuvvK/MMllu8ARtJOHHm1Tfb2hW3iiR5BWhXI=; b=hdautZHG3PoM0v2NPOF+GVaIdB5mOMwSEWpuJmMRPvLiJvEwEmOAgr2jjkuNTg8KuC gLVyRwlHQanr2y1FLQK21t/WKHvF4gvwWMuJtAOYvQAoqwbHhui0yZX1k4Jv9Nvqu28A tWRzl0XX8R6bDh2pc+2xfCezuB6nNycRGvRr7zj1J3HWZ1oAv8fuY7i2+n2AAgGmr5/u Ryj3uLmT88N9TPyBdwvj9nUWUPf26cv7g4V4o2musbEyeI1n+GR6s3hvXQT5Ra+hdmKs CZgB6nNiTHKcAUdOvAwcxijRpyGRXHZl15I60a6MmAFxtr0CjBAUQfkh0SmpiVxDPW2x AqOA== X-Gm-Message-State: AOJu0YyHi9y6cpmQ4O7kZxJBw78wPznUkhEi+593FE7TAR6ZiHGmuOGv NPCw619Tg4iytNlyuJ0zYYUO8qM/8EZm8ou/Fqiq6ZATZpx1F23RnO/8eBiN3njAkpIrWg5kwMC nrdeF X-Gm-Gg: AfdE7cmDdiGJQnvSyvxpbjsaDoCSRAUXI9RDrKeRnOWDxZpH451XVOFTil3VeHNx1NF gZ5wyRLEOWNBg2jWnVrh56/glmW7KL/52skn83LEq/a04dQO6dD40h+WwZwhJFPVlz/2wV9KMOp ffb0XHIDdehE7l8oTYMbzk0+sx2CrKtsCqCJ5uSRY/ggrKVxhyp3rHWN1RBUwKK1AnFRz+qAmaw BpveqWqPP3+xuGlJIrnyZmF8AMQtszCmR+wVAmDcnCJgOz+iWj/y9XHLSMRWoWOKz7rnhR7VTuN AJIym4TTlWV44IUWvdCiIzIGqD6iLxvRV0VQKizGFwRDjHMVfBQaRLBTT3CmLttmXW/hJITFDZS oz726JZdSVFgROXyf61w3gtmL55H8ffsaSb7PdPH1M9IxkuZUJ2D+Z4bTjdHCzD9yD5P6yevqBV GRRqJQj7hBbhXlZfKHa0jtom4BC4vUjaHI9UJf1wE47CwWfZnWgQ== X-Received: by 2002:a05:6a00:988:b0:845:4d71:8d15 with SMTP id d2e1a72fcca58-845b3b88d14mr5410271b3a.37.1782426724459; Thu, 25 Jun 2026 15:32:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 04/15] target/arm: Implement BFMOP4 (non-widening) Date: Thu, 25 Jun 2026 15:31:49 -0700 Message-ID: <20260625223200.763198-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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: 1782426939444158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 8 ++++++ target/arm/tcg/sme.decode | 1 + 5 files changed, 60 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index cfa97023a1..06fb96d0af 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1792,6 +1792,11 @@ isar_feature_aa64_sme_f16f16_or_f8f16(const ARMISARe= gisters *id) return isar_feature_aa64_sme_f16f16(id) && isar_feature_aa64_sme_f8f16= (id); } =20 +static inline bool isar_feature_aa64_sme_mop4_b16b16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_b16b16(= id); +} + static inline bool isar_feature_aa64_sme_mop4_f16f16(const ARMISARegisters= *id) { return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f16f16(= id); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8a2ff88d49..05ccb0d1e2 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -367,3 +367,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_ss, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_fmop4a_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) + +DEF_HELPER_FLAGS_5(sme_bfmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) +DEF_HELPER_FLAGS_5(sme_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) +DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 81ec7ccfa1..0de7dd84e5 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2761,3 +2761,45 @@ void HELPER(sme_ah_fmop4s_dd)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float64), inner_ah_fmop4s_d= d); } + +static void inner_bfmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(*n, *m, *d, 0, fpst); +} + +void HELPER(sme_bfmop4a_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4a_hh= ); +} + +static void inner_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(bfloat16_chs(*n), *m, *d, 0, fpst); +} + +void HELPER(sme_bfmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4s_hh= ); +} + +static void inner_ah_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) +{ + bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfloat16_muladd(*n, *m, *d, float_muladd_negate_product, fpst); +} + +void HELPER(sme_ah_bfmop4s_hh)(void *vza, void *vzn, void *vzm, + float_status *fpst, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_ah_bfmop4s= _hh); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b6c49b9993..f833975875 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2025,6 +2025,14 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, return true; } =20 +static gen_helper_gvec_3_ptr * const bfmop4_hh[3] =3D { + gen_helper_sme_bfmop4a_hh, + gen_helper_sme_bfmop4s_hh, + gen_helper_sme_ah_bfmop4s_hh +}; +TRANS_FEAT(BFMOP4_hh, aa64_sme_mop4_b16b16, + do_mop4_fp, a, MO_16, FPST_ZA, bfmop4_hh) + static gen_helper_gvec_3_ptr * const fmop4_hh[3] =3D { gen_helper_sme_fmop4a_hh, gen_helper_sme_fmop4s_hh, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 3b7d8e9430..6021803ca0 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,7 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426953; cv=none; d=zohomail.com; s=zohoarc; b=dnDPL/gKQAo2TDKHqRz5QQv0hqlrtrspbWE2hIPNZr/kjNC0P4sxWoQVq5pwMUr+e6IKI9e84nvAItQR3Jiyb+8skljEXhAibSxCeg5apafFuLzDnpZmvOyx1b43yMaSJS0RVqpq1XLsRFNsPC2JyqfTI14+Ooq2p7zPOOWy6B8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426953; 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=ccxd1+lNvbzcZiCchkXOq85BfqNMWQBzMgKBQRJxBZY=; b=QNlEshKcuw9PJuNBHoGFLqvayNDmfAzKdTwsutPawRMzdYoa0C98Deotmgnk2BccpLw5wbhVq/St2USUmwdK6GCHJetgKOvKGb56qtLfhrI25aLFhDlHxwAZ+Q/9t3hsgeNJYmf+G9KZi7WMvunl+Nrqz/VxC3yqgk2lh+WFL+4= 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 1782426953323138.77780853914282; Thu, 25 Jun 2026 15:35:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfF-0004bH-VL; Thu, 25 Jun 2026 18:35:18 -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 1wcsed-0004Vo-Q6 for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:40 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcseY-0002K7-MH for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:36 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-845438a46d4so130857b3a.3 for ; Thu, 25 Jun 2026 15:32:10 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426725; x=1783031525; 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=ccxd1+lNvbzcZiCchkXOq85BfqNMWQBzMgKBQRJxBZY=; b=dF1HHutl/Z5KggtFa7NH++2s9KVgyAhlj5afpn9ThxaqJ45XdJAAA+7YH/5ZFqRBTR 5ChIgmMGXPirMfxJwWorcCfAB4bF7nQKQKcR8UXSwEGa4Xz2n8fkgazToS8AnpRHoUFy Weksg7L9SO61rf7oD+cJM4BPhIlW9t/MzEzU0ue3ap7bw06KaxF+F9Mp4rRwnlCYJtUD tOZLMx250VoqMRYK4fnwJBTUg5JdnpIY9nyWFizk1U1EygCdNGdzqxkPTHiMLRKBs9Oz j0gzGb8k3bMyczSB2V8ojaFHNyLY7dmNriVclEB8jE9ElGqQ6Dbdb5RZNgtUguZAPO0s w7kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426725; x=1783031525; 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=ccxd1+lNvbzcZiCchkXOq85BfqNMWQBzMgKBQRJxBZY=; b=U66wuubeLQBWWTTKwMLAWfYWBVBGScdbMTN/m/tbph4U488UQVVmYbBwqX265OnfT+ wCP7WoC6HQTO//PjT6xNrbb2kDvfWlT9OP8uYnZWcHWvxUtVkavuS8On49aIWUkj5euo thTiz7S/H0EdrwS6JHV4NF4CBoqmw0CTt4DKyocLQvZETY1jeE746iBsG+AwIcst7rK8 tR5koZPdY1b9p29A7LaCjx+vWnWV5Ue0c73Ckb8qWKImIacRpYUNoqn00MSiwpQZY3wP 14DnG6p3VwvrXRR8VDTNivzGFBGFlU3yAYcKeZyuTKGMblt7mZgFXnaB89+/UqGaPKzS 96oQ== X-Gm-Message-State: AOJu0YwlJYy3Y4hc4S+FsoM0Vr7G3dGZRP9FwGJRlqFs1ieqBNdVqQ8I AfMbp8PsReJInvTC9+2HfPbwvRxWQAOm/h1ZBv8k0gmiIh7ZHK7P6QFQaTKuJNgJcx1iLa63Pmz WAZTq X-Gm-Gg: AfdE7clekI+/4KP8WfVXd6ugZjRCyLCMLG7GYwHWaURn+9ggacLDK8YO3ce90hNaLVG i/wUKx20Uk5V0fAcm9HwfbIoxETgFstWqgdfbuj1BpIS+PEdgtUDS3+A0gYkEDeSeWNkjOsfrX0 yWWOY4FlDwBdpas/xZGLnxR/LDzSjyMYJiNg4ZkMV6Oz2ZhR4gAo/yVlHp2wk4M9lECcn+JqNjN 0SUIxhceJ3mEEIWIA/uGg0QpobQl3L7kkFcnNpVhwr5h1wTvLTuD15fL+wWl87f1b5AqAm3vOnn RUleTkVPtSQzn5xQXM5wnoUtlFg2d6omqHMyM8b6KuQcQcrYUhKCzxEx0H3ovXXJf9wJI2pknT8 gZOcA9w4QO/gzszVgFGf4lFIpy1775gbWzY25wteCPzGjF1ybcpADHARR7ZaukzBeg9CIAcwPKl 9CsJyB5BWZaatoQ0RAJx4Yq3vEvT1C30WAADzBhoCqco5FKI0dBQ== X-Received: by 2002:a05:6a00:230a:b0:842:6ec3:2359 with SMTP id d2e1a72fcca58-845b3af0ebfmr4487529b3a.45.1782426725132; Thu, 25 Jun 2026 15:32:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 05/15] target/arm: Implement BFMOP4 (widening) Date: Thu, 25 Jun 2026 15:31:50 -0700 Message-ID: <20260625223200.763198-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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: 1782426954877158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 4 ++ target/arm/tcg/sme_helper.c | 84 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 16 ++++-- target/arm/tcg/sme.decode | 2 + 4 files changed, 103 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 05ccb0d1e2..0e4bb12b38 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -371,3 +371,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_dd, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(sme_bfmop4a_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) DEF_HELPER_FLAGS_5(sme_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, f= pst, i32) DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , fpst, i32) + +DEF_HELPER_FLAGS_5(sme_bfmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) +DEF_HELPER_FLAGS_5(sme_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) +DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , env, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0de7dd84e5..5a661ca616 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2803,3 +2803,87 @@ void HELPER(sme_ah_bfmop4s_hh)(void *vza, void *vzn,= void *vzm, { sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_ah_bfmop4s= _hh); } + +static void inner_bfmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, *n, *m, fpst); +} + +static void inner_ebf_bfmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, *n, *m, fpst); +} + +void HELPER(sme_bfmop4a_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_bfmop4a_sh + : inner_bfmop4a_sh); +} + +static void inner_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, *n ^ 0x80008000u, *m, fpst); +} + +static void inner_ebf_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, *n ^ 0x80008000u, *m, fpst); +} + +void HELPER(sme_bfmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_bfmop4s_sh + : inner_bfmop4s_sh); +} + +static void inner_ah_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd(*d, bf16mop_ah_neg_adj_pair(*n, -1), *m, fpst); +} + +static void inner_ebf_ah_bfmop4s_sh(void *vd, void *vn, void *vm, void *vi= nfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + float_status *fpst =3D vinfo; + + *d =3D bfdotadd_ebf(*d, bf16mop_ah_neg_adj_pair(*n, -1), *m, fpst); +} + +void HELPER(sme_ah_bfmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_mop4(vza, vzn, vzm, &fpst, desc, sizeof(float32), + is_ebf(env, &fpst) ? inner_ebf_ah_bfmop4s_sh + : inner_ah_bfmop4s_sh); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index f833975875..df4a5c2125 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2004,8 +2004,7 @@ TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, = a, gen_helper_sme2_luti4_4b) =20 static bool do_mop4_fp(DisasContext *s, arg_mop4 *a, MemOp esz, - ARMFPStatusFlavour e_fpst, - gen_helper_gvec_3_ptr * const fns[3]) + int e_fpst, gen_helper_gvec_3_ptr * const fns[3]) { int svl =3D streaming_vec_reg_size(s); uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); @@ -2019,7 +2018,11 @@ static bool do_mop4_fp(DisasContext *s, arg_mop4 *a,= MemOp esz, za =3D get_tile(s, esz, a->zad); zn =3D vec_full_reg_ptr(s, a->zn); zm =3D vec_full_reg_ptr(s, a->zm); - fpst =3D fpstatus_ptr(e_fpst); + if (e_fpst >=3D 0) { + fpst =3D fpstatus_ptr(e_fpst); + } else { + fpst =3D tcg_env; + } =20 fns[fns_idx](za, zn, zm, fpst, tcg_constant_i32(desc)); return true; @@ -2055,3 +2058,10 @@ static gen_helper_gvec_3_ptr * const fmop4_dd[3] =3D= { }; TRANS_FEAT(FMOP4_dd, aa64_sme_mop4_f64f64, do_mop4_fp, a, MO_64, FPST_ZA, fmop4_dd) + +static gen_helper_gvec_3_ptr * const bfmop4_sh[3] =3D { + gen_helper_sme_bfmop4a_sh, + gen_helper_sme_bfmop4s_sh, + gen_helper_sme_ah_bfmop4s_sh +}; +TRANS_FEAT(BFMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, bfmop= 4_sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 6021803ca0..12a3a61432 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1105,3 +1105,5 @@ BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 10= 0. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427055; cv=none; d=zohomail.com; s=zohoarc; b=lSPjr684fObWvDeeo85V4eAp1HrzCiM7Q0clfKNt394by4bBwPsAZgiJ+YRWrn4OdYfYF6qPVlglf9+m0zIStQoSEwAu93Ppd4mHvsDzyfmEaTrsKLuuAcCy9Iy2ISUTWPOc0pQrLdKzDn42Y8eN2qK78AfoBWrvyJ8NOG4swOI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427055; 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=5VrRnJosjYdk7ReXbYXe4e+aE+6WVwgVQYm3ptI+BiQ=; b=JswOWBPNHszqfQ67sAjqPL4n0KuvaqT55+3P5vM1oihbhOlpFbyBk54/e+IeSOAv738c7GA+RpFe7EsETRrQr+Q58QN0xj1chQtD4ETJnenKEQs8zC3NU59JdnmoTB/Baw88PZoaluXvxZun62LWmbs5Z1Dk16lAn3hVb7h0teg= 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 1782427055836377.95621377273267; Thu, 25 Jun 2026 15:37:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfK-0004f5-41; Thu, 25 Jun 2026 18:35:22 -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 1wcser-0004ZD-Dl for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:53 -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 1wcseo-0002KC-71 for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:52 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8453427d3f4so130401b3a.3 for ; Thu, 25 Jun 2026 15:32:11 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426726; x=1783031526; 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=5VrRnJosjYdk7ReXbYXe4e+aE+6WVwgVQYm3ptI+BiQ=; b=KvycuxCM/ADurw+mCt+yOkkbruFQsCsczisjRnVIvXNwDqtRefSOt1cqPI9LfKCStW JQkmJw0eRRENJckSzqDfngcZfJ9djDVixlW+FvFJj2MOeqJHKt2oJ8q9yEkZIDYPaslu U76xyCAp5R5vQI0eveJMNja1RQmY7kYtVr9zJuTGd95EM2xAFtRs+KF5ILVFdeRRmSem egRy3tRIOM672zb7zCbyOfCs/VKL2wFeULWCXI2BWmW4XeNmm5Am3t7fdJVn9rNRj8qu zay0ncf/R+cz2ljBs6TAAXQZ3tJjkeO9JMMmKgveU2jEk1GIDqFVlPt9r2SxLITYiaw6 nmyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426726; x=1783031526; 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=5VrRnJosjYdk7ReXbYXe4e+aE+6WVwgVQYm3ptI+BiQ=; b=G/pIPFh5T3WQj5Q5X0f6AUttaorCuuKb6gyNFWzSzFTDsoxqA01LKZORGC0z6eCq4u ZwEb/AQPPObP0jpmlN/7ThDMLcOQp+5wxwep+hvZjX50AGdAOKHJZFKN53EhcrXxvqqJ Vv1PSDWGX8iisYleD2qOlRtaiJ/zDhZMOWRWQhq4iIIvN6ZjhF5YURJa4MiWc/lxQVl9 nr+KujQirlz/w/TDk3RtNDNfdWpWF0vMrMeAJXcoUAd5sJx2IDJ/LyhkQiLMiVs9WMuc CIM5OLjNZ/nCBPusLhZnK/+mPulF83BGdB+VRGYTC3MVSRODPMxKuLzD6kImT8JtFUcC Ikfg== X-Gm-Message-State: AOJu0YxNXhn4bl35pE7o+Owqvyo4M6fDKtvfydbhi/fcQ884IRk+FxHH JVSRbqjcJD+rWu6mDkGQJNMqvfeKStF6GUH2i0r6g9fXaxXyAtSht2CoALZNa7Oq2g8d7bqlIld +8BOR X-Gm-Gg: AfdE7cna1fZ9vnlr/oKcgPOeJ+IaGFIJ5QmT3TlSfJyJVF/kLJ7Iy7RoLp2C48uE0P+ xr3Tp7F9zzyC/7zTjepiPTBnC0vN5VUEkARMgE/TJlXNAHs//LhZUMdWZpB45YCHH2MitJrH6Zn Qif+DVk4pvSRhFcC7GIvozzHB8/4rljHrbacnm3PCLWyjrxZJrcsofZ8GWX2TBkDwfloapaJKBP 1xqup/lgbDx0a3fZul3eaglaXnUz/hH9DkNXajsq2vBTVyjhu6reSd3cy3QaXLOffz5cWBkK955 OVGZmeXf6o0yaZg4/pX67DQioWO04VK6JurgUPOYpKFEOdGg+S1aIBR41mJpm2UnwmcCyBi3XAW 9v8uF6Ld9vN2QInw4VjVS5gbOWXXsoBg4YrrLML9Ho+TxnfWmcmemfR71bLihCeUVuAypcnTGhS av1uxVqfWwPug1wCK1GJ6Njmw8gDyx5prLKnuAxtfr+SHF9uXZCiJnGF8m7W7W X-Received: by 2002:a05:6a00:1d21:b0:845:259f:8925 with SMTP id d2e1a72fcca58-845b39c4b5dmr5201890b3a.6.1782426725921; Thu, 25 Jun 2026 15:32:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 06/15] target/arm: Implement FMOP4 (widening, 2-way fp16 to fp32) Date: Thu, 25 Jun 2026 15:31:51 -0700 Message-ID: <20260625223200.763198-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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=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: 1782427057458158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 4 +++ target/arm/tcg/sme_helper.c | 51 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 7 +++++ target/arm/tcg/sme.decode | 1 + 4 files changed, 63 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 0e4bb12b38..780b8f162a 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -375,3 +375,7 @@ DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_hh, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, fpst DEF_HELPER_FLAGS_5(sme_bfmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) DEF_HELPER_FLAGS_5(sme_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, e= nv, i32) DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr= , env, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 5a661ca616..123f459342 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2887,3 +2887,54 @@ void HELPER(sme_ah_bfmop4s_sh)(void *vza, void *vzn,= void *vzm, is_ebf(env, &fpst) ? inner_ebf_ah_bfmop4s_sh : inner_ah_bfmop4s_sh); } + +static void inner_fmop4a_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, *n, *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_fmop4a_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4a_sh); +} + +static void inner_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, *n ^ 0x80008000u, *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_fmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4s_sh); +} + +static void inner_ah_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + CPUArchState *env =3D vinfo; + + *d =3D f16_dotadd(*d, f16mop_ah_neg_adj_pair(*n, -1), *m, + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); +} + +void HELPER(sme_ah_fmop4s_sh)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_ah_fmop4s_sh= ); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index df4a5c2125..544a825595 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2065,3 +2065,10 @@ static gen_helper_gvec_3_ptr * const bfmop4_sh[3] = =3D { gen_helper_sme_ah_bfmop4s_sh }; TRANS_FEAT(BFMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, bfmop= 4_sh) + +static gen_helper_gvec_3_ptr * const fmop4_sh[3] =3D { + gen_helper_sme_fmop4a_sh, + gen_helper_sme_fmop4s_sh, + gen_helper_sme_ah_fmop4s_sh +}; +TRANS_FEAT(FMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, fmop4_= sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 12a3a61432..ea9f459e38 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1107,3 +1107,4 @@ FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00= .. @mop4_o2 FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 =20 BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 +FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426938; cv=none; d=zohomail.com; s=zohoarc; b=O9rUZYl9lKxRV+nJPYDGMKCVoABNLgSDK47c4hB/M5ZMOvKtHjPCArgIMsnHXCBwH8qWroruvYGYODrvmv0Jk+Eu9YswzdHamEL1a9u2XRE/XuUOWNvLFUMvshMRG1YHhuMkF8zQ+gf6OQZabBrBCY1G7kBg17BYsSZfHEae3+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426938; 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=SI7NWbwqWk43zaaql4aRymXS+Bs+g1qkzrJnvfWhX+4=; b=g9ReFjGxEugJWcgQTokymEs8mKcjaCz+zSU3+c/5Jfj19YvFL7Bc0KUGtnXYlf8nRhHJFcQiu8okQQ1R1GNdfMXWCGvKCp4tD801bwc7n0kdLdtJVuX5U05XEi2qY/CORMvIbidEBoaXt8UXGW8IRmo2gfV7ZX7yYwjNQ1Wq52k= 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 1782426937994873.2709833729815; Thu, 25 Jun 2026 15:35:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfI-0004em-8P; Thu, 25 Jun 2026 18:35:21 -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 1wcsel-0004X6-Nf for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:49 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsed-0002KI-4D for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:42 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-8453427d3f4so130407b3a.3 for ; Thu, 25 Jun 2026 15:32:11 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426727; x=1783031527; 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=SI7NWbwqWk43zaaql4aRymXS+Bs+g1qkzrJnvfWhX+4=; b=RVOfczzD44/PwjcCtYpzk5w2Au0MdQDZVujyNsqMR2s/WP+Q0ipOiBiZPvlc2TwRKh K6u8b6kOqOLi6Ql2URFImi3MpJbljxxDnLoatjro3U1LOgeyr5O4xkwsv7G7ARLTDmgr rup9CAe/wqUndG6rqxz0KbRB8h3ONdfZDQLroiBmnREyvQuTPIQJifDfWyYrL/XaTUD+ XsFUpUfqxx1PTfd6ebJiDBOjLj4nz0ZdkSSuNxv8zZydkQHvElhMHOMYOUx5JRMJ7Ppj SILRxkLlXtbftnOUgOl05cc49Uk1KiOQo5tbK9KdloGs+f+35lHcrbnjRm8owOvqZwCR cXRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426727; x=1783031527; 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=SI7NWbwqWk43zaaql4aRymXS+Bs+g1qkzrJnvfWhX+4=; b=gw8CXIv3aYUph6tmByDoAg3z4pun1ie9u0FEdDHTQoQ+N56E1o+50ymEhJS0iqQ6y/ 1ql18A/fLtniPXbYkfkbm/LWtxg31KEQlZx5XkGVBot+8xbgpqJmmAMmBceFBRGjDGo+ XMpbXg8S86p/vTh9CBfZeJOewFiWsi0kMxQBOCAb7vjTBUntxFnYdpC7W9MA74+EWdcc 2IyVPD9VIsN5blun/wCeFuq6JMCUYAZyfAVoFMQwE5I3sZO3kjExAxp2d4W54eLl7Apy 5HlHriYg3GgTiaiNRH811h/SOFvmwmw4fq1vuCwCjgUchm+tWW3nki22gKqvTeywugHC 0yNw== X-Gm-Message-State: AOJu0YxYjZyuAzG+dRKGs/2E9+AYZ/F1E9S/PDt1oxuuPgU51pUC3B/U fsZQsDYBxkhWjEjLHB1E53kjh7qsCHniT2w3nRnClOseeGK+3pHsGEupBAmT9/ZCu7/Ex/KKFpP NlhPM X-Gm-Gg: AfdE7cnx0FQ89/MWZ4Xh0QIEBbNzVeEtP/+hFmAQCq0CMOjz/XuXqTyU3/VdK8tnT38 rhhC9h45nyzP8kOxRqwlBTcTYiaIrMef7jrTd2yxqu/1D5VlLYHK+01enIxDltBv6h365PqQcOW 779oY07NyaWeNRsOCHas5RwqOnF+DLsGU/kf237rxAeRGsDfKbxBdkH4Q1LatCkedoFgdrIiv57 7QDf4a9rzm2y0Qk2+qFqAjtKFuCWqKMxB0eiaAxJ9UXHSl6017k+D4nGm0AeYpjmeyZLTK8kuPZ 1OGAVqE1mc2r6wUIEJXT/8hjCUCyRxX/PKU5dwOe6CDEqpShniivMzpzQ81xJgqUjabsDi+n3p1 nyjKVtKyx78GKh6S+D68aWdpVeVDptYxHWxuKy/Lr8f9CGEYE6N4CUR84pU5DjIZnQei833Xloc DfY4x/OIaS57qqCeHRRwrnrVUUDetPAo7xVbTXGQQORAPA5N7OPg== X-Received: by 2002:a05:6a00:1d14:b0:842:83d1:ee6d with SMTP id d2e1a72fcca58-845b3b09c68mr5104285b3a.45.1782426726546; Thu, 25 Jun 2026 15:32:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 07/15] target/arm: Implement FMOP4 (widening, 4-way fp8 to fp32) Date: Thu, 25 Jun 2026 15:31:52 -0700 Message-ID: <20260625223200.763198-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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: 1782426939379158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ target/arm/tcg/sme.decode | 5 +++++ 5 files changed, 46 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 06fb96d0af..4134dad994 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1807,6 +1807,11 @@ static inline bool isar_feature_aa64_sme_mop4_f64f64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f64f64(= id); } =20 +static inline bool isar_feature_aa64_sme_mop4_f8f32(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f32(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 126dcadf77..47f35a82dc 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -44,3 +44,5 @@ DEF_HELPER_FLAGS_7(sme_fmopa_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, ptr, ptr, =20 DEF_HELPER_FLAGS_5(sme_fvdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(sme_fmop4a_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 e1dcc2b70f..46ef7758b3 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -973,3 +973,19 @@ void HELPER(sme_fvdot_idx_hb)(void *vd, void *vn, void= *vm, } while (++i & 7); } while (i < elements); } + +static void inner_fmop4a_sb(void *vd, void *vn, void *vm, void *vinfo) +{ + float32 *d =3D vd; + uint32_t *n =3D vn, *m =3D vm; + FP8MulContext *ctx =3D vinfo; + + *d =3D f8dotadd_s(*n, *m, 4, *d, ctx); +} + +void HELPER(sme_fmop4a_sb)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float32), inner_fmop4a_sb); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 544a825595..386ded1b90 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2072,3 +2072,21 @@ static gen_helper_gvec_3_ptr * const fmop4_sh[3] =3D= { gen_helper_sme_ah_fmop4s_sh }; TRANS_FEAT(FMOP4_sh, aa64_sme_mop4, do_mop4_fp, a, MO_32, FPST_ENV, fmop4_= sh) + +static bool do_mop4_fp8(DisasContext *s, arg_mop4 *a, MemOp esz, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, tcg_env, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, + do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ea9f459e38..cbf6343822 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,9 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +@mop4_o2_s0 .... .... ... m:1 .... .... .. n:1 ... . ... zad:2 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 + BFMOP4_hh 1000 0001 001. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_hh 1000 0001 000. ...0 0000 00.. ..0. 100. @mop4_o1 FMOP4_ss 1000 0000 000. ...0 0000 00.. ..0. 00.. @mop4_o2 @@ -1108,3 +1111,5 @@ FMOP4_dd 1000 0000 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00.. @mop4_o2 FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 + +FMOP4A_sb 1000 0000 011. ...0 0000 00.. ..00 00.. @mop4_o2_s0 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426951; cv=none; d=zohomail.com; s=zohoarc; b=YTTCMYKHn2ZZFZrsBlcAiO/2PhVbxjjLL1TyRMh1KLXFVR/Zsr5YKgckAl9QL2IbvjXpDTTl/0mY+NdOmsxPsdUSxQa1xRGkSdRGXVfLiUT3wzkidpJHiHucgtbHiVqAy7NCepuDFCu/UXK0gvfi2ZrkTLFO0zZfaUM+RJdy2dY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426951; 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=RW+IZvvF6GkkNpqRN02l7SdjWXYMFFvKHFm34aKmYgU=; b=UOqcmnwJEWQRRD54Hx8R5+4X+WkETDarj0glxfDBiyM/+iQ0+FD2uZ5j7Coy5ppZoBrPS31gUC4GTCyXbKSruSsmfZt+1Jc8c/HKb3N299/rJAAiaAPfqPLTVHZdO4I99OGckfZvz0BqwCIFAr9y6erHEPW+S/v40D+ALGR8qpw= 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 1782426951285692.2006030384058; Thu, 25 Jun 2026 15:35:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfL-0004fb-VL; Thu, 25 Jun 2026 18:35:23 -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 1wcseh-0004WY-Iv for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:46 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcseZ-0002KM-Ss for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:41 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-8422f395a4aso199560b3a.0 for ; Thu, 25 Jun 2026 15:32:11 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426727; x=1783031527; 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=RW+IZvvF6GkkNpqRN02l7SdjWXYMFFvKHFm34aKmYgU=; b=CD6NTeZYzZ+iU/WcjE+HlWPN41eKCvhhZZs9j2XJBbFbBUP8ja2wAdk0BKFI1VnKJ9 aMtdtLWH3Lxf+5ttgOT6mBD1TGEpLF1OrclBtVh1UJQVE8BsejPWQGNcTSfPY5cWBKKJ uFV90ZnO/rYIqMgsxNeC5cq+668d+a8QTQj/VkUSxcCU8UOCeVZdyphypVQvPsqWLpZU jMHVtp30qg73tC3QuJB2DdAKY/iIQ0Nc8boofQ+rTTf0tFuJVsfAbTtPP8kbun47aM8a odo9CD0nmuWsKqciaqrNeMp5BgukwQjb8AwMmUClzJxaQJ/h5vdvYz6yZ2AQBvfqsHfi b+Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426727; x=1783031527; 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=RW+IZvvF6GkkNpqRN02l7SdjWXYMFFvKHFm34aKmYgU=; b=Hn+bxC/fwqm97Ji7jH+6JD+0TtDRLjX60rA/A2ZzvUlP2/4BVOf7lXJw2jSfQv9aJ8 LqkkcFnt07AmMALaxC/dQTkkHCPzTMn5nbTVP2qD8ZfsOG9XZSqdl6LkzfcilxqVFbqk UrYPaf09eH7Pbi6qv/68AGMPlOolPmot413CZVcyrkndxs6JWKdB8V76m2rch8AG6w4D /f2YZJrdpnQkyDrMV50B29VuraLdhhmiqTLBWx/GNLEDIjuElySwgDVXf4bKDLQ53n4g DJWkU5d3C0tbODAM79OdwGTrGF5zlwmyAwKdhOa1Q4pzc2UDA8E37NMDacKg6+C5rwrm EfuQ== X-Gm-Message-State: AOJu0YyDGQoRH6M5uHDGMTccQd/meFuTtWehf5OPJ6CXDDzdD4nncbRj huc/dIR8GdP0au2Z0+q3gdLovFGMTiNPGM6CgPca76bVWIST64Eb4zGrduMJ6DQl+cuVbtPTLaG 7q9F3 X-Gm-Gg: AfdE7cmLTn5MmP+Btkr60IaqVZ5bu5b8HT4O88fzut2ideC9cdFTmDBXoScap1kRxy+ OBtTxJkw7yRpPVT7wQkfwIVxeVoffLxhQ0qdtI6aOyLwgb69Rv5r1zVUGU3Hiva1NcsPsqIoLJO XS6Kh4yc12Yse+5ZAVwlvjCrsX9k7J8tnW/b+XDQDIZOLKMcI2aS9lp4RLaUfvFMmqiGfof1nps iq13C0esvqbo3/LQNARDhUTZStym88L3BgFqxrQxsbQX8KXGVEQTGXvT1eHyK7YYwmY5dnQ1ALL DREj5ASwjX0TBakNrjxmh9Lq9dJBrKt23QEUI7lq4uFGjAQAiHScG/JG+KYk5uFKkv3PewwbNcH c3uP0jJALuaAp1wGshyLXB3UAO9u7aswzPyRlxeDhoMO9me76toglcX3dXaGQNO0xtEG74UGSYz HNhoVliAky21xFKsciz1EuOveyyVwBjHlUb8kbCoKDkxtkdr02tQ== X-Received: by 2002:a05:6a00:c83:b0:82f:4725:f6d0 with SMTP id d2e1a72fcca58-84591cc5c60mr13545126b3a.29.1782426727401; Thu, 25 Jun 2026 15:32:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 08/15] target/arm: Implement FMOP4A (widening, 2-way, FP8 to FP16) Date: Thu, 25 Jun 2026 15:31:53 -0700 Message-ID: <20260625223200.763198-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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: 1782426952856158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/sme.decode | 3 +++ 5 files changed, 27 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4134dad994..4319a95921 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1812,6 +1812,11 @@ static inline bool isar_feature_aa64_sme_mop4_f8f32(= const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f32(i= d); } =20 +static inline bool isar_feature_aa64_sme_mop4_f8f16(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f16(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 47f35a82dc..dedbd8541c 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -46,3 +46,4 @@ DEF_HELPER_FLAGS_5(sme_fvdot_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) =20 DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(sme_fmop4a_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 46ef7758b3..9daaefacad 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -989,3 +989,19 @@ void HELPER(sme_fmop4a_sb)(void *vza, void *vzn, void = *vzm, FP8MulContext ctx =3D fp8_mul_start(env, -1); sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float32), inner_fmop4a_sb); } + +static void inner_fmop4a_hb(void *vd, void *vn, void *vm, void *vinfo) +{ + float16 *d =3D vd; + uint16_t *n =3D vn, *m =3D vm; + FP8MulContext *ctx =3D vinfo; + + *d =3D f8dotadd_h(*n, *m, 2, *d, ctx); +} + +void HELPER(sme_fmop4a_hb)(void *vza, void *vzn, void *vzm, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float16), inner_fmop4a_hb); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 386ded1b90..b198c7c855 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2090,3 +2090,5 @@ static bool do_mop4_fp8(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) +TRANS_FEAT(FMOP4A_hb, aa64_sme_mop4_f8f16, + do_mop4_fp8, a, MO_16, gen_helper_sme_fmop4a_hb) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index cbf6343822..43b6c32c04 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1101,6 +1101,8 @@ LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ...= .0 zd:5 \ @mop4_o3 .... .... ... m:1 .... .... .. n:1 ... . s:1 . zad:3 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn =20 +@mop4_o1_s0 .... .... ... m:1 .... .... .. n:1 ... . .... zad:1 \ + &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 @mop4_o2_s0 .... .... ... m:1 .... .... .. n:1 ... . ... zad:2 \ &mop4 zm=3D%mop4_zm zn=3D%mop4_zn s=3D0 =20 @@ -1113,3 +1115,4 @@ BFMOP4_sh 1000 0001 000. ...0 0000 00.. ..0. 00= .. @mop4_o2 FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00.. @mop4_o2 =20 FMOP4A_sb 1000 0000 011. ...0 0000 00.. ..00 00.. @mop4_o2_s0 +FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426961; cv=none; d=zohomail.com; s=zohoarc; b=R+IRM3Y15ua7JG/mv64aKADkdy5k2AuAAVJMUk1hcnJRok04/K0PNEEBkGxP9yHpSs1FR+dgoRsBxX5DuhAz7KptKvc46qxPXEHlO5pmg5hna/eUPzlNc+9a9bB0it/vWI1Mrt4r5Zl9TItPNVX/sLl4jrClTrOGJjDU7orMvNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426961; 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=ukzXmTkH/UG6MtnXHMAWLuPgUKOI9johr32VpU9wJfY=; b=Iteey2KtNGWf0Alo6Z66+QQz0JxsCWStgOpWX6d5396IAy7dAtBnkH7l9pATNmmkaY9ger3A5ZMFQN1Es80RFpTRjym/juuKZ2R/7HTi5pnNoBhBFFcWlU3ws55qqTuBhr1jq/j4HfAY+2diTMY03E+lrKTDcpbVrWwU/4g0BYQ= 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 1782426961112357.45436387373945; Thu, 25 Jun 2026 15:36:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfk-000572-Sd; Thu, 25 Jun 2026 18:35: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 1wcsf1-0004al-Rb for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:08 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcseu-0002KR-Pk for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:59 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-845537740ddso159904b3a.0 for ; Thu, 25 Jun 2026 15:32:12 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426728; x=1783031528; 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=ukzXmTkH/UG6MtnXHMAWLuPgUKOI9johr32VpU9wJfY=; b=zCsbUbbrW7hXf5Lu8ksupJNOwulNgbRN5hroB7XxJBljU9Htytw+8pIuBmvoB2Tz1h izdplmNnKVcWfrTEuJAKKfZFgKIJ2UFOhQ+jtNMvgEkqzFlc0yDBmYGkGf2i13Xf9Uic RbkxV3hNXvVxPmxxDl2OBgj1oQjddZ1De8kel5Eo1D+aBAbd3FPeqPVA0jpcgTktKvau vHvHdVkJ9gKwfZXcCSP600/sdAza9X7Me3UOVbftP9JhS9XH4stfYlW1Kc2JtMmPtDLt 9Kvs6s64bopQqXwuG/A9iKZBx9DuDVeerN/+bhXtvuW8psKMW8R1HeKpNjULT+MsnkOq 6hfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426728; x=1783031528; 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=ukzXmTkH/UG6MtnXHMAWLuPgUKOI9johr32VpU9wJfY=; b=kMYgUuHKN57ASDO5dEBLCapBvL048QevXM54dfVn9j1z9cNl0J4CtIwLdFpEig3f4/ eKoAlgdkhWmQfjMekPqQujiNOcI4O8rC6k1NWn4gMDbWj0NGVKHVwm3iFtEPXYgdlQoc wUJprqErGDVk8VGOu9J04UlV/ISlWFV3cvFvde/vbH/any3CUSEwxtTmxzRcDMBAgHDi uQhgTs8AfI5z5cUL5wcWGu8ltrLzuOKMF9N4zN3p1v1lVVTmLJX/OejfO22wf8bkaSmE pU12J63q1GYqpo085+eMToF8DbWKC5h6AsL4sjNofOcbGXVEEHEMc0fDDlcixj+2BXAp 3PKA== X-Gm-Message-State: AOJu0YxBSG813KNmJDkjEpcfc/uZvIt2tcU8MQQ/giDX7UWBy+JbeRLT E+CBFA3xT5mI43HZlCl7s8c2sQZc00NTvq2jnEi1FIBTTyKrILNmdM2d0+3sNbpxKRgqOkK/yAJ QNj7G X-Gm-Gg: AfdE7cnbQNudNdNpAgXRcIFUZIQmJT2qhlGDjKGJsFFVDSy8F7fo3KZxr1zKFb9RNR1 NbU0UMpeAb8YaaL+UY5g9fCUW/2/l7/acpHgPF3aIAO4w5yEDu/7U66mIQank5bQkedltlNivao hYc2LfyoEMcTb3DedtSAzk4pJIRRaYthiKntYwxdLX3oiqAQMzlBQANcMfb2Fb30013fp+MFbVS PLgKKjl0KvXUdEqQhoHiydzxS4/8VCui/5ajqs0rcTnG6qLWv2zCHMf+uK18fSF7XzFM00cZRHx tZJ+MIvYCbNtkTYzTVXAlu7yIXJsAHEye1SAn0gd6fIj7SztE1t42XBm1noIEsPo9KyndwoaV/G gTVryiLE0gvQgwL4Dc7GUf5uXQZAZXB+vyWa581xJBjpw5znj5KkclMX+2GW+O2SknQeEQnt1Xc /y3TvZESW8EdvoFg3jKopXhjMBiLEe0VFwyUCmB2VmUKfm79HN7A== X-Received: by 2002:a05:6a00:4088:b0:845:2f67:a0e6 with SMTP id d2e1a72fcca58-845b3c17addmr5224854b3a.46.1782426728172; Thu, 25 Jun 2026 15:32:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 09/15] target/arm: Implement SMOP4[AS] (2-way) Date: Thu, 25 Jun 2026 15:31:54 -0700 Message-ID: <20260625223200.763198-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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: 1782426963028158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 4 files changed, 39 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 780b8f162a..ddf771e446 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -379,3 +379,6 @@ DEF_HELPER_FLAGS_5(sme_ah_bfmop4s_sh, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, env, DEF_HELPER_FLAGS_5(sme_fmop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 123f459342..32fe867a3b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2938,3 +2938,19 @@ void HELPER(sme_ah_fmop4s_sh)(void *vza, void *vzn, = void *vzm, { sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_ah_fmop4s_sh= ); } + +#define IMOP4_2WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ +static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ +{ \ + TYPEN *n =3D vn; TYPEM *m =3D vm; TYPED *d =3D vd; = \ + *d OP##=3D (TYPED)n[0] * m[0] + (TYPED)n[1] * m[1]; \ +} \ +void HELPER(sme_##NAME)(void *vza, void *vzn, void *vzm, uint32_t desc) \ +{ \ + sme_mop4(vza, vzn, vzm, NULL, desc, sizeof(TYPED), inner_##NAME); \ +} + +IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) +IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) + +#undef IMOP4_2WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b198c7c855..b948591dd3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2092,3 +2092,21 @@ TRANS_FEAT(FMOP4A_sb, aa64_sme_mop4_f8f32, do_mop4_fp8, a, MO_32, gen_helper_sme_fmop4a_sb) TRANS_FEAT(FMOP4A_hb, aa64_sme_mop4_f8f16, do_mop4_fp8, a, MO_16, gen_helper_sme_fmop4a_hb) + +static bool do_mop4_int(DisasContext *s, arg_mop4 *a, MemOp esz, + gen_helper_gvec_3 *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, (a->m << 1) | a->n); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 43b6c32c04..a872fbb4c7 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1116,3 +1116,5 @@ FMOP4_sh 1000 0001 001. ...0 0000 00.. ..0. 00= .. @mop4_o2 =20 FMOP4A_sb 1000 0000 011. ...0 0000 00.. ..00 00.. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 + +SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427102; cv=none; d=zohomail.com; s=zohoarc; b=DAe76nuhyro68a3DA8VPZJ/1jzs9BtucwVOlbP216r0G2xhRUdpmrbDrZryOwrpd10yuiZwwh9rYFGBWRVWumZQbPR6ypkoZim+j1Cu9OIRQlo3JONtgQ3aY2YQxZ6iI+p+SLq2GG440fHDJDJPNA6NGgS07+D/PDSmdFNBwxV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427102; 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=p9xbsNghhooG56Y5xDxFqxu7y9OvncapOaejYstM/XY=; b=ek4az6uoXDT448HCGmtwj6oQ3hJZN4rCv69jIekhsvDwFKrjOvs3cxxHcbr1NH8Yw5YdVMWmBbC2mGwoK++X8TvPwfThtivdXjnjptQ+f5bsvJsCNB9zhEJGuYz2NYwJiX3oL4I9W0rLK/a9cdRBz0XydwCcoIPEwG8kfk5Uqmc= 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 1782427102528849.4962757087015; Thu, 25 Jun 2026 15:38:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfd-00050I-9p; Thu, 25 Jun 2026 18:35:41 -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 1wcser-0004Z9-2d for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:53 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsek-0002KY-R9 for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:51 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-8453427d3f4so130427b3a.3 for ; Thu, 25 Jun 2026 15:32:12 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426729; x=1783031529; 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=p9xbsNghhooG56Y5xDxFqxu7y9OvncapOaejYstM/XY=; b=rj3foIvXyK3UGZ6oKEa7f+HsJ7n1NwyQsM0vdUxUTOtjLhBnTK57YYJw2RB9B2pBmX HY2OArx0TjxNqGB0u2CYwXuEv8FgLZaMtnEjmr9JlUUEDTrNOmrzvswFc3TDpDQQeR7l pJThcVpWVbxslJ5AULdzy7DtFm30wcJiiwmBjjcoOUT/N9aSePrmZHsUTi9VnqHYU4Lp 2zh0cuLqNFcnhe/mIq8fJFi29PDfFxv7fzmMaK4mLrZTmdh1IE7dVLTzUAFmRJY8g+bR 20di+P9TKJ9todkJUBWjDfl9uQdMD6vkHC6Kbw4fzdyR6sdjjXOamdwDM8XaHTUO7Nty Tqcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426729; x=1783031529; 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=p9xbsNghhooG56Y5xDxFqxu7y9OvncapOaejYstM/XY=; b=oDgMagS1XEPt1CkGvXyHGQAvcUAeyfn5mmHuH4X2h3UNoeNJXV+zWWG9ZBJsIot4O3 6/jZvZmix4McnKkJCpv/ds0LinK4iy9gEkPyWSbih4kzay5cFA1wmLZKQ6fX+eJZ0K80 vAC5Lj8sTXVtJxkNK2I0/FGXZ+b7RmpZP516jEY9m44YJu3Dn5JtycrbKgI+Ol40bZkd 6N2heD/vg6SSdfycjvS1E+rN8VkxyWSPbq3lU7odpZUyTKWGeCffi3geCmxySpGpFq2n 7incUqnPpk2MEqWp8/eg/UcR4P7mYtFGXVRfV4EDvctsRabgEY/F2gxcZqjeuIjTg0Pi Svxw== X-Gm-Message-State: AOJu0YzLJ9K5hFlD+3rZ0BAROMEkoAcNiuIK0xn0BKQjIwK+tILKVgqf OwVLcRGqagSFOL04xcuYiAUhFPLApLqRDzCj5Y+q0ZTPekuUY1SiVhdQ5YSsa4V/WSAxRW8AB63 GDGdl X-Gm-Gg: AfdE7ckhgKpsWGBPeGrDPIaUiOiyR8Tfv4BeF5ukIasqVgKS854YgDp8NyL5DCqzqQI 7Nus6UP5j0MJJgJSFa/W/wqrjHu7f9DxlrKCMLXS1Fh0ITcuA3LwdDvxLTuxobxndC4uE728fYK Xcm5T48tZLmz2KDMESWo3g+c+6FkGYSl/iUhZk15Gycqf0n/Xgk4QNGojf3XRKjfSM4KNBaFxLy 2Ag79AH+VWSAC2+aJZi5ing1ARnbU1ee1BQ29NsWFpL4SxyHu+BAdkqTN6EX990ov9vS9KJX34F +wYPTHXU3scKaTkzk+PWPcpLPz9x9km5/Cen1dscE5OHah3dddQfbC2IsykCShZg3CGniwK+rfY 3R2PU4+RjqC+5mfIO1GjlSLgrHILD3qvf1dZktW6VYqJcp1/9eoLCfmqYAfIlYxfRSakVWUXLIr LJJwTUXjGOxqSFxXpyBhU48I7QMbVxBiV1WAeLxyhmcvgJfvsCIw== X-Received: by 2002:a05:6a00:1a8e:b0:842:4a39:6047 with SMTP id d2e1a72fcca58-845b3ab68c8mr4946567b3a.29.1782426728929; Thu, 25 Jun 2026 15:32:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 10/15] target/arm: Implement SMOP4[AS] (4-way) Date: Thu, 25 Jun 2026 15:31:55 -0700 Message-ID: <20260625223200.763198-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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: 1782427103768158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 4 ++++ target/arm/tcg/sme_helper.c | 19 +++++++++++++++++++ target/arm/tcg/translate-sme.c | 4 ++++ target/arm/tcg/sme.decode | 2 ++ 5 files changed, 34 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4319a95921..c3eeecbea9 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1817,6 +1817,11 @@ static inline bool isar_feature_aa64_sme_mop4_f8f16(= const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_f8f16(i= d); } =20 +static inline bool isar_feature_aa64_sme_mop4_i16i64(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index ddf771e446..070a1a2c1d 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -382,3 +382,7 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_smop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 32fe867a3b..11d9d509ec 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2954,3 +2954,22 @@ IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) =20 #undef IMOP4_2WAY + +#define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ +static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ +{ \ + TYPEN *n =3D vn; TYPEM *m =3D vm; TYPED *d =3D vd; = \ + *d OP##=3D (TYPED)n[0] * m[0] + (TYPED)n[1] * m[1] + \ + (TYPED)n[2] * m[2] + (TYPED)n[3] * m[3]; \ +} \ +void HELPER(sme_##NAME)(void *vza, void *vzn, void *vzm, uint32_t desc) \ +{ \ + sme_mop4(vza, vzn, vzm, NULL, desc, sizeof(TYPED), inner_##NAME); \ +} + +IMOP4_4WAY(smop4a_sb, +, int32_t, int8_t, int8_t) +IMOP4_4WAY(smop4s_sb, -, int32_t, int8_t, int8_t) +IMOP4_4WAY(smop4a_dh, +, int64_t, int16_t, int16_t) +IMOP4_4WAY(smop4s_dh, -, int64_t, int16_t, int16_t) + +#undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b948591dd3..6f3806f4de 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2110,3 +2110,7 @@ static bool do_mop4_int(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) +TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) +TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_smop4s_dh : gen_helper_sme_smop4a_dh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index a872fbb4c7..6fdf79c7b6 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1118,3 +1118,5 @@ FMOP4A_sb 1000 0000 011. ...0 0000 00.. ..00 00= .. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 =20 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 +SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 +SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782426938; cv=none; d=zohomail.com; s=zohoarc; b=Zndc8CR5XFbJ+xO05ENum1CqIQIALWZ5NrlisR7l2ma0g55gwNksAFTl6uJFHn66onW5dg3rUSbP8jXb7TwFEk/VVP5PhrCkRrsWK4nzU9SUzPjNPjsHdpVO1p5vwKdBFDfPuSb6HEwjAXsNJkE4wZM/Gp2GnLAB0JZ0n+fxcpw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782426938; 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=OX1DXUHDs3wRzE3fBNAvapThfwP0ojuzDB2f/jYyfIY=; b=b57EE02ddXHm66G2JrITLIK0j0pYwC0vb8kGvXCSo8psNvfhs92CiQcfrrOtdt3ii8G+NYOv/WeWeIeJgAt4xgiyQqaYi0lxJazc08yh5cqogffMT+J+CSIJXnyuoMx1PHh94ANjwQX/NkVcw1h0R2MGPF4rJ2ZVgMusTP6CFEA= 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 1782426938441450.7772147051602; Thu, 25 Jun 2026 15:35:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfL-0004fY-Um; Thu, 25 Jun 2026 18:35:23 -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 1wcseo-0004Xc-4i for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:51 -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 1wcseg-0002Kh-NG for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:46 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c85d4b4245aso237921a12.1 for ; Thu, 25 Jun 2026 15:32:13 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426730; x=1783031530; 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=OX1DXUHDs3wRzE3fBNAvapThfwP0ojuzDB2f/jYyfIY=; b=NxqvBJKLsZN+OicgwP4s1mWY6Apk13mxEEqwKTxXS1AHJ2GNAj4tClNLHAiWhOhp0f 74mQyRZUgv7YChEqlxnBuwx0CyaueEfHWHjCdgGAGjCpgmrKrY1p+VGvxbxhEdgKQvIo rWXR8KntkhxMfTK4WlbVM6KviK3CW7TG1qRSMhIQ89Ccw9Mg/8QGhJ7+ncZjULNbaDWv JlE1la1TtH+DrXlJnOSbuTJKZukoLXD+TJfSaC6Oxd1olmujt05GLrlBQrPHCL3bnDQJ gAgl0E2kAGAku3UundkUyzt9PtGXyfH1wPc0BuIWS3I0guOwGlPGKoaPwaSYK28J2Bko /iLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426730; x=1783031530; 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=OX1DXUHDs3wRzE3fBNAvapThfwP0ojuzDB2f/jYyfIY=; b=axgZukLJmKxA4JSiflgJkSqRZ6VplcXVvy52OASir7rUbUgEVDG06Grthu8RUnc1vd Nu+pUpKE1HZiJ+Zb73O3pHPgkOatxLxe/L6Nx1WlXYtXmePfRh+brp/wrYAarLc7JaMr pz+tIwrGhf3TjCIapM4iLWZQcjqg4k3vJ1ztXfph37JNux5zoy+6LXd81tmTU/vmwG+c ZErkkZcinST1KWgk7UnQq0syLZdPX+TZa2I6CxcXyo9wu8XTbxpGiZ58YMQVrtPv3xJW Wa17XY9oHnnOEq98O16njf31+w/bdwyx15/QXyL44h8KW6b7MNxt8wPDjjrvwQxnueSE +ovA== X-Gm-Message-State: AOJu0YySjj1REjrdp+rKYCRSD/E7Xf2UosUFQKWWSj/xLb7hLln9VJfq g+yx4CU9oL1x5gjvQ1rZ4NfkF7LIBZ4Y6VHUj8PBTa/hMghleX8X2+MONMlJUmMlzZVzkNuacfS 8IdDy X-Gm-Gg: AfdE7clVuKTUsDDj82uiP6gAmkUvC8vGXVSGxnOMIqmqXDTMiBHlM+iK+qTe3MvXRvu 54L3SF1DRbEJXP+PosCIlk+q1vWLCoW/shQc3nRR0tHkZZH6za1KTm3Epfrkyser6tCgOi4dlEy GTZulN3ABr2aibJonbWDPo2y7Jr2/Dbz6t1yo9Ml4wx7x95KPyVcsmk7lsxYRByL0lD1e4DibJu VQ9Q+XSbsCucXaZg2Z7J5/LpdktWaEbLzoeVzoTYrfgMrtTflG1+3Aj/7OI6KKZpyFF2LqfmZZj 0sLZMa3dvwK6o+URCw2cRsFP1fxbyjyAqH6NIB8nkURNPmJZrhJcP6Jja6sYE5wA5JUQaw5z1sd UJWPCgMxohFn1CB2Gfb7nVmXDg0vgOGFrgrz1rGHiuhUfG9vfJ4GDPZajBU0xoO18bEQAdgNjEG dAGhFcMKO/Vg0NAfDLIj0cXoaVw8OY6vJOSmE145Igu7jyyoZdeA== X-Received: by 2002:a05:6a20:7fa1:b0:3b4:b259:6965 with SMTP id adf61e73a8af0-3bd4acd3453mr5015384637.11.1782426729580; Thu, 25 Jun 2026 15:32:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 11/15] target/arm: Implement SUMOP4[AS] Date: Thu, 25 Jun 2026 15:31:56 -0700 Message-ID: <20260625223200.763198-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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=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: 1782426940826158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ target/arm/tcg/sme.decode | 3 +++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 070a1a2c1d..3da40d9f33 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -386,3 +386,8 @@ DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + +DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 11d9d509ec..5a9e3b8398 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2972,4 +2972,9 @@ IMOP4_4WAY(smop4s_sb, -, int32_t, int8_t, int8_t) IMOP4_4WAY(smop4a_dh, +, int64_t, int16_t, int16_t) IMOP4_4WAY(smop4s_dh, -, int64_t, int16_t, int16_t) =20 +IMOP4_4WAY(sumop4a_sb, +, int32_t, int8_t, uint8_t) +IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t) +IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t) +IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 6f3806f4de..fce07b2565 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2114,3 +2114,8 @@ TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, M= O_32, a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_smop4s_dh : gen_helper_sme_smop4a_dh) + +TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb) +TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 6fdf79c7b6..e3ba15bad8 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1120,3 +1120,6 @@ FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 10= 0. @mop4_o1_s0 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2 +SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427093; cv=none; d=zohomail.com; s=zohoarc; b=eY7rXaR9w4F47BN2LNoohF7iQsrCl4cXXZheMHvSSMWQG/YhBZfgvn7eGUbrCaO7VQTWzy609tJJH6jU8Gc5YnhCoZGp/O8IS2uyw69XsT6bFPX1TqFi5UdCtqkZZoRsDsbbwi9Fblb1fv5imG56UWPwY1yNflehFFyPY9SmTek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427093; 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=R4A9Ap27XbbVolHxaR32K8uSrPV73tTCewHI2hJj05w=; b=dpBX7C7x5iTU94BCNNSMpC7bppOkjxrfOvqFvpDcFQ1epzJVG9KZoFREymO6zZHMBgp5xQNepx+Ad5KAoAHQPhI5qcmXXku7tozNjrRxjHUDgtTHPt1q9io5Uq2Q6t6J5yBIYiKH6dgYLNid4SpU6Vlxg09UpKfvMPQGJL8an2U= 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 1782427093598887.2650939753288; Thu, 25 Jun 2026 15:38:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfn-0005Er-UZ; Thu, 25 Jun 2026 18:35:52 -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 1wcsf5-0004ax-5Y for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:14 -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 1wcsev-0002Km-Nf for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:03 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-845a3c05e40so144415b3a.1 for ; Thu, 25 Jun 2026 15:32:14 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426730; x=1783031530; 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=R4A9Ap27XbbVolHxaR32K8uSrPV73tTCewHI2hJj05w=; b=ey/bi03BBjbEcpVJa5QfMrux8Xpn2ZRCX8zbo0JQAZhIKfQQGX+zWjFG0rBiLUME/N RjnRcaFy/LUz3+EJ1bqmID3+2IVlxRVkkOWPYCL+3HNWRkWhhazcEByyqRXhSK2Xdb+7 yyqDfQfF9PVVrIqEUAStoPcTzvHL3hn+H3rqISM2+qlEDLOs6fLEOSMLwAeWTWb43+EN 8swwJwyrd9u+4LFGaGWguJwdXaCjlueM/Xgx0VwmLhIjjS+U+zvq34OFfMqgKFeW3JKu guknr1ZRPON6omUN+lZevSorEAN3XHfYddOQqWSpZ74+kYUe3T/+HuPsDduzu1K4cbLF qgbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426730; x=1783031530; 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=R4A9Ap27XbbVolHxaR32K8uSrPV73tTCewHI2hJj05w=; b=n95twRr2ITaEV34jUjytJAk+j7LqZjoLonSAnJlrVI2HUqTTxa7AH09yu0V7s9Yvhn 0Y4FtppQtNSTyYvMilbks/DO8yXz2Ol3pkwcwbC9B0s5q33kDiDq+LB7yEw5o0VbOjRo 0Z9KUijCrPphR23B3Cj4KXGJBsPBlx6u5gbdjIznPNVyG6pmSokaYj174mCsZCP5SEA6 dTtVQxk/2QA9rs+uUkB1XrLHTeM/bpmrnFc1PTzGjFAkZI0Me3QYANMfAkLeQtXrng/d e3IOUahfA7TU2IqSKfybJGLjLd+gc3qcsn9i0M28RZh9+Xdgg4jGrPbRT7D7g/5dwdoO rX5g== X-Gm-Message-State: AOJu0YwWASsFY6qXfK4WyhnfLgd21H0jYhrzxMp2altjMr0VvverjI8m YIop+gtYwF6QnV80ZaFK79/ISGKLaqkcM3vQjSky+KelzfC/Fp+HzAaRrIIdP0jAU1PXucVlBmO 524Bp X-Gm-Gg: AfdE7cnws6n4yfrIcVa/w5u2FVmgShL7iNWba14/gk6rG9Px3rzU+vqChohkH8o0yjO AglNt2xDZsSUG0f4l05/dVLwK3Y/Lx50hxgzz7Sh74XedFt/2cKki8iyBNUFGMC0HaGty0ipB5J tFd/me/gv8fHFhFgxCoRcd/YwR5SnvKLFBLgLU+2P0sbQILHV5nk4WMJwpSJQPbICmHBQeY2yrn BWg5HMyevKGR4eDurrEtW6Gc4netas2y0o/Ne5KsTfEvozHTZUH2lqhRDX01VODZRundT+w+6/k e2VW25NuAofVc4mcjBjXsEzBKyzAptBDFYysx9L4IVfwemCLkYBC/3Lm05zQpLGJpSG7ESuhRDv jysPHJ4kZlr/y/5TbV0xyDuVc0WEhm6mpJGfZDASVugx9ejqzv9/zJk+RueEvX/wiYdLdB/shC/ ngYXK7wJiLuRlBdODi5ztimJCozwn0GJKUXHWuT+bNFNLjL8M5eT7pdxMrWQjP X-Received: by 2002:a05:6a00:ccc:b0:845:3fea:965 with SMTP id d2e1a72fcca58-845b3b71200mr5198212b3a.23.1782426730200; Thu, 25 Jun 2026 15:32:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 12/15] target/arm: Implement UMOP4[AS] (2-way) Date: Thu, 25 Jun 2026 15:31:57 -0700 Message-ID: <20260625223200.763198-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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: 1782427095601158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme_helper.c | 3 +++ target/arm/tcg/translate-sme.c | 3 +++ target/arm/tcg/sme.decode | 2 ++ 4 files changed, 11 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 3da40d9f33..38b23690d1 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -382,6 +382,9 @@ DEF_HELPER_FLAGS_5(sme_ah_fmop4s_sh, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_4(sme_smop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4a_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 5a9e3b8398..fd085850ed 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2953,6 +2953,9 @@ void HELPER(sme_##NAME)(void *vza, void *vzn, void *v= zm, uint32_t desc) \ IMOP4_2WAY(smop4a_sh, +, int32_t, int16_t, int16_t) IMOP4_2WAY(smop4s_sh, -, int32_t, int16_t, int16_t) =20 +IMOP4_2WAY(umop4a_sh, +, int32_t, uint16_t, uint16_t) +IMOP4_2WAY(umop4s_sh, -, int32_t, uint16_t, uint16_t) + #undef IMOP4_2WAY =20 #define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index fce07b2565..a8fcb0630d 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2110,6 +2110,9 @@ static bool do_mop4_int(DisasContext *s, arg_mop4 *a,= MemOp esz, =20 TRANS_FEAT(SMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sh : gen_helper_sme_smop4a_sh) +TRANS_FEAT(UMOP4_sh, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_umop4s_sh : gen_helper_sme_umop4a_sh) + TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb) TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index e3ba15bad8..9c761f1934 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1118,6 +1118,8 @@ FMOP4A_sb 1000 0000 011. ...0 0000 00.. ..00 00= .. @mop4_o2_s0 FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0 =20 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2 +UMOP4_sh 1000 0001 000. ...0 1000 00.. ..0. 10.. @mop4_o2 + SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3 =20 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427088; cv=none; d=zohomail.com; s=zohoarc; b=Q4VpOP64en+B8kZD8ql/KD3u9nwOcou7SGWd2kszSF1WdFU6uOrPDas1uwg1XSrATvoK1NXnTYzEB16KnT1lJxi35ie+U/FIZ398rpHNCerhjsnB0u1jL4BROfNZlDEYNY4gSYWfMw96X9yztUyz2sHII/cAbK++WAR+/tn8Zdw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427088; 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=3pK4WUnEbTEjEUmPUO5jpL2LxDvXp/H9dTkmG29xPfM=; b=HFNwffcUWbzTVL1oThfD1ZNwxdq7ceps9z+g3iU2ocoKb1Pmrti/rjbSHAEer+zxmnHsTLDV6H+fpTgRvSy08TPiI2cBacV2+FeW6d7uWrNNWEnRn7medGzmsu9ueSMjLRdhshAIpy0ih+YqSNI5iuPAZYe3Otg7P54+cQpH/1A= 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 1782427088226795.8353560436328; Thu, 25 Jun 2026 15:38:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfq-0005Ms-7r; Thu, 25 Jun 2026 18:35: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 1wcsf1-0004ao-SS for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:10 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcseu-0002Kp-Pg for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:34:59 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c8857a27041so142748a12.1 for ; Thu, 25 Jun 2026 15:33:18 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426731; x=1783031531; 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=3pK4WUnEbTEjEUmPUO5jpL2LxDvXp/H9dTkmG29xPfM=; b=u7Bdxftv6xUARYCMlwXIyQIHjdWzBbuumtgerp5V8Kt6r6sk3t3RlqPNM+oRkAASzj 624wgVR8+DfLwNWZY0Khek/sbj9ouUulflvioJuQ/jxdkWWJHhhjQ4D0uITG9Xa4aKwz 8uXvslqp82e89eDGJz5lKwmJoqTncf21xSJiAL2LFPHpKyvI8m7jk+MwZg+sDVupmdHy aQZzg0PD+f0ooBou8dbK+ATBSf9UnWF2YtJZi4i/Jlc5L5Huh9tsr9JFCzhvKGwnvI1+ rKD+7ajZNXkg8LTm9SdNOGBbj1+fAle0/yQkgf6UNp+wbD3DBvtrOyCNwKyCI1rMD/PF X0+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426731; x=1783031531; 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=3pK4WUnEbTEjEUmPUO5jpL2LxDvXp/H9dTkmG29xPfM=; b=nAqTEDiGOusrBTE6bnXi51KQgb/+rOzVpVedtbpduRvblg+cK1qGE/Aos5iZOhQ8fr ZFmRBlqq8SuB9RuH6E4jBZcMQpVvPGk/Edlt5sZFTTCZk8RnmDwBr4ctHTgQ0w+pL72H g+PbxWrMYMinEfBOl5wEcJOOaXrUyfYDrVNMymDsN3UW6Qj4dx0VVslKzGoBpjH6X6No zmiQGUxp4Vybs6nSPQtPsc8vIla55VriCZDSy/3eRVXiHoxezvhKdr5uhfkkbUbfxRSh 9nl1qMLA04GYp6zZO9wkM4iTAfgWZxImwEAl8aQCP+HVnxWJ6v4dm4d9kGrSZxs9nnes mA2Q== X-Gm-Message-State: AOJu0YxEU15kll4ImEYLQB7kzZMF12TmVnU6sgizEmixdwxn8iHtUe5N CK0541DPDN8M+xpyZwN4Nq3YxDJDyWt9L6RRbtrqqs/NUtyRF3skAha89Wm/uP5oqBDoX1xWHbU YQVSk X-Gm-Gg: AfdE7ckmcgi1JYLSOPTATi8wZ8ve2TR+ICW9AkM0jSIuAW6CeoCLUgfXANO97ucEdVZ TRi2h6PtzHxapIL5phGH1eliy3/7jpyAn4eIITniq//IMgesjXaOQil8D8T30oKLVDZ/3cVW7QP +OOvvv3IDSJkC7HULTO+bpzyTEIurJxmO0+SHxIzvx4SbOkD9fh1TsMTrQN+ef7awPD6TYYgf07 vXSKdnzIgVUVdr1cuO7AzQZglcgk3k4D5/o0JmeqGhwvikYGUIa6rTCBL5gjakqJtt5X3nS2kl4 5dPDVFWCp5ulFERyLtNj60G9JExdKHzClum5jsE15eqmmSthOm+fD2ITv9DT1upCstxuOKisimh sQOdUs8i+QLxWGETdoP17Auaap3LGVSoUYju7jaHZQdFDYrpFfQi/ok+96JBhRnZj7uX85PWPOm jmVlZ17ecm4wnZWpRAwUDzGIDbNHvf+4QXDvJ4DC/ew13ylPwucFqEOlQTpwTp X-Received: by 2002:a05:6a20:7f8e:b0:3b4:3ef0:9132 with SMTP id adf61e73a8af0-3bd4af5cec1mr5171189637.11.1782426730813; Thu, 25 Jun 2026 15:32:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 13/15] target/arm: Implement UMOP4[AS] (4-way) Date: Thu, 25 Jun 2026 15:31:58 -0700 Message-ID: <20260625223200.763198-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1782427089542158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ target/arm/tcg/sme.decode | 3 +++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 38b23690d1..60bc3c6e9b 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -394,3 +394,8 @@ DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) + +DEF_HELPER_FLAGS_4(sme_umop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) +DEF_HELPER_FLAGS_4(sme_umop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index fd085850ed..f5fa69841d 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2980,4 +2980,9 @@ IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t) IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t) IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t) =20 +IMOP4_4WAY(umop4a_sb, +, int32_t, uint8_t, uint8_t) +IMOP4_4WAY(umop4s_sb, -, int32_t, uint8_t, uint8_t) +IMOP4_4WAY(umop4a_dh, +, int64_t, uint16_t, uint16_t) +IMOP4_4WAY(umop4s_dh, -, int64_t, uint16_t, uint16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index a8fcb0630d..b14aac2c17 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2122,3 +2122,8 @@ TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, = MO_32, a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb) TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh) + +TRANS_FEAT(UMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_umop4s_sb : gen_helper_sme_umop4a_sb) +TRANS_FEAT(UMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_umop4s_dh : gen_helper_sme_umop4a_dh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 9c761f1934..4c61e6ada6 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1125,3 +1125,6 @@ SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2 SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3 + +UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2 +UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427079; cv=none; d=zohomail.com; s=zohoarc; b=ch0X1wjmNRaRLpfveU64k2zN8zyTSacjdha7UZiFmjmBnXwlbyhwNFYR4cYHrj7z0G7dbpmsosZ8j+Z6uccgmzIiAAprxxgXu5y0o0ecrK8zhFI7ef/B+AlFe+FEo1sLThMBDEa2dVqFdgmii0vyq1vVG+1K59AQvMay/DWCUL0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427079; 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=Z8X1JYqOItFLkLZMSnrhpgKQ+9W/lqS8gJ1yRX2FcVw=; b=HyxMqm4xu3tIbhykgaS1EaQm6Hf3XHd8yaIjzXsYMej1wrR40UUJ72TiBQ7b5oMp+LMLwPbw/0F/0RrtU4JrizHtTftyuavb6B2quFqPqA4evSsJZTBqAQ4kV7D0qMmpMWXlxyeSYVXhRgoVEqO7L9iBO/3Mnsebok570FZLW8Y= 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 1782427079269304.09890910105526; Thu, 25 Jun 2026 15:37:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfq-0005O3-TS; Thu, 25 Jun 2026 18:35: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 1wcsf1-0004aq-TR for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:10 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsev-0002L0-Ne for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:02 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-845a3c05e40so144419b3a.1 for ; Thu, 25 Jun 2026 15:33:18 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426731; x=1783031531; 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=Z8X1JYqOItFLkLZMSnrhpgKQ+9W/lqS8gJ1yRX2FcVw=; b=KiTf3+ukEnwMN1i4HhcaLrtJjlXuq1OaDuUP1b+ztVjofrdZKD9u9wXhkI0RDE6tD8 2i7+2ygCv2OINeiG8HXxRuFLCwSYhYlQxTPycavD6qVhafZrm64QvAFvh6RsJsDL4flD WEYypLfxbL7cpRYIGWom0ULTwm8kZYZ59yNG00hE6CZqqNBMlPJx73IjIsky/NLeXoXa ChvMKOqPeGP/lm7nw5usKuP4TbN4eLyUchkqNUSY0X3DYrQEXJSLk26feoaypUH0N7W1 muu7Tcsj2Nj77wMKUBI6J6jI/m+VLCZFq3rkQ8mInn5Vrrp6jZvxdm79uATC6MRwpAfU Fxzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426731; x=1783031531; 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=Z8X1JYqOItFLkLZMSnrhpgKQ+9W/lqS8gJ1yRX2FcVw=; b=XqJiw3Qu/TlvXlpcaASMqo/bodNuiMaUYQ+dLcttgnfXkiDBx5xISzVoQQW5iayv0d uwVg6JYlKpjEK48YJAF/2dAaftqyIVIMXwetAegwAE8gUZFv2J/VIlEAm3oet0OJHLMq eDe9Idl08613MiaswhOI+i5Xi+R1l2OVcnDdV0+5aVxTMRja+rKbjjMiQ8rk0xFh/gl2 3uojRREVoXF1umWozOz12fEtjlP7GuCO/fr++qsPgxBSvQufz688a7sTE5ZF01Ol1DE/ xKxqadyevdACg4swnMFjXJh8VnTIqTeIrSg3+5TvE0L6ppYHIV0j+qpywgXegda2tZPF q3lA== X-Gm-Message-State: AOJu0YyNLATKOzyVHsIkyUqsB+qq7rtvbnsvg6CQpw/MZZ/GfiwhUAFh wIgp1ORLxAGjCu58RZWQpkg88b5btu3d4oExrCfs5Q9Z9YuC8L5RcLe9esWLa6XxO23x0zJi8U8 oY6Dn X-Gm-Gg: AfdE7cnwUw/XKU1oYKlwDVWv0hMUz9bYtmuYZXRHW3gRTCsB6ObDR43B5UepsUnAGEw gHAnvSnvPMcbvFfEgM1fZmunOOCTGhjIB0iPR8txuQXVJPuozjTwT9h1g9Cd+GMNvWByBRJbQDn IKqdzuHupau0BTiJsUdGc1d8hWWg37/NQX1fHuvE43c2dKSIW2v+a3+1aLq5LnxA3ZiaOaWa/hG JMoyv6A7sLymwqJ6JDjrS2Z5WOWc45M8HRCDTcXgwmIMSGaxH5EllEql5OrMO/F8j7TuGv144PX PvgD/482HzUyTZY8fIs5Hvt/ur+NEwKE8Fud3hKnkLElVzMFYbW9N2A3N7W+XjSi/VNO/ZAHZdJ q7OebstHyZGtST9b4h83Bf5GRGyzyJbmnPhf39voeGfE0yS5hpyxLbd3c1rDgcRxsa0C7vCUAgN fHzlcMOIrqjT9y5cmC6l2EOSnIe0A3KDqx5j+bsIMDDM3N8j2ysw== X-Received: by 2002:a05:6a00:230a:b0:845:42b9:386b with SMTP id d2e1a72fcca58-845b3ac2640mr4536567b3a.12.1782426731411; Thu, 25 Jun 2026 15:32:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 14/15] target/arm: Implement USMOP4[AS] Date: Thu, 25 Jun 2026 15:31:59 -0700 Message-ID: <20260625223200.763198-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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: 1782427081657158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme_helper.c | 5 +++++ target/arm/tcg/translate-sme.c | 5 +++++ target/arm/tcg/sme.decode | 3 +++ 4 files changed, 18 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 60bc3c6e9b..7fc7129e54 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -399,3 +399,8 @@ DEF_HELPER_FLAGS_4(sme_umop4a_sb, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_umop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_umop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sme_umop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) + +DEF_HELPER_FLAGS_4(sme_usmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index f5fa69841d..23bb816b6a 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2985,4 +2985,9 @@ IMOP4_4WAY(umop4s_sb, -, int32_t, uint8_t, uint8_t) IMOP4_4WAY(umop4a_dh, +, int64_t, uint16_t, uint16_t) IMOP4_4WAY(umop4s_dh, -, int64_t, uint16_t, uint16_t) =20 +IMOP4_4WAY(usmop4a_sb, +, int32_t, uint8_t, int8_t) +IMOP4_4WAY(usmop4s_sb, -, int32_t, uint8_t, int8_t) +IMOP4_4WAY(usmop4a_dh, +, int64_t, uint16_t, int16_t) +IMOP4_4WAY(usmop4s_dh, -, int64_t, uint16_t, int16_t) + #undef IMOP4_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b14aac2c17..dcc4690fba 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2127,3 +2127,8 @@ TRANS_FEAT(UMOP4_sb, aa64_sme_mop4, do_mop4_int, a, M= O_32, a->s ? gen_helper_sme_umop4s_sb : gen_helper_sme_umop4a_sb) TRANS_FEAT(UMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_umop4s_dh : gen_helper_sme_umop4a_dh) + +TRANS_FEAT(USMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32, + a->s ? gen_helper_sme_usmop4s_sb : gen_helper_sme_usmop4a_sb) +TRANS_FEAT(USMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, + a->s ? gen_helper_sme_usmop4s_dh : gen_helper_sme_usmop4a_dh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 4c61e6ada6..724816570e 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1128,3 +1128,6 @@ SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1.= .. @mop4_o3 =20 UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2 UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3 + +USMOP4_sb 1000 0001 000. ...0 1000 00.. ..0. 00.. @mop4_o2 +USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1... @mop4_o3 --=20 2.43.0 From nobody Sun Jul 26 11:53:08 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=1782427089; cv=none; d=zohomail.com; s=zohoarc; b=JSvY5OGxKkLuO0Bu/6dbR9cNewrAnQQSJqd37WCM7qzbOnTWleFfXr2LZ2fSpWcsUpl4Euqr2m4PlBy72Pof/s4UUA1fxRJJBwj6FgTv79eny+7w9Eq2Roy0MRsONL4FJM+VYz+iY8sxwqsBM4aV9VNJSA+MoxclybWjO7Fj2wA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782427089; 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=N2qvPCvAlb5yeTP6nFMpGkPdpxWzC532ymb18S8maJ0=; b=II1eW3W0+SPL2A6vh1qchHFRsCMA6e3WCxr1M81qCU7jkk2d1zXuyr2PP3A3ZqIiRC3YBmEnxFqYt0xmC7kBq4Wb28fD1RxgLwKL4OhL7zNOWi7OiMOFnZw7Acv0VeKHwG7skKLq05PLu1QN6JGtQoYC8Vld14GXXnDLjFgMCCM= 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 1782427089058702.3358308140316; Thu, 25 Jun 2026 15:38:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wcsfn-0005Ej-Nq; Thu, 25 Jun 2026 18:35: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 1wcsf1-0004ap-SI for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:08 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wcsev-0002L9-Ne for qemu-devel@nongnu.org; Thu, 25 Jun 2026 18:35:01 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-84594492c26so200536b3a.2 for ; Thu, 25 Jun 2026 15:33:18 -0700 (PDT) Received: from stoup.. (174-21-129-215.tukw.qwest.net. [174.21.129.215]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-845a412e5e9sm5450139b3a.54.2026.06.25.15.32.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 15:32:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1782426732; x=1783031532; 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=N2qvPCvAlb5yeTP6nFMpGkPdpxWzC532ymb18S8maJ0=; b=amicl6Mp//DbhzMaM9QZdteeNCheqfKtDfRX80RRUn6V8NpOZIz0Ay7qKM9az+81+g nCv4wh+AkF9ItUtHLnYugjewuuQRH13HLsmUBr5dxeD8xB2YXZ06jcywabXeuaBCbYeh EvYX35rgapQx0zWkpdNjsACM+AVCDOy8rt129FRl1+HBwxk8TlhHEuC/WKcylQ6MpF2N dNh7X5xFJ+ReQ7UgyuGBgD+QcmSI0GcuF5S7IDhsFM6wtXWfYkjQyieDwPx/6fGSs+40 uCtIVoWWK2oyAAMyu4dIj4G+eq7C91Lt4gtoDVoh2v5udrxMUDL1KcF/46px+oa1HUDO Pqvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782426732; x=1783031532; 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=N2qvPCvAlb5yeTP6nFMpGkPdpxWzC532ymb18S8maJ0=; b=UpYAvdV4U4E/iX227nFSAtG9NvvwnC54vNjem2yTlRc9hjjWn2WvIUp1Z7nBcvf84D +bakHXZdJSWZG0yLoHk6Jxz7D0erq7w5nsEzTH2MKv+kafJAtDPXiKt7W5lG7mRa9ZHf 885XZG0HYUm/XKt2/3VbSc5C8kDGS1g+1ROJ1k6JSNF4WvV/Dd7OucjJGu+41HBNELtI KiwEgrZF6cm8NHRUGbhjKPc3dkU/DUBlDbHoyOOQ3QRqA/b4OYFG5KgE2gXBJHJPIutL L0WyXVPoHQorCmJ+UjlO6JpkBVCFBmemXPO6lGl1quGhPmHXc6/QZS44yCAmzw9YBPm8 GZ5A== X-Gm-Message-State: AOJu0YwpYIhE5XcBdJWCHDBpGMsLfUZtUWu3sWgokV25frKzILV/L2nV NSNSppSBvnvbamJZ6wBzwI/zhvaFDP1mLyVyRePaSb077pDEsCMrcTg/eoZlmGdukzztAvmB/HJ Ls2B5 X-Gm-Gg: AfdE7ckIvCfHlPTTeNkTMeYHJDcCITh01oFuPs6tfrrUv6kDN6x0SH/tqiv1ffaDi+L W7wEYVp+jFlCgDlle4j+q2BNsJKqEv+VfPaNlUJR/E302Aq90utLSdgmbuDVZLCCC9PU7iSkyex X2HFfaIgkpBLIP1FTLoJrAgkUyReEN/STKVQRl3PlxWBjPgtmE6SJFghJvn3BWZyyQOtl1ty+Sv WYH+A8By/I0N8ZnxQqk4uwl36Ub2G54aJpnISb744woHsDz8Kw94hQnAqfpYERNzEZJbwtKCewX FY57qukT0zv+Y4MdZCkWBy6HOxV8uG2/bT5x0unOd5jyq5X4Qqtci8gfLwSyoZdHCvv0C74WsRp qxP2Qfi0pd7DQtuf9HhU7xK1LUEZhdpTiq32NOD1dDZo0rjfXVfnPe+IavF6FlTNktWygf3yfY4 gCVXMcgMaXoiu4Zz92ma6jm+FNM3T2CxoCx08wJQUMWcdv15S6Dw== X-Received: by 2002:a05:6a00:2344:b0:82f:3a1e:5618 with SMTP id d2e1a72fcca58-845b3ab5607mr5422904b3a.22.1782426732132; Thu, 25 Jun 2026 15:32:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 15/15] target/arm: Enable FEAT_SME_MOP4 for -cpu max Date: Thu, 25 Jun 2026 15:32:00 -0700 Message-ID: <20260625223200.763198-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260625223200.763198-1-richard.henderson@linaro.org> References: <20260625223200.763198-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::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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: 1782427089552158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- 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 42aeb29306..5c5fd17d68 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -174,6 +174,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); GET_FEATURE_ID(aa64_ssve_aes, ARM_HWCAP_A64_SME_AES); + GET_FEATURE_ID(aa64_sme_mop4, ARM_HWCAP_A64_SME_SMOP4); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 42bff58e76..da2940a41e 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1383,6 +1383,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, SMOP4, 1); /* FEAT_SME_MOP4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 7b85ec6146..3d711d76b7 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -173,6 +173,7 @@ the following architecture extensions: - FEAT_SME_F8F32 (SME2 ZA-targeting FP8 multiply-accumulate, dot product, = and outer product to single-precision instructions) - 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_SME_MOP4 (Quarter-tile outer product instructions) - FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) - 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) --=20 2.43.0