> From: David Marchand [mailto:david.march...@redhat.com]
> Sent: Tuesday, 9 July 2024 13.43
> 
> Hello,
> 
> On Tue, Jul 9, 2024 at 11:24 AM David Marchand
> <david.march...@redhat.com> wrote:
> >
> > On Mon, Jun 10, 2024 at 3:40 PM Konstantin Ananyev
> > <konstantin.anan...@huawei.com> wrote:
> > > > When the rte_memcpy() size is 16, the same 16 bytes are copied
> twice.
> > > > In the case where the size is known to be 16 at build time, omit
> the
> > > > duplicate copy.
> > > >
> > > > Reduced the amount of effectively copy-pasted code by using #ifdef
> > > > inside functions instead of outside functions.
> > > >
> > > > Suggested-by: Stephen Hemminger <step...@networkplumber.org>
> > > > Signed-off-by: Morten Brørup <m...@smartsharesystems.com>
> > > > Acked-by: Bruce Richardson <bruce.richard...@intel.com>
> > > Acked-by: Konstantin Ananyev <konstantin.anan...@huawei.com>
> >
> > Applied, thanks for the cleanup.
> 
> This breaks OVS compilation (clang and gcc).
> 
> make[1]: *** [Makefile:4722: lib/ofp-packet.lo] Error 1
> make[1]: *** Waiting for unfinished jobs....
> In file included from lib/ofp-print.c:34:
> In file included from ./lib/dp-packet.h:25:
> In file included from /home/runner/work/ovs/ovs/dpdk-
> dir/include/rte_mbuf.h:38:
> In file included from
> /home/runner/work/ovs/ovs/dpdk-dir/include/rte_mempool.h:50:
> /home/runner/work/ovs/ovs/dpdk-dir/include/rte_memcpy.h:113:25: error:
> cast from 'const uint8_t *' (aka 'const unsigned char *') to 'const
> __m128i *' increases required alignment from 1 to 16
> [-Werror,-Wcast-align]
> xmm0 = _mm_loadu_si128((const __m128i *)src);
> ^~~~~~~~~~~~~~~~~~~~
> /home/runner/work/ovs/ovs/dpdk-dir/include/rte_memcpy.h:114:19: error:
> cast from 'uint8_t *' (aka 'unsigned char *') to '__m128i *' increases
> required alignment from 1 to 16 [-Werror,-Wcast-align]
> _mm_storeu_si128((__m128i *)dst, xmm0);
> ^~~~~~~~~~~~~~
> 2 errors generated.
> make[1]: *** [Makefile:4722: lib/ofp-print.lo] Error 1
> make[1]: Leaving directory '/home/runner/work/ovs/ovs'
> make: *** [Makefile:3102: all] Error 2
> 
> I dropped this patch from main for now.
> Can you have a look please?

It seems the new code casts directly to the vector register size, while the 
original code first cast to void*, and then to the register size.

I'll try to fix it and post a new version.

PS: The CI should catch this stuff.

Reply via email to