From nobody Sun May 12 20:36:27 2024 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=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1688518555; cv=none; d=zohomail.com; s=zohoarc; b=B3cA/ZdbnqgLF+5mHsH9qHYd8UAMFBlEanXx3ibigdC/537tXVv6LqEdYExp8K/Ua4MfutBLAIqpuiEmrk+WsA5jBO8ge0cv/sLB9l14Pm3l0/POcUHxG72pgae7zzaf2x2GEakWfwiiTjr84cO4HTKT6HffYBWKMvjqVTI1rSQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1688518555; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=83/cdAL0KcxCkv+HhX4A2NJ1elMGjfOXi6WNzrVwof4=; b=TqtCyyqBxY4XOV8JsBmhbrTSldkMG7Abf5IpDPB8AkOXKpoJI2e6tHVr1QuXG1F1bsCAVjEeeioM7k2xR/hjJhgr7YUJNLryx/3PYZphoigbzOJdttAm8NJFOTuFa6wm/o+zyq5zYzgqzaYVX0S5NjBBCGRnaAEUg4zwyu0SUbA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1688518555512557.3647423287525; Tue, 4 Jul 2023 17:55:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qGqnN-0006V8-N5; Tue, 04 Jul 2023 20:55:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qGo4l-0004ce-0b for qemu-devel@nongnu.org; Tue, 04 Jul 2023 18:00:47 -0400 Received: from mail-il1-x132.google.com ([2607:f8b0:4864:20::132]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qGo4j-00069P-3T for qemu-devel@nongnu.org; Tue, 04 Jul 2023 18:00:46 -0400 Received: by mail-il1-x132.google.com with SMTP id e9e14a558f8ab-34570ed4cb8so24592175ab.1 for ; Tue, 04 Jul 2023 15:00:44 -0700 (PDT) Received: from DESKTOPUU50BPD ([2601:284:8201:e850:1a78:8057:4d63:c6a5]) by smtp.gmail.com with ESMTPSA id p4-20020a0566380e8400b0041ab9b6f5b0sm3182728jas.128.2023.07.04.15.00.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 04 Jul 2023 15:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688508043; x=1691100043; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=83/cdAL0KcxCkv+HhX4A2NJ1elMGjfOXi6WNzrVwof4=; b=S/tM4EiUdeOFAWiPEqX5RsD/Mg0XwY8KteWGtkZzEfNsYVguIbcK9kXS8dAFJbkiBN gnRHpuRf1GlzLbqe7Drzx8JAsOeOSuSn2CSGOzOVSPt0wC+XfjEAa2kWwnilErgnElsb P/yGSSWyHAXqlA6zTuqp12uNIIB+vTATaiRiGd8eJQJf5RyscC476WfTro2dObwBvGiM /XRJJ4lYy1zycH+cOvtkreHsL3xpaCncbW0TuKZy9WerKEwiZ+ACpf5XjUR0Pom1d2rR Srun7eun5OT8bnANucTFVEb40Hq3692CNdo/Ran46S+UGj5F86LA/fe39K+pEWDwhudE NuQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688508043; x=1691100043; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=83/cdAL0KcxCkv+HhX4A2NJ1elMGjfOXi6WNzrVwof4=; b=HpHSR6LWLU3JR8Tl0k57/o2eA26F5Ga6XTXiS8ZU7umgaO5vCoNKJs+hpRJKv+AYkM 4j1e7Sg1frKEAAN5PKRb++TmKGrckQAS/6D4lswJs0OM+tjeGI3zw0zVbfzGTrdWHgZJ ciw9DFB23TfeG1/XmgqqAi3lqq9jZKWATL2kuk2XqqBIcltN5nJ1Y5paH3R5deOqY10J hfxcwZgcSkVy0flcFdi84m9zRiXznMDW2hLWi3AwET86dFsvA+to2G2SI5orLx06gkAM DcGN5yY7/70bNB6cozoZn5nlWvvyYijhhfUxMXWETXpeVcz6eo1K9WfgRt5h3cUM7i4c 2png== X-Gm-Message-State: ABy/qLblOWhiHD9rJJKeCQ6R9T6AG032IMjPlPE+nlEiVlkAqwVGXjx7 SEjOnuvxF0CzWrQX9U1tvUBP1BMSOzI= X-Google-Smtp-Source: APBJJlFNKtFHRooWFkwsor9gIlH4zLVemmSQ3AmppZTkWK22YW44MWRRCQstjyY4pYeEA0aJnBFRPQ== X-Received: by 2002:a92:dccb:0:b0:341:c806:a8cd with SMTP id b11-20020a92dccb000000b00341c806a8cdmr13622595ilr.6.1688508043303; Tue, 04 Jul 2023 15:00:43 -0700 (PDT) From: To: "'Matheus Tavares Bernardino'" , Cc: , References: In-Reply-To: Subject: RE: [PATCH] Hexagon: move GETPC() calls to top level helpers Date: Tue, 4 Jul 2023 16:00:41 -0600 Message-ID: <000001d9aec2$fa0154e0$ee03fea0$@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQMLtznP2ydTcuVr1uYKeHdh6Igx+K1F9cGw Content-Language: en-us 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::132; envelope-from=ltaylorsimpson@gmail.com; helo=mail-il1-x132.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 04 Jul 2023 20:54:58 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @gmail.com) X-ZM-MESSAGEID: 1688518556512100001 Content-Type: text/plain; charset="utf-8" -----Original Message----- From: Matheus Tavares Bernardino =20 Sent: Monday, July 3, 2023 3:50 PM To: qemu-devel@nongnu.org Cc: bcain@quicinc.com; quic_mliebel@quicinc.com; ltaylorsimpson@gmail.com Subject: [PATCH] Hexagon: move GETPC() calls to top level helpers As docs/devel/loads-stores.rst states: ``GETPC()`` should be used with great care: calling it in other functions that are *not* the top level ``HELPER(foo)`` will cause unexpected behavior. Instead, the value of ``GETPC()`` should be read from the helper and passed if needed to the functions that the helper calls. Let's fix the GETPC() usage in Hexagon, making sure it's always called from top level helpers and passed down to the places where it's needed. There are two snippets where that is not currently the case: - probe_store(), which is only called from two helpers, so it's easy to move GETPC() up. - mem_load*() functions, which are also called directly from helpers, but through the MEM_LOAD*() set of macros. Note that this are only used when compiling with --disable-hexagon-idef-parser. In this case, we also take this opportunity to simplify the code, unifying the mem_load*() functions. Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/macros.h | 22 ++++++++++------- target/hexagon/op_helper.h | 11 ++------- target/hexagon/op_helper.c | 49 +++++++------------------------------- 3 files changed, 25 insertions(+), 57 deletions(-) diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h index 5451b061ee..efb8013912 100644 --- a/target/hexagon/macros.h +++ b/target/hexagon/macros.h + +#define MEM_LOADn(SIZE, VA) ({ \ + check_noshuf(env, pkt_has_store_s1, slot, VA, SIZE); \ + cpu_ldub_data_ra(env, VA, GETPC()); \ +}) Note that check_noshuf calls HELPER(probe_noshuf_load) and HELPER(commit_store). Both of those call GETPC() from within. So, you'll need to pull the contents into separate functions that take ra as an argument. Does this pass the test suite? You are only using the SIZE parameter in check_noshuf, but cpu_ldub_data_ra only reads a single byte. +#define MEM_LOAD1s(VA) ((int8_t)MEM_LOADn(1, VA)) #define=20 +MEM_LOAD1u(VA) ((uint8_t)MEM_LOADn(1, VA)) #define MEM_LOAD2s(VA)=20 +((int16_t)MEM_LOADn(2, VA)) #define MEM_LOAD2u(VA)=20 +((uint16_t)MEM_LOADn(2, VA)) #define MEM_LOAD4s(VA)=20 +((int32_t)MEM_LOADn(4, VA)) #define MEM_LOAD4u(VA)=20 +((uint32_t)MEM_LOADn(4, VA)) #define MEM_LOAD8s(VA)=20 +((int64_t)MEM_LOADn(8, VA)) #define MEM_LOAD8u(VA)=20 +((uint64_t)MEM_LOADn(8, VA)) A further cleanup would be to remove these altogether and modify the definition of fLOAD to use MEM_LOADn. =20 #define MEM_STORE1(VA, DATA, SLOT) log_store32(env, VA, DATA, 1, SLOT) #define MEM_STORE2(VA, DATA, SLOT) log_store32(env, VA, DATA, 2, SLOT) diff --git a/target/hexagon/op_helper.h b/target/hexagon/op_helper.h index 8f3764d15e..845c3d197e 100644 --- a/target/hexagon/op_helper.h +++ b/target/hexagon/op_helper.h @@ -19,15 +19,8 @@ #define HEXAGON_OP_HELPER_H =20 +void check_noshuf(CPUHexagonState *env, bool pkt_has_store_s1, + uint32_t slot, target_ulong vaddr, int size); Does this really need to be non-static? Thanks, Taylor