On Thu, Sep 28, 2023 at 11:23 AM ZiNgA BuRgA <zingabu...@hotmail.com> wrote: > > That sounds about right. The code I had in mind would perhaps look like: > > > #if defined(__AVX512BW__) && defined(__AVX512VL__) > #if defined(__EVEX256__) && !defined(__EVEX512__) > // compiled code is AVX10.1/256 and AVX512 compatible > #else > // compiled code is only AVX512 compatible > #endif > > // some code which only uses 256b instructions > __m256i... > #endif > > > The '__EVEX256__' define would avoid needing to check compiler versions. Sounds reasonable, regarding how to set __EVEX256__, I think it should be set/unset along with __AVX512VL__ and __EVEX512__ should not unset __EVEX256__.
> Hopefully you can align it with whatever Clang does: > https://discourse.llvm.org/t/rfc-design-for-avx10-feature-support/72661/18 > > Thanks! > > On 28/09/2023 12:26 pm, Hu, Lin1 wrote: > > Hi, > > > > Thanks for you reply. > > > > I'd like to verify that our understanding of your requirements is correct, > > and that __EVEX256__ can be considered a default macro to determine whether > > the compiler supports the __EVEX***__ series of switches. > > > > For example: > > > > I have a segment of code like: > > #if defined(__EVEX512__): > > __mm512.*__; > > #else > > __mm256.*__; > > #endif > > > > But __EVEX512__ is undefined that doesn't mean I only need 256bit, maybe I > > use gcc-13, so I can still use 512bit. > > > > So the code should be: > > #if defined(__EVEX512__): > > __mm512.*__; > > #elif defined(__EVEX256__): > > __mm256.*__; > > #else > > __mm512.*__; > > #endif > > > > If we understand correctly, we'll consider the request. But since we're > > about to have a vacation, follow-up replies may be a bit slower. > > > > BRs, > > Lin > > > > -----Original Message----- > > From: ZiNgA BuRgA <zingabu...@hotmail.com> > > Sent: Thursday, September 28, 2023 8:32 AM > > To: Hu, Lin1 <lin1...@intel.com>; gcc-patches@gcc.gnu.org > > Subject: Re: [PATCH 00/18] Support -mevex512 for AVX512 > > > > Thanks for the new patch! > > > > I see that there's a new __EVEX512__ define. Will there be some > > __EVEX256__ (or maybe some max EVEX width) define, so that code can detect > > whether the compiler supports AVX10.1/256 without resorting to version > > checks? > > > > > -- BR, Hongtao