From patchwork Mon Jul 22 06:41:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haochen Jiang X-Patchwork-Id: 1963078 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=E4bvJ5CQ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WS9fp6t4hz1yXp for ; Mon, 22 Jul 2024 16:41:36 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4E025385C6CC for ; Mon, 22 Jul 2024 06:41:34 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by sourceware.org (Postfix) with ESMTPS id CF2333858C53 for ; Mon, 22 Jul 2024 06:41:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CF2333858C53 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CF2333858C53 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.16 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721630475; cv=none; b=dU2duA3PuFljGc9i5Y7xK8SQH4yKyZztYEZMeik/nryKgWF/o9bZ+iepac3qY0AoSnZnqGFECTl+xxcx+seWM0LD3j4zx8LJBwf+/C1TUXJJBpWeiaHbSG4aONZlVHu0GZWtb7blkCEvOEmM+FetWvcx2FBh2C5626qgoaEKuWA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721630475; c=relaxed/simple; bh=VhTT+elfh43bFqE41yAyNhaf6uYdhtXkPtXEdpX1ObA=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=N9JcZbJwWjcy29iN2u8fwUKbFrwv+WyniSIBZWCuTEmI5gkE2SjRr99TH3uNvDl8UgFnMurG1euBMLDFOWF7MpxdWpyDpIXIEOtB/I+eGp+DF42UHeiCWhqO4n65YU/xYbVdcU71GgqMzNtL5PfP9iHErLELSwiY+Sn/O3iigX0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1721630474; x=1753166474; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=VhTT+elfh43bFqE41yAyNhaf6uYdhtXkPtXEdpX1ObA=; b=E4bvJ5CQqUkQLKi9Z+QyM6ph8VRJywzcD+jA3uYhPJd+mG15MPWly1+1 t9iz7pU2eHdicJ27ey+FbdYYaHOLmVxaXjTfP0VfNq44ygODVNLJ366E6 2ULHLn5eE2jixSAzreLuD+rxxRIi3faqesu95p5vWV9oZADI9muh2K7sX ihQDCDD9/ONEy6dxGxjrPV3G/eHR6+xeCR+QRYhUZ2tOkucdY1apdJNdv T5syvTjimWpBtM/NUa6dDIjFYMW48XyPB6Gwv/jyhnDgkQincGh0Xm2df Jqox1KG/j76h5POIv/A97TMr2gkBBGAT0vVl8M/dUpYFowP6jEuS7EVGr Q==; X-CSE-ConnectionGUID: cbQfKXP7TQqxBsKlbP+7NA== X-CSE-MsgGUID: VaSXN+fDRW2Duv8TJYGAWg== X-IronPort-AV: E=McAfee;i="6700,10204,11140"; a="19309656" X-IronPort-AV: E=Sophos;i="6.09,227,1716274800"; d="scan'208";a="19309656" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2024 23:41:13 -0700 X-CSE-ConnectionGUID: VvX3rDicTL2ww4tQHS2SXg== X-CSE-MsgGUID: sFW66rkKROCiTReBj6ax6Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,227,1716274800"; d="scan'208";a="52500809" Received: from shvmail03.sh.intel.com ([10.239.245.20]) by orviesa008.jf.intel.com with ESMTP; 21 Jul 2024 23:41:11 -0700 Received: from shliclel4217.sh.intel.com (shliclel4217.sh.intel.com [10.239.240.127]) by shvmail03.sh.intel.com (Postfix) with ESMTP id 072E210077CC; Mon, 22 Jul 2024 14:41:10 +0800 (CST) From: Haochen Jiang To: gcc-patches@gcc.gnu.org Cc: hongtao.liu@intel.com, ubizjak@gmail.com Subject: [PATCH] i386: Change prefetchi output template Date: Mon, 22 Jul 2024 14:41:09 +0800 Message-Id: <20240722064109.3849227-1-haochen.jiang@intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org Hi all, For prefetchi instructions, RIP-relative address is explicitly mentioned for operand and assembler obeys that rule strictly. This makes instruction like: prefetchit0 bar got illegal for assembler, which should be a broad usage for prefetchi. Explicitly add (%rip) after function label to make it legal in assembler so that it could pass to linker to get the real address. Ok for trunk and backport to GCC14 and GCC13 since prefetchi instructions are introduced in GCC13? Thx, Haochen gcc/ChangeLog: * config/i386/i386.md (prefetchi): Add explicit (%rip) after function label. gcc/testsuite/ChangeLog: * gcc.target/i386/prefetchi-1.c: Check (%rip). --- gcc/config/i386/i386.md | 2 +- gcc/testsuite/gcc.target/i386/prefetchi-1.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 90d3aa450f0..3ec51bad6fe 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -28004,7 +28004,7 @@ "TARGET_PREFETCHI && TARGET_64BIT" { static const char * const patterns[2] = { - "prefetchit1\t%0", "prefetchit0\t%0" + "prefetchit1\t{%p0(%%rip)|%p0[rip]}", "prefetchit0\t{%p0(%%rip)|%p0[rip]}" }; int locality = INTVAL (operands[1]); diff --git a/gcc/testsuite/gcc.target/i386/prefetchi-1.c b/gcc/testsuite/gcc.target/i386/prefetchi-1.c index 80f25e70e8e..03dfdc55e86 100644 --- a/gcc/testsuite/gcc.target/i386/prefetchi-1.c +++ b/gcc/testsuite/gcc.target/i386/prefetchi-1.c @@ -1,7 +1,7 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-mprefetchi -O2" } */ -/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+" 2 } } */ -/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+" 2 } } */ +/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+bar\\(%rip\\)" 2 } } */ +/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+bar\\(%rip\\)" 2 } } */ #include