mbox series

[v3,0/5] lpm lookup with sve support

Message ID 20210112025709.1121523-1-ruifeng.wang@arm.com (mailing list archive)
Headers show
Series lpm lookup with sve support | expand

Message

Ruifeng Wang Jan. 12, 2021, 2:57 a.m. UTC
Added lpm4 lookupx4 implementation by using Arm SVE extension.
The SVE is Scalable Vector Extension which is exposed to the
user with a vector length agnostic interface.
Refer to [1] for more information about SVE.

Configuration was added for Neoverse N2 CPU which has SVE support.

Some bugs were fixed so compiling with sve enabled can pass.

[1] https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-instruction-emulator/resources/tutorials/sve

---
v2:
Fixed tbl8 group index calculation. (Vladimir)
Added N2 config.
Fixed compiling when sve was enabled.

Ruifeng Wang (5):
  lpm: add sve support for lookup on Arm platform
  net/hns3: fix build with sve enabled
  net/octeontx: fix build with sve enabled
  common/octeontx2: fix build with sve enabled
  config: add Arm Neoverse N2

 config/arm/arm64_n2_linux_gcc            | 17 +++++
 config/arm/meson.build                   | 11 +++-
 drivers/common/octeontx2/otx2_io_arm64.h | 15 +++--
 drivers/net/hns3/hns3_rxtx.c             |  4 +-
 drivers/net/hns3/meson.build             |  1 -
 drivers/net/octeontx/base/octeontx_io.h  | 10 ++-
 lib/librte_eal/arm/include/rte_vect.h    |  3 +
 lib/librte_lpm/meson.build               |  2 +-
 lib/librte_lpm/rte_lpm.h                 |  4 ++
 lib/librte_lpm/rte_lpm_sve.h             | 83 ++++++++++++++++++++++++
 10 files changed, 139 insertions(+), 11 deletions(-)
 create mode 100644 config/arm/arm64_n2_linux_gcc
 create mode 100644 lib/librte_lpm/rte_lpm_sve.h

Comments

David Marchand Jan. 14, 2021, 3:18 p.m. UTC | #1
Ruifeng, Honnappa,

On Tue, Jan 12, 2021 at 3:57 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote:
>
> Added lpm4 lookupx4 implementation by using Arm SVE extension.
> The SVE is Scalable Vector Extension which is exposed to the
> user with a vector length agnostic interface.
> Refer to [1] for more information about SVE.
>
> Configuration was added for Neoverse N2 CPU which has SVE support.
>
> Some bugs were fixed so compiling with sve enabled can pass.
>
> [1] https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-instruction-emulator/resources/tutorials/sve

Can you point at a toolchain that supports SVE without having to
register to some commercial spamming system? :-)
The only aarch64-linux-gnu- toolchain I found on the ARM website is a
8.x gcc that does not seem to support SVE.
David Marchand Jan. 14, 2021, 3:40 p.m. UTC | #2
On Thu, Jan 14, 2021 at 4:18 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> Ruifeng, Honnappa,
>
> On Tue, Jan 12, 2021 at 3:57 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote:
> >
> > Added lpm4 lookupx4 implementation by using Arm SVE extension.
> > The SVE is Scalable Vector Extension which is exposed to the
> > user with a vector length agnostic interface.
> > Refer to [1] for more information about SVE.
> >
> > Configuration was added for Neoverse N2 CPU which has SVE support.
> >
> > Some bugs were fixed so compiling with sve enabled can pass.
> >
> > [1] https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-instruction-emulator/resources/tutorials/sve
>
> Can you point at a toolchain that supports SVE without having to
> register to some commercial spamming system? :-)
> The only aarch64-linux-gnu- toolchain I found on the ARM website is a
> 8.x gcc that does not seem to support SVE.

I tested this using
https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
But I had to modify the cross compile prefix in
config/arm/arm64_n2_linux_gcc (adding a none_).
I am still interested in a toolchain that works out of the box.

Series applied, thanks.
Ruifeng Wang Jan. 15, 2021, 7:02 a.m. UTC | #3
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Thursday, January 14, 2021 11:40 PM
> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>
> Cc: dev <dev@dpdk.org>; Vladimir Medvedkin
> <vladimir.medvedkin@intel.com>; Pavan Nikhilesh
> <pbhagavatula@marvell.com>; jerinj@marvell.com;
> hemant.agrawal@nxp.com; nd <nd@arm.com>
> Subject: Re: [dpdk-dev] [PATCH v3 0/5] lpm lookup with sve support
> 
> On Thu, Jan 14, 2021 at 4:18 PM David Marchand
> <david.marchand@redhat.com> wrote:
> >
> > Ruifeng, Honnappa,
> >
> > On Tue, Jan 12, 2021 at 3:57 AM Ruifeng Wang <ruifeng.wang@arm.com>
> wrote:
> > >
> > > Added lpm4 lookupx4 implementation by using Arm SVE extension.
> > > The SVE is Scalable Vector Extension which is exposed to the user
> > > with a vector length agnostic interface.
> > > Refer to [1] for more information about SVE.
> > >
> > > Configuration was added for Neoverse N2 CPU which has SVE support.
> > >
> > > Some bugs were fixed so compiling with sve enabled can pass.
> > >
> > > [1]
> > > https://developer.arm.com/tools-and-software/server-and-
> hpc/compile/
> > > arm-instruction-emulator/resources/tutorials/sve
> >
> > Can you point at a toolchain that supports SVE without having to
> > register to some commercial spamming system? :-) The only
> > aarch64-linux-gnu- toolchain I found on the ARM website is a 8.x gcc
> > that does not seem to support SVE.
> 
> I tested this using
> https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-
> 2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz

Yes, gcc-10 has SVE support. Arm cross compilers available at:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads

> But I had to modify the cross compile prefix in
> config/arm/arm64_n2_linux_gcc (adding a none_).
> I am still interested in a toolchain that works out of the box.

I think on Ubuntu, it will work out of the box after installing package gcc-10-aarch64-linux-gnu.

> 
> Series applied, thanks.

Thank you.

> 
> 
> --
> David Marchand