[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <C2D7FE5348E1B147BCA15975FBA23075014641A413@US01WEMBX2.internal.synopsys.com>
Date: Fri, 30 Nov 2018 19:00:05 +0000
From: Vineet Gupta <vineet.gupta1@...opsys.com>
To: David Laight <David.Laight@...LAB.COM>,
'Arnd Bergmann' <arnd@...db.de>,
"jose.abreu@...opsys.com" <jose.abreu@...opsys.com>
CC: "open list:SYNOPSYS ARC ARCHITECTURE"
<linux-snps-arc@...ts.infradead.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Vineet Gupta <vineet.gupta1@...opsys.com>,
"alexey.brodkin@...opsys.com" <alexey.brodkin@...opsys.com>,
Joao Pinto <joao.pinto@...opsys.com>,
Vitor Soares <vitor.soares@...opsys.com>
Subject: Re: [PATCH v2] ARC: io.h: Implement reads{x}()/writes{x}()
On 11/30/18 5:57 AM, David Laight wrote:
> There're even identical opcodes...
> The barrier() (etc) in the asm output probably stopped the optimisation.
>
> It also seems to have used a different type of loop to the
> other example, probably less efficient.
> (Not that I'm an expert on ARC opcodes.)
The difference is due to ISA and ensuing ARC gcc backends. ARCompact based cores
don't support unaligned access and the loop there was ZOL (Zero delay loop). In
ARCv2 based cores, the gcc backend has been tweaked to generate fewer ZOLs hence
you see the more canonical tst and branch style loop.
-Vineet
Powered by blists - more mailing lists