[{"id":3675027,"web_url":"http://patchwork.ozlabs.org/comment/3675027/","msgid":"<CAATN3NpFSDHkRepdeJK2bt6KgtrAFP=QG1hO6g0fO53HqQ_1Dg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-09T00:03:04","subject":"Re: [PATCH v3 11/16] target/hexagon: add v73 HVX IEEE bfloat16 insns","submitter":{"id":86757,"url":"http://patchwork.ozlabs.org/api/people/86757/","name":"Taylor Simpson","email":"ltaylorsimpson@gmail.com"},"content":"On Wed, Apr 8, 2026 at 10:37 AM Matheus Tavares Bernardino <\nmatheus.bernardino@oss.qualcomm.com> wrote:\n\n> Add HVX IEEE bfloat16 (bf16) instructions:\n>\n> Arithmetic operations:\n> - V6_vadd_sf_bf, V6_vsub_sf_bf: add/sub bf16 widening to sf output\n> - V6_vmpy_sf_bf: multiply bf16 widening to sf output\n> - V6_vmpy_sf_bf_acc: multiply-accumulate bf16 widening to sf output\n>\n> Min/Max operations:\n> - V6_vmin_bf, V6_vmax_bf: bf16 min/max\n>\n> Comparison operations:\n> - V6_vgtbf: greater-than compare\n> - V6_vgtbf_and, V6_vgtbf_or, V6_vgtbf_xor: predicate variants\n>\n> Conversion operations:\n> - V6_vcvt_bf_sf: convert sf to bf16\n>\n> Signed-off-by: Matheus Tavares Bernardino <\n> matheus.bernardino@oss.qualcomm.com>\n> ---\n>  target/hexagon/mmvec/hvx_ieee_fp.h           | 37 ++++++++++++\n>  target/hexagon/mmvec/macros.h                |  4 ++\n>  target/hexagon/mmvec/mmvec.h                 |  1 +\n>  target/hexagon/imported/mmvec/encode_ext.def | 15 +++++\n>  target/hexagon/imported/mmvec/ext.idef       | 62 ++++++++++++++++++++\n>  5 files changed, 119 insertions(+)\n>\n> diff --git a/target/hexagon/mmvec/hvx_ieee_fp.h\n> b/target/hexagon/mmvec/hvx_ieee_fp.h\n> index ad854b905d..21883c0fad 100644\n> --- a/target/hexagon/mmvec/hvx_ieee_fp.h\n> +++ b/target/hexagon/mmvec/hvx_ieee_fp.h\n> @@ -9,8 +9,11 @@\n>\n>  #include \"fpu/softfloat.h\"\n>\n> +#define FP32_DEF_NAN 0x7FFFFFFF\n> +\n>  #define f16_to_f32(A) float16_to_float32((A), true, &env->hvx_fp_status)\n>  #define f32_to_f16(A) float32_to_float16((A), true, &env->hvx_fp_status)\n> +#define bf_to_sf(A) bfloat16_to_float32(A, &env->hvx_fp_status)\n>\n\nBetter to follow the naming convention of the previous macros\n    bf16_to_f32\n\n\n>\n>  float32 fp_mult_sf_hf(float16 a1, float16 a2, float_status *fp_status);\n>  float32 fp_vdmpy(float16 a1, float16 a2, float16 a3, float16 a4,\n> @@ -29,4 +32,38 @@ int16_t conv_h_hf(float16 a, float_status *fp_status);\n>  uint32_t cmpgt_sf(uint32_t a1, uint32_t a2, float_status *fp_status);\n>  uint16_t cmpgt_hf(uint16_t a1, uint16_t a2, float_status *fp_status);\n>\n> +/* IEEE BFloat instructions */\n> +\n> +#define fp_mult_sf_bf(A, B) \\\n> +    float32_mul(bf_to_sf(A), bf_to_sf(B), &env->hvx_fp_status)\n> +\n> +#define fp_add_sf_bf(A, B) \\\n> +    float32_add(bf_to_sf(A), bf_to_sf(B), &env->hvx_fp_status)\n> +\n> +#define fp_sub_sf_bf(A, B) \\\n> +    float32_sub(bf_to_sf(A), bf_to_sf(B), &env->hvx_fp_status)\n> +\n> +#define fp_mult_sf_bf_acc(f1, f2, f3) \\\n> +    float32_muladd(bf_to_sf(f1), bf_to_sf(f2), f3, 0, &env->hvx_fp_status)\n> +\n> +static inline uint16_t sf_to_bf(int32_t A, float_status *fp_status)\n>\n\nUse bfloat16 instead of uint16_t and float32 instead of int32_t.\n\nOtherwise\nReviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=A8Le6VVd;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frgBt1HRdz1yHG\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 10:03:48 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wAcrk-00029B-1D; Wed, 08 Apr 2026 20:03:24 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <ltaylorsimpson@gmail.com>)\n id 1wAcrh-00028Q-E9\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 20:03:21 -0400","from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <ltaylorsimpson@gmail.com>)\n id 1wAcrd-0006Sh-GQ\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 20:03:18 -0400","by mail-pl1-x62a.google.com with SMTP id\n d9443c01a7336-2adbfab4501so1674315ad.2\n for <qemu-devel@nongnu.org>; Wed, 08 Apr 2026 17:03:17 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1775692996; cv=none;\n d=google.com; s=arc-20240605;\n b=j4lXiCmt9lsIVxUmfHs1fLsCgrNRklg7OtiXqpiyFaRl3v6IxXmkXiCWoAKFe/WWia\n nFr3LDdahBxQgg6hvPtPER8RZ9gToBb9AjpTDsuYNohI7agEK2dnUERYm+ZvnuWBrDzY\n ysc/ONH/zFFxQAUmvJGBsKPoXl6CwewC8LPCbC5heXXkxPJSwc/f13HDxkwrRCDESWSs\n EY9H8Sud0FRZGdqnuFT6uvny+5yuntE6aNnpnHnKdAy5yGAlzbZTZyuWVghMJtoQdrTH\n nggNLJO9bLu2QRKdcU+rr1Ml/j6+daccLPGVuhdi3ZA8KL8w76eXj+/Q6vo+/wqHQz5k\n KsDQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=MmmZCom89amzIydKcUlIxGRCmvpijas64e9OekumU44=;\n fh=seHpsuERei6GoCJPMtZiXpXOw/2EVnvuQ7nSTREwIqg=;\n b=UIltWvBl/WjuwtWSGkrPLte6pjN9Y9TsKAGo6Hy01vxgrKzy3QsqjaL7EFNWkCJfZE\n jF8WXt0NbyeoGTotxO+g+M22s9Z4MLJPHo2mTee++uBvvG/2tcCwQZtufVYsGeRKOFdV\n VZy6jXunO5fNxMomvaOxVQeu1iCRTBYwCXDoUXTMrd6zp7ktxXO0GHTsRZLIXC7DjtEo\n AgD+zEpiaQD4qulitxiF6P8nt+wcn7EMukJsSR2cpkrWetj05AtaS+mh2Z6MLW9pFykD\n MqHVWqtieBLGcDCuv/oRCd0OUO5xZe+C65A5Hwp8OWmsWNvxyku/4/2u3BfetjxF/bBF\n vnhA==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775692996; x=1776297796; darn=nongnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=MmmZCom89amzIydKcUlIxGRCmvpijas64e9OekumU44=;\n b=A8Le6VVdDPiWhgTxUZNv7OXfU/JIwvmbj7fxMBNyvv4Yr87LLHAYG5XqPkMsD0jpkN\n 0Luom/21LPSDpVmpVk/EcgLmgflcV21aijdD95bCziv+xyr0HUnR7V+svvoPIIYd0h1G\n HJQ/eQruotqO97jJDem5Qp0WU7aKOQpRi4VuDGhKppfPz2fli/pva0wZLBQ6bsUWCmWP\n uzIM5uKpgWAmJZnK5VdKOyWO2E1W26pNtdn9M8J7j3IpcIkD5WjEnEsmwd8g8lFbahCr\n 3j6ELD19DSmnMOutiBAih+J6SEjxXuo07aohLjQPI5rDt1vTKrs9rcPN5zPN5px5gzPR\n AVRQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775692996; x=1776297796;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=MmmZCom89amzIydKcUlIxGRCmvpijas64e9OekumU44=;\n b=HQNcDalqejoScokQuMwF1kJVN9LE18DtQt7Hiq5mlz8tiegGYTc4Arvu0iM6n5/4Ba\n wXgv/RyZ+x6qIDzcPpj13QqbuhQNps0mpIbpuySsAdoACQ75glLOYr+br078LmwWQe8U\n DBwqOQxvmg0TMc8YalPnSlmrwuLtbII+1ZLPZ2LVieyXjG2a/3a8ZBCpJMsshrOo3MT8\n z4AQXBMVNYJZbCyLZqlvmDt6ueNNpsvj0vtVs5c1zov355/yGTl0A0tsrJYTxQQLRsRE\n fOR/HcZTTLYlZOOoXOQW7QlABOtnZw5TIgh2iaIAAUheAr8kIggmysW0EgUEWPo46/Bg\n u49g==","X-Gm-Message-State":"AOJu0YyhSyZsVD7OcrYbWNABH72heWYFZCOxJ0J3jISrdjtgrz5ADmnM\n wZXveYm1du/2hn2V8SYgKBj5nZA0uYvQnE1AHIEPrUh+knsniyZ5Lrb/NSbjDZNVQBSuQXX4jIs\n r4WTwkUtAXUNAuWHg8mFkDkhlk7pxQmg=","X-Gm-Gg":"AeBDievJWgZiJuWR9aKUnQbtl3TgpkI0FdZ6XZyYdJQbCwGOlE2yB3egOUZku+S7veL\n +erkrxOIa68y64jZQy+wnV2x7uEx8IzpHDCRYBQcXFU0InDbxzNxJnAN+AXVD7XudA2XI/iDrAB\n C9y/ETD1QQ/03MpnXhf8OyVPOTiByG2prHFLtRj4gGB9GLOBphZHsOHpQEfMsg9NTFbj7PB/OLF\n PecIksR7JJyag9hYghNw0vB9H0oJ5ieqb5/PdS92Xt34B2WoQ9/tMGzfwyG/thN6eDQgV4LXZa8\n l8VMng8Zh4EP3+BkdlgUYxcwi3Pqj1YwIUJmpaU=","X-Received":"by 2002:a17:902:c20b:b0:2b2:6cab:313c with SMTP id\n d9443c01a7336-2b2c73c6258mr10077085ad.20.1775692995802; Wed, 08 Apr 2026\n 17:03:15 -0700 (PDT)","MIME-Version":"1.0","References":"<cover.1775665981.git.matheus.bernardino@oss.qualcomm.com>\n <f84d180547f96f809684e858861086dc6dab9ed8.1775665981.git.matheus.bernardino@oss.qualcomm.com>","In-Reply-To":"\n <f84d180547f96f809684e858861086dc6dab9ed8.1775665981.git.matheus.bernardino@oss.qualcomm.com>","From":"Taylor Simpson <ltaylorsimpson@gmail.com>","Date":"Wed, 8 Apr 2026 18:03:04 -0600","X-Gm-Features":"AQROBzAFMr9oqD4ItV8UcHiXiGb82J2ttQBlEw4fKtooFoevvdemXxGtssrQCfo","Message-ID":"\n <CAATN3NpFSDHkRepdeJK2bt6KgtrAFP=QG1hO6g0fO53HqQ_1Dg@mail.gmail.com>","Subject":"Re: [PATCH v3 11/16] target/hexagon: add v73 HVX IEEE bfloat16 insns","To":"Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>","Cc":"qemu-devel@nongnu.org, richard.henderson@linaro.org, ale@rev.ng,\n anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com,\n philmd@linaro.org, quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com","Content-Type":"multipart/alternative; boundary=\"0000000000003eba78064efbbeb7\"","Received-SPF":"pass client-ip=2607:f8b0:4864:20::62a;\n envelope-from=ltaylorsimpson@gmail.com; helo=mail-pl1-x62a.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]