Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3763490imu; Fri, 30 Nov 2018 05:45:42 -0800 (PST) X-Google-Smtp-Source: AFSGD/UqS3VW4LD2eu+ds71EHa+/wYN3UHekaAAuQ547qsAVy1cQ3HeWNmPmjYnnJZUCHC+j49nZ X-Received: by 2002:a17:902:ac8f:: with SMTP id h15mr5545993plr.245.1543585542489; Fri, 30 Nov 2018 05:45:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543585542; cv=none; d=google.com; s=arc-20160816; b=NGbwELJN3ZBwYyyjl4xRP6RWM7kQsuxyxgATGuFHsp+9IhdCy9B/cyJ0sLVKKpJAfu GTV4fhqU2NRGDWEjOT38S5QqNtaRdCk2Pb0HKTg5XphFUzfixVVsXw+0WA6IEkf+0w7P 6yayiockQ71QMc8IopInuD7WKuqdCR4dEWldihhadkHkozRhOslO780iPehpXZI4hjny dI6iVNjgUDgVdP4Jj94F8rOBnBSag8PUFx+ncachhOj7e/Bd6o6pDhAesQIRQ7nBFk3l QWlQ7GaeLqCDMLtBuIOL2hvrieCFy/FJy9/UmShEMvDMNuqe2HNS23A8+5Bb0BYqGoBj 3klg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=LvCNnwTCIErvOoJQOcvV750sKrkF6TtyT01sFAzs1Yk=; b=vfDHFjpMYE9e/iMee7wDpWtIJcZOm8TVPtQFNsVDoKpJC9Q6cs3AAUJ8OVAtAZ5TYs xZbvdVRCMnYyeNt5iwRymBoUXSLXZc2dEtG75SyO1bIXEhc/ir1SwqWT0jYpqLnhyK+N 6+5sMlWEqElaj32sPCh+F2tQU13ijA+8cdBgNQtms0zeYHJErHZ6xp4ch0X2z0/2X4Xl fLjLpPTJ+zUjB3U53rZvACoK0uvrvM2u3NV8VMgd7e2g0ossZOYOgm7PoEqy3jnmXrxa WPXXgf34DsFtmKzjIEY94jeVQs2d4vZHlNHbo7g+ijQ5jz0XoD1b1GQz99bjjvXXn6aZ DPrA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r17si4907302pgh.299.2018.11.30.05.45.27; Fri, 30 Nov 2018 05:45:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727214AbeLAAxx (ORCPT + 99 others); Fri, 30 Nov 2018 19:53:53 -0500 Received: from mail-qt1-f196.google.com ([209.85.160.196]:37089 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726070AbeLAAxw (ORCPT ); Fri, 30 Nov 2018 19:53:52 -0500 Received: by mail-qt1-f196.google.com with SMTP id z16so5917650qtq.4 for ; Fri, 30 Nov 2018 05:44:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LvCNnwTCIErvOoJQOcvV750sKrkF6TtyT01sFAzs1Yk=; b=We+Mm5bxUylNdP6humxigx9rfaz8wPksey6aftUYoTzsAmVo+zXWASrziZLYzhOa0U 52cJZO9j5G2o5v4Qe0LdBnuIvge368MprfzYoqvT0RoOFva7gPayHM8NfnsVI912PPJn vIgvfwKpcNjB9ZeJ1+swMbsdXYOUgCLBiqJbxtX3BBoYRtCD7A5rDxh75v4YAARiSMKh qxYmwdsLQbuuk2GkFllwfqdFnVrGvGjiFOeFZSdEfNaOx2EhTrEMyXnvCVWTjZTp7LOG 6FbYNstSmr5gIzO7ZZvt7JfTy7xB9oPQMGjK8BLsm+oyyAzQL4ABRzJnIsUjFfnDxJ5z 8jOA== X-Gm-Message-State: AA+aEWZ7RltHpgLeumbrMjlmQFkWMvd7GTsQMV+9Yyk+aOgN8saisNY2 DsKqJtC2W5Yg3kId5tRea2sY+BZGtKkj8kR7NsY= X-Received: by 2002:a0c:e202:: with SMTP id q2mr5415765qvl.180.1543585470428; Fri, 30 Nov 2018 05:44:30 -0800 (PST) MIME-Version: 1.0 References: <19fb2e394afcb073bbc109e432417fbbc03323f6.1543499759.git.joabreu@synopsys.com> <89122bd8-bca2-2ae1-0dd0-160abbebcace@synopsys.com> <57437493-31bb-eced-032c-1f54470b030e@synopsys.com> In-Reply-To: <57437493-31bb-eced-032c-1f54470b030e@synopsys.com> From: Arnd Bergmann Date: Fri, 30 Nov 2018 14:44:13 +0100 Message-ID: Subject: Re: [PATCH v2] ARC: io.h: Implement reads{x}()/writes{x}() To: jose.abreu@synopsys.com Cc: David Laight , "open list:SYNOPSYS ARC ARCHITECTURE" , Linux Kernel Mailing List , Vineet Gupta , alexey.brodkin@synopsys.com, Joao Pinto , Vitor Soares Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 30, 2018 at 9:57 AM Jose Abreu wrote: > On 29-11-2018 21:20, Arnd Bergmann wrote: > > On Thu, Nov 29, 2018 at 5:14 PM Jose Abreu wrote: > >> See how the if condition added in this version is checked in > >> and then it takes two different loops. > > This looks good to me. I wonder what the result is for CPUs > > that /do/ support unaligned accesses. Normally put_unaligned() > > should fall back to a simple store in that case, but I'm not > > sure it can fold the two stores back into one and skip the > > alignment check. Probably not worth overoptimizing for that > > case (the MMIO access latency should be much higher than > > anything you could gain here), but I'm still curious about > > how well our get/put_unaligned macros work. > > Here is disassembly for an ARC CPU that supports unaligned accesses: > > -->8--- > 00000d48 : > d48: breq_s r1,0,28 /* if (count) */ > d4a: tst r0,0x3 > d4e: bne_s 32 /* if (bptr % ((t) / 8)) */ > > d50: ld r2,[0xdeadbeef] /* first loop */ > d58: sub_s r1,r1,0x1 > d5a: tst_s r1,r1 > d5c: bne.d -12 > d60: st.ab r2,[r0,4] > > d64: dmb 0x1 /* common exit point */ > d68: j_s [blink] > d6a: nop_s > > d6c: ld r2,[0xdeadbeef] /* second loop */ > d74: sub_s r1,r1,0x1 > d76: tst_s r1,r1 > d78: bne.d -12 > d7c: st.ab r2,[r0,4] > > d80: b_s -28 /* jmp to 0xd64 */ > d82: nop_s > --->8--- > > Notice how first and second loop are exactly equal ... Ok, so it's halfway there: it managed to optimize the the unaligned case correctly, but it failed to notice that both sides are identical now. Arnd