On Mon, 14 Sep 2020 at 19:24, Horia Geantă <horia.geanta@xxxxxxx> wrote: > > On 9/9/2020 1:10 AM, Herbert Xu wrote: > > On Tue, Sep 08, 2020 at 01:35:04PM +0300, Horia Geantă wrote: > >> > >>> Just go with the get_unaligned unconditionally. > >> > >> Won't this lead to sub-optimal code for ARMv7 > >> in case the IV is aligned? > > > > If this should be optimised in ARMv7 then that should be done > > in get_unaligned itself and not open-coded. > > > I am not sure what's wrong with avoiding using the unaligned accessors > in case data is aligned. > > Documentation/core-api/unaligned-memory-access.rst clearly states: > These macros work for memory accesses of any length (not just 32 bits as > in the examples above). Be aware that when compared to standard access of > aligned memory, using these macros to access unaligned memory can be costly in > terms of performance. > > So IMO it makes sense to use get_unaligned() only when needed. > There are several cases of users doing this, e.g. siphash. > For ARMv7 code, using the unaligned accessors unconditionally is fine, and it will not affect performance. In general, when CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is defined, you can use the unaligned accessors. If it is not, it helps to have different code paths. This is a bit murky, and through the years, the interpretation of unaligned-memory-access.rst has shifted a bit, but in this case, it makes no sense to make the distinction.