From patchwork Fri May 10 14:48:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 1098090 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=uclibc-ng.org (client-ip=2a00:1828:2000:679::23; helo=helium.openadk.org; envelope-from=devel-bounces@uclibc-ng.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VRC32qdB"; dkim-atps=neutral Received: from helium.openadk.org (helium.openadk.org [IPv6:2a00:1828:2000:679::23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 450tPj3MZkz9s7h for ; Sat, 11 May 2019 00:48:39 +1000 (AEST) Received: from helium.openadk.org (localhost [IPv6:::1]) by helium.openadk.org (Postfix) with ESMTP id 06E5E102B3; Fri, 10 May 2019 16:48:32 +0200 (CEST) X-Original-To: devel@uclibc-ng.org Delivered-To: devel@helium.openadk.org Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by helium.openadk.org (Postfix) with ESMTPS id 994561015A; Fri, 10 May 2019 16:48:30 +0200 (CEST) Received: by mail-lf1-f67.google.com with SMTP id n22so4320024lfe.12; Fri, 10 May 2019 07:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Sc/98YVrZlEbCCc7IxPerU+x2RTuZLgQB0OY0LLievc=; b=VRC32qdBtW5wmolnPjJ5f9wgO2xtJ4Frox4sMi06CleyvFTI3HJEdLEVZcZGWnIPQk jkAc5sIl5mREHf8pCJJmSi8sdlRFr/GVfT0zOifzDv3GatErM4U9kJuOp3L2wkvjDaQ0 5NRjS53qOAheTe/AGzEwdpR8UIj9CQMJcf87XTAjuELdi69pqEFa2zuWGBhiytNrMvFI zhQ21nJpsKSFqgPAj41rDlZpsYUmMVrUvWW/9OhIMwGrv0DvSya4YbapPa1qc7Gg9jR3 uuCLQIBCN+9R8rx7p8x+s92gqIOyeXxyWlEY7+VFxM6Y61fIh+f6tj1PRlyeZtjHeDE3 4XzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Sc/98YVrZlEbCCc7IxPerU+x2RTuZLgQB0OY0LLievc=; b=a1rqHgAyegCUyKH7JYQzsAdDBaOcO93HgstLrZoh8aV/mMk0kofnCL6Z9ImUj2qqV8 9HADomcfNbsvGEluBTwXKzCWRZKMFlQYVXwAhFRk+bQhJgtBnw00McwBWyXvodv3yYY8 Hfgo6uU9jvcLprRMUtxcIDyztjzGOwb0dJDIEzMg8aKvuudH5/UWlWL8imz822cUETqQ dygxeFBSan6/nW3oerNIDv3GzQV1INukYCb19SLg5V0fawWUxAmZ7G3071kyF26fGfzW neOlVsL+ltJvvCq86lJ1LHVZ1oO14jpb83T4ugYa3QAsowmyOQM/2zNuDAyuXFXvvRWX 62jg== X-Gm-Message-State: APjAAAXzSsiLCDssCnUSpnVu81Ygx7IDcGL73LKN6qvu2UJpT57K9fJl 2XbvWrE+7EeJCmvdY5AY9RsVebp+G4o= X-Google-Smtp-Source: APXvYqwncRV6MhgMt4ngFzl3I+XJGWXHyvBcL2X6NQGzCLRBwCDqFUnmct042/GNnhZoqD/zZRQ+mQ== X-Received: by 2002:a19:655a:: with SMTP id c26mr6515051lfj.97.1557499711106; Fri, 10 May 2019 07:48:31 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net. (jcmvbkbc-1-pt.tunnel.tserv24.sto1.ipv6.he.net. [2001:470:27:1fa::2]) by smtp.gmail.com with ESMTPSA id v11sm1549447lfb.68.2019.05.10.07.48.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 May 2019 07:48:30 -0700 (PDT) From: Max Filippov To: devel@uclibc-ng.org Date: Fri, 10 May 2019 07:48:14 -0700 Message-Id: <20190510144814.19121-1-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.11.0 Cc: linux-xtensa@linux-xtensa.org, Chris Zankel Subject: [uclibc-ng-devel] [PATCH] xtensa: don't use l32r opcode explicitly X-BeenThere: devel@uclibc-ng.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: uClibc-ng Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: devel-bounces@uclibc-ng.org Sender: "devel" xtensa assembler is capable of representing register loads with either movi + addmi, l32r or const16, depending on the core configuration. Don't use '.literal' and 'l32r' directly in the code, use 'movi' and let the assembler relax them. Signed-off-by: Max Filippov --- libc/string/xtensa/strcmp.S | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/libc/string/xtensa/strcmp.S b/libc/string/xtensa/strcmp.S index a16da5da2e92..a106bee675f5 100644 --- a/libc/string/xtensa/strcmp.S +++ b/libc/string/xtensa/strcmp.S @@ -37,11 +37,6 @@ .text .align 4 .literal_position - .literal .Lmask0, MASK0 - .literal .Lmask1, MASK1 - .literal .Lmask2, MASK2 - .literal .Lmask3, MASK3 - .literal .Lmask4, MASK4 ENTRY (strcmp) /* a2 = s1, a3 = s2 */ @@ -130,10 +125,9 @@ ENTRY (strcmp) .align 4 #if XCHAL_HAVE_LOOPS .Laligned: - .begin no-transform movi a11, 0 - l32r a4, .Lmask0 /* mask for byte 0 */ - l32r a7, .Lmask4 + movi a4, MASK0 /* mask for byte 0 */ + movi a7, MASK4 loop a11, .Laligned_done /* Loop forever. */ /* First unrolled loop body. */ @@ -184,10 +178,10 @@ ENTRY (strcmp) If not, loop over the rest of string using normal algorithm. */ bnone a8, a4, .Leq /* if byte 0 is zero */ - l32r a5, .Lmask1 /* mask for byte 1 */ - l32r a6, .Lmask2 /* mask for byte 2 */ + movi a5, MASK1 /* mask for byte 1 */ + movi a6, MASK2 /* mask for byte 2 */ bnone a8, a5, .Leq /* if byte 1 is zero */ - l32r a7, .Lmask3 /* mask for byte 3 */ + movi a7, MASK3 /* mask for byte 3 */ bnone a8, a6, .Leq /* if byte 2 is zero */ bnone a8, a7, .Leq /* if byte 3 is zero */ addi.n a2, a2, 4 /* advance s1 pointer */ @@ -196,7 +190,6 @@ ENTRY (strcmp) /* align (1 mod 4) */ loop a11, .Leq /* loop forever */ - .end no-transform l32i a8, a2, 0 /* get word from s1 */ l32i a9, a3, 0 /* get word from s2 */