> -----Original Message-----
> From: ovs-dev-boun...@openvswitch.org [mailto:ovs-dev-
> boun...@openvswitch.org] On Behalf Of Bhanuprakash Bodireddy
> Sent: Friday, January 12, 2018 5:41 PM
> To: d...@openvswitch.org
> Subject: [ovs-dev] [PATCH 4/4] doc: Update configure section with
> prefetchwt1 details.
> 
> Inspite of specifying -march=native when using Low Temporal
> Write(OPCH_LTW), the compiler generates 'prefetchw' instruction instead of
> 'prefetchwt1'
> instruction available on processor as in 'Case B'. To make the compiler
> emit
> prefetchwt1 instruction, -mprefetchwt1 needs to be passed to configure
> explicitly.
> 
> [Problem]
>   Case A:
>     OVS_PREFETCH_CACHE(addr, OPCH_HTW)  [__builtin_prefetch(addr, 1, 3)]
>     [Assembly]
>         leaq    -112(%rbp), %rax
>         prefetchw  (%rax)
> 
>   Case B:
>     OVS_PREFETCH_CACHE(addr, OPCH_LTW)  [__builtin_prefetch(addr, 1, 1)]
>     [Assembly]
>         leaq    -112(%rbp), %rax
>         prefetchw  (%rax)             <***problem***>
> 
> [Solution]
>    ./configure CFLAGS="-g -O2 -mprefetchwt1"
> 
>   Case B:
>     OVS_PREFETCH_CACHE(addr, OPCH_LTW)  [__builtin_prefetch(addr, 1, 1)]
>     [Assembly]
>         leaq    -112(%rbp), %rax
>         prefetchwt1  (%rax)
> 
> See also:
> https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341591.html
> 
> Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodire...@intel.com>
> ---
>  Documentation/intro/install/general.rst | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/Documentation/intro/install/general.rst
> b/Documentation/intro/install/general.rst
> index 718e5c2..4d2db45 100644
> --- a/Documentation/intro/install/general.rst
> +++ b/Documentation/intro/install/general.rst
> @@ -280,6 +280,19 @@ With this, GCC will detect the processor and
> automatically set appropriate  flags for it. This should not be used if
> you are compiling OVS outside the  target machine.
> 
> +Compilers(gcc) won't emit prefetchwt1 instruction even with '-
> march=native'
> +specified. In such case, -mprefetchwt1 needs to be explicitly passed
> +during configuration.

Is prefetchwt1 supported by other compilers (clang etc.)?

> +
> +For example inspite of specifying -march=native when using Low Temporal
> +Write i.e OVS_PREFETCH_CACHE(addr, OPCH_LTW), the compiler generates
> 'prefetchw'
> +instruction instead of 'prefetchwt1' instruction available on processor.
> +
> +To make the compiler generate the appropriate instruction, it is
> +recommended to pass ``-mprefetchwt1`` settings::
> +
> +    $ ./configure CFLAGS="-g -O2 -march=native -mprefetchwt1"

In the comments for patch 1 of the series you mentioned users had to enable the 
instruction.
It would be worth mentioning that here also. If there is extra work external to 
OVS to enable this instruction we can't assume the user will know this.

> +
>  .. note::
>    CFLAGS are not applied when building the Linux kernel module. Custom
> CFLAGS
>    for the kernel module are supplied using the ``EXTRA_CFLAGS`` variable
> when
> --
> 2.4.11
> 
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to