[{"id":3675002,"web_url":"http://patchwork.ozlabs.org/comment/3675002/","msgid":"<CAATN3NqVHaLtTYc46YKvHo6V8U4LZc9b7w6COnLNR4_3wmePdA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-08T21:56:26","subject":"Re: [PATCH v3 03/16] target/hexagon/cpu: add HVX IEEE FP extension","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> This flag will be used to control the HVX IEEE float instructions, which\n> are only available at some Hexagon cores. When unavailable, the\n> instruction effectively only set the destination registers to 0.\n>\n> Signed-off-by: Matheus Tavares Bernardino <\n> matheus.bernardino@oss.qualcomm.com>\n> ---\n>  target/hexagon/cpu.h             |  1 +\n>  target/hexagon/translate.h       |  1 +\n>  target/hexagon/attribs_def.h.inc |  3 +++\n>  target/hexagon/cpu.c             |  1 +\n>  target/hexagon/translate.c       |  1 +\n>  target/hexagon/gen_tcg_funcs.py  | 11 ++++++++++\n>  target/hexagon/hex_common.py     | 35 ++++++++++++++++++++++++++++++++\n>  7 files changed, 53 insertions(+)\n>\n> diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h\n> index 85afd59277..77822a48b6 100644\n> --- a/target/hexagon/cpu.h\n> +++ b/target/hexagon/cpu.h\n> @@ -127,6 +127,7 @@ struct ArchCPU {\n>      bool lldb_compat;\n>      target_ulong lldb_stack_adjust;\n>      bool short_circuit;\n> +    bool ieee_fp_extension;\n>  };\n>\n>  #include \"cpu_bits.h\"\n> diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h\n> index b37cb49238..516aab7038 100644\n> --- a/target/hexagon/translate.h\n> +++ b/target/hexagon/translate.h\n> @@ -70,6 +70,7 @@ typedef struct DisasContext {\n>      target_ulong branch_dest;\n>      bool is_tight_loop;\n>      bool short_circuit;\n> +    bool ieee_fp_extension;\n>      bool read_after_write;\n>      bool has_hvx_overlap;\n>      TCGv new_value[TOTAL_PER_THREAD_REGS];\n> diff --git a/target/hexagon/attribs_def.h.inc\n> b/target/hexagon/attribs_def.h.inc\n> index 9e3a05f882..c85cd5d17c 100644\n> --- a/target/hexagon/attribs_def.h.inc\n> +++ b/target/hexagon/attribs_def.h.inc\n> @@ -173,5 +173,8 @@ DEF_ATTRIB(NOTE_SHIFT_RESOURCE, \"Uses the HVX shift\n> resource.\", \"\", \"\")\n>  DEF_ATTRIB(RESTRICT_NOSLOT1_STORE, \"Packet must not have slot 1 store\",\n> \"\", \"\")\n>  DEF_ATTRIB(RESTRICT_LATEPRED, \"Predicate can not be used as a .new.\", \"\",\n> \"\")\n>\n> +/* HVX IEEE FP extension attributes */\n> +DEF_ATTRIB(HVX_IEEE_FP, \"HVX IEEE FP extension instruction\", \"\", \"\")\n> +\n>  /* Keep this as the last attribute: */\n>  DEF_ATTRIB(ZZ_LASTATTRIB, \"Last attribute in the file\", \"\", \"\")\n> diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c\n> index ffd14bb467..8b72a5d3c8 100644\n> --- a/target/hexagon/cpu.c\n> +++ b/target/hexagon/cpu.c\n> @@ -54,6 +54,7 @@ static const Property hexagon_cpu_properties[] = {\n>      DEFINE_PROP_UNSIGNED(\"lldb-stack-adjust\", HexagonCPU,\n> lldb_stack_adjust, 0,\n>                           qdev_prop_uint32, target_ulong),\n>      DEFINE_PROP_BOOL(\"short-circuit\", HexagonCPU, short_circuit, true),\n> +    DEFINE_PROP_BOOL(\"ieee-fp\", HexagonCPU, ieee_fp_extension, true),\n>  };\n>\n>  const char * const hexagon_regnames[TOTAL_PER_THREAD_REGS] = {\n> diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c\n> index 633401451d..fa8f615a9e 100644\n> --- a/target/hexagon/translate.c\n> +++ b/target/hexagon/translate.c\n> @@ -988,6 +988,7 @@ static void\n> hexagon_tr_init_disas_context(DisasContextBase *dcbase,\n>      ctx->branch_cond = TCG_COND_NEVER;\n>      ctx->is_tight_loop = FIELD_EX32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP);\n>      ctx->short_circuit = hex_cpu->short_circuit;\n> +    ctx->ieee_fp_extension = hex_cpu->ieee_fp_extension;\n>  }\n>\n>  static void hexagon_tr_tb_start(DisasContextBase *db, CPUState *cpu)\n> diff --git a/target/hexagon/gen_tcg_funcs.py\n> b/target/hexagon/gen_tcg_funcs.py\n> index 87b7f10d7f..b752ec883c 100755\n> --- a/target/hexagon/gen_tcg_funcs.py\n> +++ b/target/hexagon/gen_tcg_funcs.py\n> @@ -22,6 +22,14 @@\n>  import string\n>  import hex_common\n>\n> +def gen_disabled_ieee_insn(f, tag, regs):\n> +    f.write(\"    if (!ctx->ieee_fp_extension) {\\n\")\n> +    for regtype, regid in regs:\n> +        reg = hex_common.get_register(tag, regtype, regid)\n> +        if reg.is_hvx_reg() and reg.is_written():\n> +            reg.gen_zero(f)\n>\n\nWhat happens to the non-HVX registers that are written (e.g., address for a\npost-increment load)?  I assume they should also be set to zero.\n\n\n> +    f.write(\"        return;\\n\")\n> +    f.write(\"    }\\n\")\n>\n>  ##\n>  ## Generate the TCG code to call the helper\n> @@ -62,6 +70,9 @@ def gen_tcg_func(f, tag, regs, imms):\n>          i = 1 if immlett.isupper() else 0\n>          f.write(f\"    int {hex_common.imm_name(immlett)} =\n> insn->immed[{i}];\\n\")\n>\n> +    if \"A_HVX_IEEE_FP\" in hex_common.attribdict[tag]:\n> +        gen_disabled_ieee_insn(f, tag, regs)\n> +\n>      if hex_common.is_idef_parser_enabled(tag):\n>          declared = []\n>          ## Handle registers\n> diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py\n> index c0e9f26aeb..32a61505ce 100755\n> --- a/target/hexagon/hex_common.py\n> +++ b/target/hexagon/hex_common.py\n> @@ -723,6 +723,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                    sizeof(MMVector), sizeof(MMVector), 0);\n> +            \"\"\"))\n>      def gen_write(self, f, tag):\n>          pass\n>      def helper_hvx_desc(self, f):\n> @@ -789,6 +794,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                    sizeof(MMVector), sizeof(MMVector), 0);\n> +            \"\"\"))\n>      def gen_write(self, f, tag):\n>          pass\n>      def helper_hvx_desc(self, f):\n> @@ -821,6 +831,11 @@ def decl_tcg(self, f, tag, regno):\n>                                   vreg_src_off(ctx, {self.reg_num}),\n>                                   sizeof(MMVector), sizeof(MMVector));\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                    sizeof(MMVector), sizeof(MMVector), 0);\n> +            \"\"\"))\n>      def gen_write(self, f, tag):\n>          f.write(code_fmt(f\"\"\"\\\n>              gen_vreg_write(ctx, {self.hvx_off()}, {self.reg_num},\n> @@ -854,6 +869,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                sizeof(MMVectorPair), sizeof(MMVectorPair), 0);\n> +        \"\"\"))\n>      def gen_write(self, f, tag):\n>          pass\n>      def helper_hvx_desc(self, f):\n> @@ -913,6 +933,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                sizeof(MMVectorPair), sizeof(MMVectorPair), 0);\n> +        \"\"\"))\n>      def gen_write(self, f, tag):\n>          f.write(code_fmt(f\"\"\"\\\n>              gen_vreg_write_pair(ctx, {self.hvx_off()}, {self.reg_num},\n> @@ -946,6 +971,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                sizeof(MMQReg), sizeof(MMQReg), 0);\n> +        \"\"\"))\n>\n\nDo any of these instructions write QRegs?  If not, this isn't needed.\n\n\n>      def gen_write(self, f, tag):\n>          pass\n>      def helper_hvx_desc(self, f):\n> @@ -993,6 +1023,11 @@ def decl_tcg(self, f, tag, regno):\n>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env,\n> {self.hvx_off()});\n>              \"\"\"))\n> +    def gen_zero(self, f):\n> +        f.write(code_fmt(f\"\"\"\\\n> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n> +                sizeof(MMQReg), sizeof(MMQReg), 0);\n> +        \"\"\"))\n>\n\nDitto\n\n\n>      def gen_write(self, f, tag):\n>          pass\n>      def helper_hvx_desc(self, f):\n> --\n> 2.37.2\n>\n>","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=eZzA0uh7;\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 4frcP92CKhz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 07:57:31 +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 1wAatA-0004pV-NQ; Wed, 08 Apr 2026 17:56:44 -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 1wAat9-0004pI-QN\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 17:56:43 -0400","from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d])\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 1wAat7-0001WW-9Y\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 17:56:43 -0400","by mail-pl1-x62d.google.com with SMTP id\n d9443c01a7336-2ab46931cf1so1138315ad.0\n for <qemu-devel@nongnu.org>; Wed, 08 Apr 2026 14:56:40 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1775685399; cv=none;\n d=google.com; s=arc-20240605;\n b=ek/2GVCp9S+r7d3VOMPtBWIIR3XbWeHjpAHmtv/9t0cmpOhEtTe2f92FSjDgK7oGPN\n BvmRKYOO2ZDMfl0KzAG+iPNqPBWJ4YaC2KnOVfK2UNdk4Uf82NFLEfjDFpyAc4qgIwZH\n PLlhcNUeD6pRfd/2rvwHc1YcfM8ux8s4LEaYjXcQ/52PNPPpDQ9dWLYHGzpXDQNUjH74\n uEsq+v7Sd8jo/Nj/V5/PS03S156SfhCIEclggRtn1l8cPJtqjm7lCEAkkCugswO8xQPh\n zdKcirY9xnxEH4vqeGxVUwl6FPgo5Bs1fI4LY3+BUHJvtUGLWP7GDYLCb7oznMRKmyVW\n Xjgw==","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=n1VszSyqsIzCOwt1Jzlk/UBamUHXbDlwcWyTttfFv04=;\n fh=seHpsuERei6GoCJPMtZiXpXOw/2EVnvuQ7nSTREwIqg=;\n b=REcDhzK0iqeX4pnj4+KArhcALYH7uXrckmlaEIUzHrlAbzNzCIDveGagXc7B3O4XLH\n zW7jBK30SHowU2bZUSGtYNEB0UlLcW4unml/YS2ktHCAIgGkp5LOo6vnhcCSNFy15jz6\n XBSh3a6wY/N7Kwn3q907E74QsbEi0JcLMbSOniwt+05XnXD1HawrfZahPOxtJ9o33OqO\n jNE54XaN+Hq/t9fj18H5h/oB2LnXVABzofmUzfnYcQO2eUKgRhDvrfTdmyZtb0vXiIy9\n MyCzA5H8G9mnZ36xXhWcmNV1kpMxxuXAfKZk7ZKxAB6f021lUVg0/9aDM9vDr4zJa7CY\n JVHw==; 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=1775685399; x=1776290199; 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=n1VszSyqsIzCOwt1Jzlk/UBamUHXbDlwcWyTttfFv04=;\n b=eZzA0uh75NOi6b7mJ7WAEhG8hMuUuSdgV1TfWvu3UDDgHPsn4vI+2B64W/ClIb7Yle\n a/zNrkXcctpiyAOG6KXU1v69al8Oxs7TDykyYhDuSShMXF+8Bxu7LQ+73RtD9y6szq78\n /VJxZZ7fA91wCdRs3NOqxhh8zoBzLJIWr9zlEETnLdbYDuV2K1/eoH9qst68aNG9jR9i\n w3npkftSPsp720qnyaPpEfttkgdiGg0kHCOWT1B7dbfxo52vkTQIg06agaw8Dol2K+g7\n i2Nn/4pQxOd2htKYf3C0SyzjFU36e+TpXn/Oxxaz3pOHge24sGmA7csKMHx2wRDREhSH\n re/Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775685399; x=1776290199;\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=n1VszSyqsIzCOwt1Jzlk/UBamUHXbDlwcWyTttfFv04=;\n b=so5WRPAfhjkvMazUY27muiGtoLYI0rx83OOtqH7dr81WzNFnKSgM4C1x9NFt+HavOt\n qgyQHf114TFCPkMupi6jOgCIKZyQlH5vrnIxR5+IHvUt4R6vwsu7cSEIEziYsKn2M5O+\n nJsY3x4mN9YO5f/5y+r22J9WiwXGI16u8wmU3AK9yXftY8t1CjquAuryQjLukRh5wAo5\n srQrNPOoyYVhmDZ8Xc8ubSmgeJ88+EThQmrYO+dDsOkg95VrUn9oE+0c/30xwGhuVFoD\n gTUVPzsK+3lsTv8V/EI/7K2vzuVtOwsqYgZaPz/jAVmCR1mFVqgFy0EwANzUuhG54RA6\n g6ww==","X-Gm-Message-State":"AOJu0YyJbJIpMFkLXrKeNJJ2UjoW9m772UuwJ2jkTI5YyxCW1NHF/hxI\n FoXSXW9NlHq2NxiIcNvCutaVnncf0HD7b8mct+Ks0RktGQqq9WYKCqzl4Ib3x41ETqZxHibFdnD\n hh0gFr/9RD4ysOgH6yNY7r0lnu4HKL4A=","X-Gm-Gg":"AeBDiesdJH0sboX4mSYrpp2XR43lGLBSp7979KSK7ie3rksGPIbKT37CcbQLJ0Ze4O2\n 4SGRON7+KZDwMeqLnWt5ivfw/+Z8wwmiFg3a+YDhczVIRezO/0X0Vm23NvS+aaL1cQWOhywcZnp\n f+pjpsks0m1ElpduSnhGXvTH0Ak5IAA0PPwyfOJEcHkfuwCg1Q4QCYGPvCuv2PnsG/O0bEDpLXY\n v633pB49kwd1qYasovmmLhViD9Nh5Nn63SkaRj9BQ4V1SjE8ZbgrXoVYOXLW/+vUuOLX4h4MC8V\n YiR5Gb9azL9R+tffdXUEAWFsUG+aTOf4CtL9P4s=","X-Received":"by 2002:a17:903:1ae6:b0:2b2:54db:3e93 with SMTP id\n d9443c01a7336-2b2c736f057mr8904655ad.23.1775685399230; Wed, 08 Apr 2026\n 14:56:39 -0700 (PDT)","MIME-Version":"1.0","References":"<cover.1775665981.git.matheus.bernardino@oss.qualcomm.com>\n <bd05d9aa88d98453e25e5f3189f1a5d7bdbbc9af.1775665981.git.matheus.bernardino@oss.qualcomm.com>","In-Reply-To":"\n <bd05d9aa88d98453e25e5f3189f1a5d7bdbbc9af.1775665981.git.matheus.bernardino@oss.qualcomm.com>","From":"Taylor Simpson <ltaylorsimpson@gmail.com>","Date":"Wed, 8 Apr 2026 15:56:26 -0600","X-Gm-Features":"AQROBzCmBu6f_hY4tJaYUK9XEEJBfMtw-OAKocoB4r-sP3r2y1AvM5lIRHiHKkM","Message-ID":"\n <CAATN3NqVHaLtTYc46YKvHo6V8U4LZc9b7w6COnLNR4_3wmePdA@mail.gmail.com>","Subject":"Re: [PATCH v3 03/16] target/hexagon/cpu: add HVX IEEE FP extension","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=\"000000000000743c55064ef9f969\"","Received-SPF":"pass client-ip=2607:f8b0:4864:20::62d;\n envelope-from=ltaylorsimpson@gmail.com; helo=mail-pl1-x62d.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"}},{"id":3675968,"web_url":"http://patchwork.ozlabs.org/comment/3675968/","msgid":"<CABrGZ+Ec6Ayf_FS988yLrZQj9znWqg8i=Pz7NLZaBrq-22Gh7g@mail.gmail.com>","list_archive_url":null,"date":"2026-04-10T16:16:25","subject":"Re: [PATCH v3 03/16] target/hexagon/cpu: add HVX IEEE FP extension","submitter":{"id":90606,"url":"http://patchwork.ozlabs.org/api/people/90606/","name":"Matheus Tavares Bernardino","email":"matheus.bernardino@oss.qualcomm.com"},"content":"On Wed, Apr 8, 2026 at 6:56 PM Taylor Simpson <ltaylorsimpson@gmail.com> wrote:\n>\n>\n>\n> On Wed, Apr 8, 2026 at 10:37 AM Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com> wrote:\n>>\n>> This flag will be used to control the HVX IEEE float instructions, which\n>> are only available at some Hexagon cores. When unavailable, the\n>> instruction effectively only set the destination registers to 0.\n>>\n>> Signed-off-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>\n>> ---\n>>  target/hexagon/cpu.h             |  1 +\n>>  target/hexagon/translate.h       |  1 +\n>>  target/hexagon/attribs_def.h.inc |  3 +++\n>>  target/hexagon/cpu.c             |  1 +\n>>  target/hexagon/translate.c       |  1 +\n>>  target/hexagon/gen_tcg_funcs.py  | 11 ++++++++++\n>>  target/hexagon/hex_common.py     | 35 ++++++++++++++++++++++++++++++++\n>>  7 files changed, 53 insertions(+)\n>>\n>> diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h\n>> index 85afd59277..77822a48b6 100644\n>> --- a/target/hexagon/cpu.h\n>> +++ b/target/hexagon/cpu.h\n>> @@ -127,6 +127,7 @@ struct ArchCPU {\n>>      bool lldb_compat;\n>>      target_ulong lldb_stack_adjust;\n>>      bool short_circuit;\n>> +    bool ieee_fp_extension;\n>>  };\n>>\n>>  #include \"cpu_bits.h\"\n>> diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h\n>> index b37cb49238..516aab7038 100644\n>> --- a/target/hexagon/translate.h\n>> +++ b/target/hexagon/translate.h\n>> @@ -70,6 +70,7 @@ typedef struct DisasContext {\n>>      target_ulong branch_dest;\n>>      bool is_tight_loop;\n>>      bool short_circuit;\n>> +    bool ieee_fp_extension;\n>>      bool read_after_write;\n>>      bool has_hvx_overlap;\n>>      TCGv new_value[TOTAL_PER_THREAD_REGS];\n>> diff --git a/target/hexagon/attribs_def.h.inc b/target/hexagon/attribs_def.h.inc\n>> index 9e3a05f882..c85cd5d17c 100644\n>> --- a/target/hexagon/attribs_def.h.inc\n>> +++ b/target/hexagon/attribs_def.h.inc\n>> @@ -173,5 +173,8 @@ DEF_ATTRIB(NOTE_SHIFT_RESOURCE, \"Uses the HVX shift resource.\", \"\", \"\")\n>>  DEF_ATTRIB(RESTRICT_NOSLOT1_STORE, \"Packet must not have slot 1 store\", \"\", \"\")\n>>  DEF_ATTRIB(RESTRICT_LATEPRED, \"Predicate can not be used as a .new.\", \"\", \"\")\n>>\n>> +/* HVX IEEE FP extension attributes */\n>> +DEF_ATTRIB(HVX_IEEE_FP, \"HVX IEEE FP extension instruction\", \"\", \"\")\n>> +\n>>  /* Keep this as the last attribute: */\n>>  DEF_ATTRIB(ZZ_LASTATTRIB, \"Last attribute in the file\", \"\", \"\")\n>> diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c\n>> index ffd14bb467..8b72a5d3c8 100644\n>> --- a/target/hexagon/cpu.c\n>> +++ b/target/hexagon/cpu.c\n>> @@ -54,6 +54,7 @@ static const Property hexagon_cpu_properties[] = {\n>>      DEFINE_PROP_UNSIGNED(\"lldb-stack-adjust\", HexagonCPU, lldb_stack_adjust, 0,\n>>                           qdev_prop_uint32, target_ulong),\n>>      DEFINE_PROP_BOOL(\"short-circuit\", HexagonCPU, short_circuit, true),\n>> +    DEFINE_PROP_BOOL(\"ieee-fp\", HexagonCPU, ieee_fp_extension, true),\n>>  };\n>>\n>>  const char * const hexagon_regnames[TOTAL_PER_THREAD_REGS] = {\n>> diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c\n>> index 633401451d..fa8f615a9e 100644\n>> --- a/target/hexagon/translate.c\n>> +++ b/target/hexagon/translate.c\n>> @@ -988,6 +988,7 @@ static void hexagon_tr_init_disas_context(DisasContextBase *dcbase,\n>>      ctx->branch_cond = TCG_COND_NEVER;\n>>      ctx->is_tight_loop = FIELD_EX32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP);\n>>      ctx->short_circuit = hex_cpu->short_circuit;\n>> +    ctx->ieee_fp_extension = hex_cpu->ieee_fp_extension;\n>>  }\n>>\n>>  static void hexagon_tr_tb_start(DisasContextBase *db, CPUState *cpu)\n>> diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py\n>> index 87b7f10d7f..b752ec883c 100755\n>> --- a/target/hexagon/gen_tcg_funcs.py\n>> +++ b/target/hexagon/gen_tcg_funcs.py\n>> @@ -22,6 +22,14 @@\n>>  import string\n>>  import hex_common\n>>\n>> +def gen_disabled_ieee_insn(f, tag, regs):\n>> +    f.write(\"    if (!ctx->ieee_fp_extension) {\\n\")\n>> +    for regtype, regid in regs:\n>> +        reg = hex_common.get_register(tag, regtype, regid)\n>> +        if reg.is_hvx_reg() and reg.is_written():\n>> +            reg.gen_zero(f)\n>\n>\n> What happens to the non-HVX registers that are written (e.g., address for a post-increment load)?  I assume they should also be set to zero.\n\nNone of these instructions write to non-HVX registers.\n\n>>\n>> +    f.write(\"        return;\\n\")\n>> +    f.write(\"    }\\n\")\n>>\n>>  ##\n>>  ## Generate the TCG code to call the helper\n>> @@ -62,6 +70,9 @@ def gen_tcg_func(f, tag, regs, imms):\n>>          i = 1 if immlett.isupper() else 0\n>>          f.write(f\"    int {hex_common.imm_name(immlett)} = insn->immed[{i}];\\n\")\n>>\n>> +    if \"A_HVX_IEEE_FP\" in hex_common.attribdict[tag]:\n>> +        gen_disabled_ieee_insn(f, tag, regs)\n>> +\n>>      if hex_common.is_idef_parser_enabled(tag):\n>>          declared = []\n>>          ## Handle registers\n>> diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py\n>> index c0e9f26aeb..32a61505ce 100755\n>> --- a/target/hexagon/hex_common.py\n>> +++ b/target/hexagon/hex_common.py\n>> @@ -723,6 +723,11 @@ def decl_tcg(self, f, tag, regno):\n>>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env, {self.hvx_off()});\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                    sizeof(MMVector), sizeof(MMVector), 0);\n>> +            \"\"\"))\n>>      def gen_write(self, f, tag):\n>>          pass\n>>      def helper_hvx_desc(self, f):\n>> @@ -789,6 +794,11 @@ def decl_tcg(self, f, tag, regno):\n>>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env, {self.hvx_off()});\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                    sizeof(MMVector), sizeof(MMVector), 0);\n>> +            \"\"\"))\n>>      def gen_write(self, f, tag):\n>>          pass\n>>      def helper_hvx_desc(self, f):\n>> @@ -821,6 +831,11 @@ def decl_tcg(self, f, tag, regno):\n>>                                   vreg_src_off(ctx, {self.reg_num}),\n>>                                   sizeof(MMVector), sizeof(MMVector));\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +                tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                    sizeof(MMVector), sizeof(MMVector), 0);\n>> +            \"\"\"))\n>>      def gen_write(self, f, tag):\n>>          f.write(code_fmt(f\"\"\"\\\n>>              gen_vreg_write(ctx, {self.hvx_off()}, {self.reg_num},\n>> @@ -854,6 +869,11 @@ def decl_tcg(self, f, tag, regno):\n>>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env, {self.hvx_off()});\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                sizeof(MMVectorPair), sizeof(MMVectorPair), 0);\n>> +        \"\"\"))\n>>      def gen_write(self, f, tag):\n>>          pass\n>>      def helper_hvx_desc(self, f):\n>> @@ -913,6 +933,11 @@ def decl_tcg(self, f, tag, regno):\n>>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env, {self.hvx_off()});\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                sizeof(MMVectorPair), sizeof(MMVectorPair), 0);\n>> +        \"\"\"))\n>>      def gen_write(self, f, tag):\n>>          f.write(code_fmt(f\"\"\"\\\n>>              gen_vreg_write_pair(ctx, {self.hvx_off()}, {self.reg_num},\n>> @@ -946,6 +971,11 @@ def decl_tcg(self, f, tag, regno):\n>>                  TCGv_ptr {self.reg_tcg()} = tcg_temp_new_ptr();\n>>                  tcg_gen_addi_ptr({self.reg_tcg()}, tcg_env, {self.hvx_off()});\n>>              \"\"\"))\n>> +    def gen_zero(self, f):\n>> +        f.write(code_fmt(f\"\"\"\\\n>> +            tcg_gen_gvec_dup_imm(MO_64, {self.hvx_off()},\n>> +                sizeof(MMQReg), sizeof(MMQReg), 0);\n>> +        \"\"\"))\n>\n>\n> Do any of these instructions write QRegs?  If not, this isn't needed.\n\nThey do not. Let me remove this.","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=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=LNpCHgzO;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=Zz0xs42v;\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 4fshlk3JN1z1yGS\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 02:17:20 +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 1wBEXH-0005lL-Qs; Fri, 10 Apr 2026 12:16:47 -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 <matheus.bernardino@oss.qualcomm.com>)\n id 1wBEXF-0005lC-2U\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:16:45 -0400","from mx0a-0031df01.pphosted.com ([205.220.168.131])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <matheus.bernardino@oss.qualcomm.com>)\n id 1wBEXC-00021K-P9\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 12:16:44 -0400","from pps.filterd (m0279866.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63AApMZ83743154\n for <qemu-devel@nongnu.org>; Fri, 10 Apr 2026 16:16:39 GMT","from mail-oa1-f69.google.com (mail-oa1-f69.google.com\n [209.85.160.69])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4deytngybp-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <qemu-devel@nongnu.org>; Fri, 10 Apr 2026 16:16:39 +0000 (GMT)","by mail-oa1-f69.google.com with SMTP id\n 586e51a60fabf-409037c3f0bso1722320fac.1\n for <qemu-devel@nongnu.org>; Fri, 10 Apr 2026 09:16:39 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n U8apjm1hj5fZyb7cTMdh/d0UzrQUUImdMvS32G49hjY=; b=LNpCHgzOaegDMwnZ\n zeeoEjiykTYM97HyWUqvpUjSwq0zc9WssBd0ogJREWCchHI79rLh+iBrXQ0QrX4W\n OVPT67WCipcq039FotnlhYccJay5vVdouprb+gUCxyuqe0mW4acZaN7Wkkn3QWM5\n Liusd9fWyCAhy7VhKnnb1uiXs8yZqqojcPJsHSBSKygtUlravoKc60gTGtteLJeB\n sq5vDjCqwUeG656zQpUTWuIkWHCqBETbOkyV28gu1u/9dRj9cYn5Uiwn/P/5qBcX\n I9PvGnwotbFhe3wzo8162IHrD2nnjBp/wR1e3rORHgT7GLMF3tvqKi+xZQytSG2H\n 41Bq8w==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775837799; x=1776442599; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=U8apjm1hj5fZyb7cTMdh/d0UzrQUUImdMvS32G49hjY=;\n b=Zz0xs42vIXhXExd1jD7xtv0VMVFk3NpJZFgKIkawZGOW6Rv5ATYt4KBppHASHBcJ09\n UJ9BvcHbTqwHoYXdw2h6JUON9mSYuG1hgJacKjPovSUpr4NdeNCQGMj7dzl3FRbUBhhV\n wpYjpwexYYAbKSr4tthrmLN8j3V5aOdKHtfuUoMZiBKtKoPbaJB76o1+ZeWLBZyjoDl8\n 6rxGeQGMO3jZVU9wEmoMQiA2VU8Rh0eWSXIQXfXfAyq9EgDVO+n9nxa+cAwG+tPKamSE\n dXeS5S47JezTbwydl65jEAJONb5FVYeYZVObp0OYpKh5AA/ZpQOtzgqXShmnECRQGp9C\n rTvw=="],"ARC-Seal":"i=1; a=rsa-sha256; t=1775837799; cv=none;\n d=google.com; s=arc-20240605;\n b=dt6arLklq4y9muoPBiQnfJrDQWEft/6NA0A80ZXwKfcUysKhbCPQmsYGV3RdlZWEB6\n UcGDkE0ViZju3W2wfQXVLlD1nf67CIO/BTH/p74hEr8PBByp3R4OSa86cB8zdcLnhxpg\n X9HIljGEQqqG7Lw+6Dksbw/aPR9plAvcQd08I3MRfMhvnVe9rxt3n0H8HWMlaL6hHyCR\n rPd+TXqDES3phdBJmUaj55rydf8cB8JRvgX1UYhR6MGyt9i0rLTVLuQqkArTFCOX+zaG\n qz2L+pHDVeYLtNm+Wq5fXMKTcENgDuWyug0VG543lAJu4x//JHHu6rp0eeKdPgeaEWhp\n d8BA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=U8apjm1hj5fZyb7cTMdh/d0UzrQUUImdMvS32G49hjY=;\n fh=GnmuetGqaJ1war6gxxmTGQNqKfwOxvG4yU92WoV01Vo=;\n b=TRuzEvoXa61M6bxHj6TyvGtT7pKWTvVhhTcUubfNLPCGpCtVjp2I67Ivjg66+tX8l7\n vwuiUjkkY6TGyv/LrboJw71xYV20zGvfend3OGFcPRYKDbgpDFLCpZq16YTwkL9IBqY6\n ntDrlV5UlEZUlJQddmLATwaNkcVwv0Jtzqd/r9PbLesBG/LAQByj61qxrATcXuURJii3\n C8XxJycWaECkJ4YTEdX9q0lEK640RUSLzAPgicu03obloMvDUmscLcP5iok/bOEFSNIR\n HPCYy5AUkakdSLr6xuMqz3lK2QQIgdy9x78smSZsF+KKSiKoJnHK+s1ukvuL57JtgMKE\n gdSg==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775837799; x=1776442599;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=U8apjm1hj5fZyb7cTMdh/d0UzrQUUImdMvS32G49hjY=;\n b=eF/UI3DwUMtN/WJ8Xq9FZolzz6x+PUG08lFBV06QjiOHwZ78xDKwSLiCIl3xVZ/W8W\n Dap0+pHbac98LwoU9d53vDtWNBwJo/0Tnlzmp37wlSrF9ZFg85vYQb1m4yqtBO53nfxH\n PpsHFNOhyStlv4S0Oc9wh7HndthxfsDEfVVStzjifU6pLWrzOY6YaRfrLUKsfeqtudsk\n DFeSL93WX6f5QrdouQF2vRpNDWxtE5QcHnu+xq+8IeYXS1zh/ruPil0X4x/UAe3Md4GT\n pbSbFBSqbMLVI/ch4hnjJ2MmyGxkx2pREsLQFxezNShITVvZvfdz4lI6ooSH8rOe+T/C\n tr4A==","X-Gm-Message-State":"AOJu0Yy0bemLSmlB1LcgmJh5IY+mwpm/8otGzrJfkwoywoDBpFxiJbRN\n NYW5HwzA/v0Onm3vlz/bxYVpzvg80/WuqbsAnaClJaHg0mHUFBY5Gm1ElC8tJMi7QwvmWphULfp\n aUpUpw8bl7t/BlgmGTsac8e2dbVjNYUbVA42y5DsRiqwAK74fFXDnErZwxTdltBM6SSTAkuSS8H\n UUvJ/OxAf7JbOjFVCQ3xaQ+6Dd4JlU9VeS","X-Gm-Gg":"AeBDiev9DO9wZUFLZ76tOAQ+LAyZV/P581H/Yw8CGWAjBOh+yimt5NUceBAath8V86+\n +jX64GfkQso7/F+1GQU19wT8eipCgGiSKQpkOc+54kAGFVZ75CtSpq9FHVKb2hRLw504tft1u8p\n Rfz4xcA1uY34P6FQCzgojP1tva7la2eeMeqClIvN00PiWgeREjWaA01THilvLTUElPaIMB9hrBi\n 4Rp7Zdf","X-Received":["by 2002:a05:6870:75c5:b0:41c:4423:5f0 with SMTP id\n 586e51a60fabf-423e0e8bd76mr2575026fac.14.1775837798559;\n Fri, 10 Apr 2026 09:16:38 -0700 (PDT)","by 2002:a05:6870:75c5:b0:41c:4423:5f0 with SMTP id\n 586e51a60fabf-423e0e8bd76mr2574966fac.14.1775837797911; Fri, 10 Apr 2026\n 09:16:37 -0700 (PDT)"],"MIME-Version":"1.0","References":"<cover.1775665981.git.matheus.bernardino@oss.qualcomm.com>\n <bd05d9aa88d98453e25e5f3189f1a5d7bdbbc9af.1775665981.git.matheus.bernardino@oss.qualcomm.com>\n <CAATN3NqVHaLtTYc46YKvHo6V8U4LZc9b7w6COnLNR4_3wmePdA@mail.gmail.com>","In-Reply-To":"\n <CAATN3NqVHaLtTYc46YKvHo6V8U4LZc9b7w6COnLNR4_3wmePdA@mail.gmail.com>","From":"Matheus Bernardino <matheus.bernardino@oss.qualcomm.com>","Date":"Fri, 10 Apr 2026 13:16:25 -0300","X-Gm-Features":"AQROBzCCZE6VUgEULIyzlsdv08AciMW3SJTym1S3KSndD7lUUnNJ8t32OselVtk","Message-ID":"\n <CABrGZ+Ec6Ayf_FS988yLrZQj9znWqg8i=Pz7NLZaBrq-22Gh7g@mail.gmail.com>","Subject":"Re: [PATCH v3 03/16] target/hexagon/cpu: add HVX IEEE FP extension","To":"Taylor Simpson <ltaylorsimpson@gmail.com>","Cc":"qemu-devel@nongnu.org, richard.henderson@linaro.org, ale@rev.ng,\n anjo@rev.ng, brian.cain@oss.qualcomm.com,\n marco.liebel@oss.qualcomm.com, philmd@linaro.org,\n quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-Proofpoint-ORIG-GUID":"BaBAmFOLjjoClTs_cCWejlUD11YCvbKv","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDEwMDE1MiBTYWx0ZWRfXxOa6aH2KhrOt\n ByifmAikLRuq1E0QCojyxzSqTaFsKe9feM3ap8LWSAGHBOvaweo2c6MhLH6qWuZSfsm53zjIHQP\n JogBVPa3zVhhlCb4t/OnXvb60elQQrB6WX8F+GD4RY8E5k6ofZqTHsNiExxjFOzrLgjefHzKpii\n ItQLo/siP569JUyX9D+CSMBenNCwhjo4Sbh6YOI0W5LIezfQP+W/EOw6tgsgSZgbkD8snbo+OdZ\n +8NiBa4ZpdE7SkqvIUw2NqsBM3tZ8kkvAC/IIVsKFk5ueuPEuafqwQ6IlJYLfwjSFEFZ0u/eZva\n 3AW/EL7867OdKyunEEa6zUVk9OC2l3VOD3YZHnmnlidIRryzryyw/MYb2iMzLpLqbpJB/rZ7a4p\n d1AJ6gxmfyrezghRcjErJUXXnC5JGXJjkdsCvopueFgzMnxthqlvKPqvlUUZJ4nQX9of8aIfQi4\n nlVWYkrU2AY/XBWG1Rg==","X-Proofpoint-GUID":"BaBAmFOLjjoClTs_cCWejlUD11YCvbKv","X-Authority-Analysis":"v=2.4 cv=crGrVV4i c=1 sm=1 tr=0 ts=69d92267 cx=c_pps\n a=zPxD6eHSjdtQ/OcAcrOFGw==:117 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10\n a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n a=YMgV9FUhrdKAYTUUvYB2:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8\n a=TiDXa0I_IdYBfGhkClIA:9 a=QEXdDO2ut3YA:10 a=y8BKWJGFn5sdPF1Y92-H:22","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-10_04,2026-04-09_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n priorityscore=1501 impostorscore=0 bulkscore=0 clxscore=1015 suspectscore=0\n spamscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604100152","Received-SPF":"pass client-ip=205.220.168.131;\n envelope-from=matheus.bernardino@oss.qualcomm.com;\n helo=mx0a-0031df01.pphosted.com","X-Spam_score_int":"-27","X-Spam_score":"-2.8","X-Spam_bar":"--","X-Spam_report":"(-2.8 / 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,\n RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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"}}]