On Wed, Aug 23, 2023 at 3:33 PM Richard Biener <richard.guent...@gmail.com> wrote: > > On Tue, Aug 22, 2023 at 4:36 PM Hongtao Liu <crazy...@gmail.com> wrote: > > > > On Tue, Aug 22, 2023 at 9:54 PM Jakub Jelinek <ja...@redhat.com> wrote: > > > > > > On Tue, Aug 22, 2023 at 09:35:44PM +0800, Hongtao Liu wrote: > > > > Ok, then we can't avoid TARGET_AVX10_1 in those existing 256/128-bit > > > > evex instruction patterns. > > > > > > Why? > > > Internally for md etc. purposes, we should have the current > > > TARGET_AVX512* etc. ISA flags, plus one new one, whatever we call it > > > (TARGET_EVEX512 even if it is not completely descriptive because of kandq > > > etc., or some other name) which says if 512-bit vector modes can be used, > > > if g modifier can be used, if the 64-bit mask operations can be used etc. > > > Plus, if AVX10.1 contains any instructions not covered in the preexisting > > > TARGET_AVX512* sets, TARGET_AVX10_1 which covers that delta, otherwise > > > keep -mavx10.1 just as an command line option which enables/disables > > Let's assume there's no detla now, AVX10.1-512 is equal to > > AVX512{F,VL,BW,DQ,CD,BF16,FP16,VBMI,VBMI2,VNNI,IFMA,BITALG, VPOPCNTDQ} > > > other stuff. > > > The current common/config/i386/i386-common.cc OPTION_MASK_ISA*SET* would > > > be > > > like now, except that the current AVX512* sets imply also EVEX512/whatever > > > it will be called, that option itself enables nothing (or TARGET_AVX512F), > > > and unsetting it doesn't disable all the TARGET_AVX512*. > > > -mavx10.1 would enable the AVX512* sets without EVEX512/whatever. > > So for -mavx512bw -mavx10.1-256, -mavx512bw will set EVEX512, but > > -mavx10.1-256 doesn't clear EVEX512 but just enable all AVX512* sets?. > > As I said earlier -mavx10.1-256 (and -mavx10.1-512) should not exist. > So instead > we'd have -mavx512bw -mavx10.1 where -mavx512bw enables evex512 and > -mavx10.1 will enable the 10.1 ISAs _not affecting_ whether evex512 is > set or not. > > We then have the -mevex512 flag (or whatever name we agree to) to enable > (or disable) 512bit support. > > If you insist on having -mavx10.1-256 that should alias to -mavx10.1 + > -mno-evex512, > but Jakub disagrees here, so I'd rather not have it at all. We could have I think we can just support -mevex512 for now, as for avx10.1-256/512 it can wait for a while, considering it doesn't have new instructions and is controversial. Basically, -mno-evex512 is good enough for most needs. The only part I disagree with Jakub is I think for -mavx512f -mno-evex512 -mavx512bw, we need to disable 512-bit, an explicit -mno-evex512 should precedence over implicit yes. > -mavx10.1-512 aliasing to -mavx10.1 + -mevex512 (Jakub would agree here). > > Richard.
-- BR, Hongtao