From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
Cc: Konstantin Ananyev <konstantin.ananyev@huawei.com>,
"dev@dpdk.org" <dev@dpdk.org>,
"bruce.richardson@intel.com" <bruce.richardson@intel.com>,
"david.marchand@redhat.com" <david.marchand@redhat.com>,
"thomas@monjalon.net" <thomas@monjalon.net>,
"mb@smartsharesystems.com" <mb@smartsharesystems.com>
Subject: Re: [PATCH 3/9] eal: use barrier intrinsics when compiling with msvc
Date: Mon, 10 Apr 2023 13:58:48 -0700 [thread overview]
Message-ID: <20230410205848.GB4798@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> (raw)
In-Reply-To: <624ce08e-6f67-e078-3f37-c9dab7b094f4@yandex.ru>
On Mon, Apr 10, 2023 at 09:02:00PM +0100, Konstantin Ananyev wrote:
> 06/04/2023 01:07, Tyler Retzlaff пишет:
> >On Wed, Apr 05, 2023 at 10:57:02AM +0000, Konstantin Ananyev wrote:
> >>
> >>>>>>>Inline assembly is not supported for msvc x64 instead use
> >>>>>>>_{Read,Write,ReadWrite}Barrier() intrinsics.
> >>>>>>>
> >>>>>>>Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> >>>>>>>---
> >>>>>>> lib/eal/include/generic/rte_atomic.h | 4 ++++
> >>>>>>> lib/eal/x86/include/rte_atomic.h | 10 +++++++++-
> >>>>>>> 2 files changed, 13 insertions(+), 1 deletion(-)
> >>>>>>>
> >>>>>>>diff --git a/lib/eal/include/generic/rte_atomic.h b/lib/eal/include/generic/rte_atomic.h
> >>>>>>>index 234b268..e973184 100644
> >>>>>>>--- a/lib/eal/include/generic/rte_atomic.h
> >>>>>>>+++ b/lib/eal/include/generic/rte_atomic.h
> >>>>>>>@@ -116,9 +116,13 @@
> >>>>>>> * Guarantees that operation reordering does not occur at compile time
> >>>>>>> * for operations directly before and after the barrier.
> >>>>>>> */
> >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> >>>>>>> #define rte_compiler_barrier() do { \
> >>>>>>> asm volatile ("" : : : "memory"); \
> >>>>>>> } while(0)
> >>>>>>>+#else
> >>>>>>>+#define rte_compiler_barrier() _ReadWriteBarrier()
> >>>>>>>+#endif
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * Synchronization fence between threads based on the specified memory order.
> >>>>>>>diff --git a/lib/eal/x86/include/rte_atomic.h b/lib/eal/x86/include/rte_atomic.h
> >>>>>>>index f2ee1a9..5cce9ba 100644
> >>>>>>>--- a/lib/eal/x86/include/rte_atomic.h
> >>>>>>>+++ b/lib/eal/x86/include/rte_atomic.h
> >>>>>>>@@ -27,9 +27,13 @@
> >>>>>>>
> >>>>>>> #define rte_rmb() _mm_lfence()
> >>>>>>>
> >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> >>>>>>> #define rte_smp_wmb() rte_compiler_barrier()
> >>>>>>>-
> >>>>>>> #define rte_smp_rmb() rte_compiler_barrier()
> >>>>>>>+#else
> >>>>>>>+#define rte_smp_wmb() _WriteBarrier()
> >>>>>>>+#define rte_smp_rmb() _ReadBarrier()
> >>>>>>>+#endif
> >>>>>>>
> >>>>>>> /*
> >>>>>>> * From Intel Software Development Manual; Vol 3;
> >>>>>>>@@ -66,11 +70,15 @@
> >>>>>>> static __rte_always_inline void
> >>>>>>> rte_smp_mb(void)
> >>>>>>> {
> >>>>>>>+#ifndef RTE_TOOLCHAIN_MSVC
> >>>>>>> #ifdef RTE_ARCH_I686
> >>>>>>> asm volatile("lock addl $0, -128(%%esp); " ::: "memory");
> >>>>>>> #else
> >>>>>>> asm volatile("lock addl $0, -128(%%rsp); " ::: "memory");
> >>>>>>> #endif
> >>>>>>>+#else
> >>>>>>>+ rte_compiler_barrier();
> >>>>>>>+#endif
> >>>>>>
> >>>>>>It doesn't look right to me: compiler_barrier is not identical to LOCK-ed operation,
> >>>>>>and is not enough to serve as a proper memory barrier for SMP.
> >>>>>
> >>>>>i think i'm confused by the macro naming here. i'll take another look
> >>>>>thank you for raising it.
> >>>>>
> >>>>>>
> >>>>>>Another ore generic comment - do we really need to pollute all that code with RTE_TOOLCHAIN_MSVC ifdefs?
> >>>>>>Right now we have ability to have subdir per arch (x86/arm/etc.).
> >>>>>>Can we treat x86+windows+msvc as a special arch?
> >>>>>
> >>>>>i asked this question previously and confirmed in the technical board
> >>>>>meeting. the answer i received was that the community did not want new
> >>>>>directory/headers introduced for compiler support matrix and i should
> >>>>>use #ifdef in the existing headers.
> >>>>
> >>>>Ok, can I then ask at least to minimize number of ifdefs to absolute
> >>>>minimum?
> >>>
> >>>in principal no objection at all, one question though is what to do with
> >>>comment based documentation attached to macros? e.g.
> >>>
> >>>#ifdef SOME_FOO
> >>>/* some documentation */
> >>>#define some_macro
> >>>#else
> >>>#define some_macro
> >>>#endif
> >>>
> >>>#ifdef SOME_FOO
> >>>/* some documentation 2 */
> >>>#define some_macro2
> >>>#else
> >>>#define some_macro2
> >>>#endif
> >>>
> >>>i can either duplicate the documentation for every define so it stays
> >>>"attached" or i can only document the first expansion. let me know what
> >>>you expect.
> >>>
> >>>so something like this?
> >>>
> >>>#ifdef SOME_FOO
> >>>/* some documentation */
> >>>#define some_macro
> >>>/* some documentation 2 */
> >>>#define some_macro2
> >>>#else
> >>>#define some_macro
> >>>#define some_macro2
> >>>#endif
> >>>
> >>>or should all documentation be duplicated? which can become a teadious
> >>>redundancy for anyone maintaining it. keep in mind we might have to make
> >>>an exception for rte_common.h because it seems doing this would be
> >>>really ugly there. take a look let me know.
> >>
> >>My personal preference would be to keep one documentation block for both cases
> >>(yes, I suppose it needs to be updated if required):
> >>
> >>/* some documentation, probably for both SOME_FOO on/off */
> >>#ifdef SOME_FOO
> >>#define some_macro
> >>#else
> >>#define some_macro
> >>#endif
> >>
> >>
> >>>
> >>>>It is really hard to read an follow acode that is heavily ifdefed.
> >>>>Let say above we probably don't need to re-define
> >>>>rte_smp_rmb/rte_smp_wmb, as both are boiled down to
> >>>>compiler_barrier(), which is already redefined.
> >>>
> >>>can you take a look at v2 of the patch and re-prescribe your advise
> >>>here? in v2 only the intel macros expand to the compiler barrier. though
> >>>i find this vexing since as you pointed out it seems they aren't
> >>>supposed to be compiler only barriers according to the documentation in
> >>>generic/rte_atomic.h they are intended to be memory barriers.
> >>
> >>Commented, pls check if I explained my thoughts clear enough there.
> >>>
> >>>please help me if i've goofed up in this regard.
> >>>
> >>>>Another question - could it be visa-versa approach:
> >>>>can we replace some inline assembly with common instincts whenever possible?
> >>>
> >>>msvc has only intrinsics and the conditional expansion for msvc is to
> >>>use those intrinsics, gcc doesn't generally define intrinsics for processor
> >>>specific code does it?
> >>
> >>AFAIK latest gcc (and clang) versions do support majority of these instincts: __rdtsc, _xbegin/_xend, etc.
> >>So my thought was - might be we can use same instincts for all compilers...
> >>One implication I can think about - older versions of gcc.
> >>But might be we can re-order things and have inlines only for these oldere gcc versions?
> >
> >i'm going to propose if we do this we do it as a separate change later.
> >
> >i fear it could turn into the following dance which seems not a lot
> >better given i'm sure some people will argue there is no benefit to
> >removing inline assembly for gcc/clang. my preference is not to get
> >side-tracked on refactoring with the short merge window.
> >
> >#if (defined(__clang__) && clang version < x) ||
> > (defined(__GNUC__) && gcc version < x)
> >__asm(whatever...
> >#else
> >__rdtsc()
> >#endif
>
>
> Played a bit with https://godbolt.org/.
> It seems that __rdtsc() and RMT builtins (xbegin/xend/xtest) are
> supported all way down to gcc 4.8.1.
Do you know what version of clang comes with RHEL 7. Because for 23.07
release at least I need to know it won't break clang compile on RHEL 7
either (which is what makes this painful).
I played around with clang 7 (which i'm not sure is the right version)
it had __rdtsc() but it did not have xbegin/xend/xtest. For the various
instructions they're appearing in different versions of the compilers.
I'm starting to wonder if i should drop the intrinsics changes into a
separate series?
next prev parent reply other threads:[~2023-04-10 20:58 UTC|newest]
Thread overview: 240+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-03 21:52 [PATCH 0/9] msvc integration changes Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 1/9] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 2/9] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 3/9] eal: use barrier " Tyler Retzlaff
2023-04-04 8:53 ` Bruce Richardson
2023-04-04 15:43 ` Tyler Retzlaff
2023-04-04 16:23 ` Bruce Richardson
2023-04-04 16:39 ` Tyler Retzlaff
2023-04-04 12:11 ` Konstantin Ananyev
2023-04-04 14:57 ` Morten Brørup
2023-04-04 15:49 ` Tyler Retzlaff
2023-04-04 23:49 ` Konstantin Ananyev
2023-04-05 0:04 ` Tyler Retzlaff
2023-04-05 10:57 ` Konstantin Ananyev
2023-04-05 12:35 ` Morten Brørup
2023-04-05 15:38 ` Tyler Retzlaff
2023-04-10 14:12 ` Konstantin Ananyev
2023-04-06 0:07 ` Tyler Retzlaff
2023-04-10 20:02 ` Konstantin Ananyev
2023-04-10 20:58 ` Tyler Retzlaff [this message]
2023-04-11 9:10 ` Bruce Richardson
2023-04-11 21:22 ` Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 4/9] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 5/9] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 6/9] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 7/9] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 8/9] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-03 21:52 ` [PATCH 9/9] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 0/9] msvc integration changes Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 1/9] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-05 8:59 ` Bruce Richardson
2023-04-04 20:07 ` [PATCH v2 2/9] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 3/9] eal: use barrier " Tyler Retzlaff
2023-04-05 10:33 ` Bruce Richardson
2023-04-05 10:45 ` Konstantin Ananyev
2023-04-05 15:42 ` Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 4/9] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 5/9] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 6/9] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-05 10:44 ` Bruce Richardson
2023-04-05 15:51 ` Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 7/9] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 8/9] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-04 20:07 ` [PATCH v2 9/9] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-05 10:56 ` Bruce Richardson
2023-04-05 16:02 ` Tyler Retzlaff
2023-04-05 16:17 ` Bruce Richardson
2023-04-06 0:45 ` [PATCH v3 00/11] msvc integration changes Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 01/11] eal: use rdtsc intrinsic when compiling with msvc Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 02/11] eal: use rtm and xtest intrinsics " Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 03/11] eal: use barrier " Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 04/11] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 05/11] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 06/11] eal: typedef cpu flag enum as int for msvc Tyler Retzlaff
2023-04-10 19:59 ` Konstantin Ananyev
2023-04-10 20:53 ` Tyler Retzlaff
2023-04-16 21:29 ` Konstantin Ananyev
2023-04-17 15:46 ` Tyler Retzlaff
2023-04-17 22:10 ` Konstantin Ananyev
2023-04-06 0:45 ` [PATCH v3 07/11] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 08/11] eal: expand most macros to empty when using msvc Tyler Retzlaff
2023-04-06 2:25 ` Stephen Hemminger
2023-04-06 6:44 ` Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 09/11] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 10/11] telemetry: disable json print formatting with msvc Tyler Retzlaff
2023-04-06 9:25 ` Bruce Richardson
2023-04-06 15:45 ` Tyler Retzlaff
2023-04-06 0:45 ` [PATCH v3 11/11] telemetry: avoid expanding versioned symbol macros on msvc Tyler Retzlaff
2023-04-11 10:24 ` Bruce Richardson
2023-04-11 20:34 ` Tyler Retzlaff
2023-04-12 8:50 ` Bruce Richardson
2023-04-11 21:12 ` [PATCH v4 00/14] msvc integration changes Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-12 10:29 ` Konstantin Ananyev
2023-04-11 21:12 ` [PATCH v4 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-12 8:54 ` Bruce Richardson
2023-04-12 10:27 ` Konstantin Ananyev
2023-04-11 21:12 ` [PATCH v4 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-12 8:55 ` Bruce Richardson
2023-04-12 12:37 ` Konstantin Ananyev
2023-04-11 21:12 ` [PATCH v4 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-12 9:05 ` Bruce Richardson
2023-04-12 12:31 ` Konstantin Ananyev
2023-04-12 15:19 ` Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 08/14] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 09/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 10/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 11/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 12/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 13/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-11 21:12 ` [PATCH v4 14/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 00/14] msvc integration changes Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-14 9:09 ` Bruce Richardson
2023-04-13 21:25 ` [PATCH v5 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 08/14] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 09/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-13 21:25 ` [PATCH v5 10/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-13 21:26 ` [PATCH v5 11/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-14 6:45 ` Morten Brørup
2023-04-14 9:22 ` Bruce Richardson
2023-04-14 12:39 ` Morten Brørup
2023-04-14 13:25 ` Bruce Richardson
2023-04-14 17:02 ` Tyler Retzlaff
2023-04-15 7:16 ` Morten Brørup
2023-04-15 20:52 ` Tyler Retzlaff
2023-04-15 22:41 ` Morten Brørup
2023-04-15 22:52 ` Stephen Hemminger
2023-04-17 15:16 ` Tyler Retzlaff
2023-04-13 21:26 ` [PATCH v5 12/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-13 21:26 ` [PATCH v5 13/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-13 21:26 ` [PATCH v5 14/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 00/15] msvc integration changes Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 01/15] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 02/15] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 03/15] eal: use barrier intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 04/15] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 05/15] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 06/15] eal: use prefetch intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 07/15] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 08/15] eal: typedef cpu flag enum as int Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 09/15] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 10/15] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 11/15] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 12/15] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 13/15] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 14/15] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-15 1:15 ` [PATCH v6 15/15] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-04-15 6:11 ` [PATCH v6 00/15] msvc integration changes Morten Brørup
2023-04-17 16:10 ` [PATCH v7 00/14] " Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-05-01 12:55 ` Konstantin Ananyev
2023-04-17 16:10 ` [PATCH v7 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-05-01 12:57 ` Konstantin Ananyev
2023-04-17 16:10 ` [PATCH v7 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-04-17 16:10 ` [PATCH v7 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 00/14] msvc integration changes Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-05-02 3:15 ` [PATCH v8 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 00/14] msvc integration changes Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 01/14] eal: use rdtsc intrinsic Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 02/14] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 03/14] eal: use barrier intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 04/14] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 05/14] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 06/14] eal: use prefetch intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 07/14] eal: use byte swap intrinsics Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 08/14] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 09/14] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 10/14] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 11/14] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 12/14] telemetry: avoid expanding versioned symbol macros on MSVC Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 13/14] eal: always define MSVC as little endian Tyler Retzlaff
2023-07-11 16:49 ` [PATCH v9 14/14] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 00/13] msvc integration changes Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 01/13] eal: use rdtsc intrinsic Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 02/13] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 03/13] eal: use barrier intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 04/13] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 05/13] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 06/13] eal: use prefetch intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 07/13] eal: use byte swap intrinsics Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 08/13] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 09/13] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 10/13] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 11/13] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 12/13] eal: always define MSVC as little endian Tyler Retzlaff
2023-08-02 21:35 ` [PATCH v10 13/13] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 00/16] msvc integration changes Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 01/16] eal: use rdtsc intrinsic Tyler Retzlaff
2023-08-26 14:38 ` Ali Alnubani
2023-08-29 16:16 ` Tyler Retzlaff
2023-08-30 13:38 ` Ali Alnubani
2023-08-30 15:48 ` Ali Alnubani
2023-08-30 16:29 ` Ali Alnubani
2023-08-31 23:06 ` Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 02/16] eal: use rtm and xtest intrinsics Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 03/16] eal: use barrier intrinsics Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 04/16] eal: use cpuid and cpuidex intrinsics Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 05/16] eal: use umonitor umwait and tpause intrinsics Tyler Retzlaff
2023-08-25 14:12 ` Bruce Richardson
2023-08-25 14:56 ` Morten Brørup
2023-08-25 15:12 ` Bruce Richardson
2023-08-25 15:44 ` Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 06/16] eal: use prefetch intrinsics Tyler Retzlaff
2023-08-24 12:06 ` David Marchand
2023-08-24 12:25 ` David Marchand
2023-08-25 9:23 ` Morten Brørup
2023-08-24 12:46 ` Morten Brørup
2023-08-24 14:18 ` David Marchand
2023-08-24 14:43 ` Morten Brørup
2023-08-24 15:53 ` Tyler Retzlaff
2023-08-25 8:44 ` David Marchand
2023-08-25 15:46 ` Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 07/16] eal: use byte swap intrinsics Tyler Retzlaff
2023-08-25 8:45 ` David Marchand
2023-08-11 19:20 ` [PATCH v11 08/16] eal: hide GCC extension based alignment markers Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 09/16] eal: hide typedefs based on GCC vector extensions Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 10/16] eal: expand most macros to empty when using MSVC Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 11/16] eal: exclude exposure of rte atomic APIs for MSVC builds Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 12/16] eal: always define MSVC as little endian Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 13/16] eal: do not define typeof macro when building with MSVC Tyler Retzlaff
2023-08-11 19:20 ` [PATCH v11 14/16] log: use standard ternary operator instead of GCC extension Tyler Retzlaff
2023-09-25 6:24 ` Morten Brørup
2023-09-25 15:09 ` Stephen Hemminger
2023-08-11 19:20 ` [PATCH v11 15/16] eal: " Tyler Retzlaff
2023-09-25 6:25 ` Morten Brørup
2023-08-11 19:20 ` [PATCH v11 16/16] eal: define priority based ctor dtor for MSVC Tyler Retzlaff
2023-09-25 6:28 ` Morten Brørup
2023-08-25 8:47 ` [PATCH v11 00/16] msvc integration changes David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230410205848.GB4798@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net \
--to=roretzla@linux.microsoft.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=konstantin.ananyev@huawei.com \
--cc=konstantin.v.ananyev@yandex.ru \
--cc=mb@smartsharesystems.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).