On Tue, Aug 22, 2023 at 9:35 PM Hongtao Liu <crazy...@gmail.com> wrote: > > On Tue, Aug 22, 2023 at 9:24 PM Richard Biener > <richard.guent...@gmail.com> wrote: > > > > On Tue, Aug 22, 2023 at 3:16 PM Jakub Jelinek <ja...@redhat.com> wrote: > > > > > > On Tue, Aug 22, 2023 at 09:02:29PM +0800, Hongtao Liu wrote: > > > > > Agreed. And I still think -mevex512 vs. -mno-evex512 is the best > > > > > option > > > > > name to represent whether the effective ISA set allows 512-bit > > > > > vectors or > > > > > not. I think -mavx10.1 -mno-avx512cd should be fine. And, > > > > > -mavx10.1-256 > > > > > option IMHO should be in the same spirit to all the others a positive > > > > > enablement, > > > > > not both positive (enable avx512{f,cd,bw,dq,...} and negative > > > > > (disallow > > > > > 512-bit vectors). So, if one uses -mavx512f -mavx10.1-256, because > > > > > the > > > > > former would allow 512-bit vectors, the latter shouldn't disable > > > > > those again > > > > > because it isn't a -mno-* option. Sure, instructions which are > > > > > specific to > > > > But there's implicit negative (disallow 512-bit vector), I think > > > > > > That is wrong. > > > > > > > -mav512f -mavx10.1-256 or -mavx10.1-256 -mavx512f shouldn't enable > > > > 512-bit vector. > > > > > > Because then the -mavx10.1-256 option behaves completely differently from > > > all the other isa options. > > > > > > We have the -march= options which are processed separately, but the normal > > > ISA options either only enable something (when -mwhatever), or only > > > disable something > > > (when -mno-whatever). -mavx512f -mavx10.1-256 should be a union of those > > > ISAs, like say -mavx2 -mbmi is, not an intersection or something even > > > harder to understand. > > > > > > > Further, we should disallow a mix of exex512 and non-evex512 (e.g. > > > > -mavx10.1-512 -mavx10.2-256),they should be a unified separate switch > > > > that either disallows both or allows both. Instead of some isa > > > > allowing it and some isa disallowing it. > > > > > > No, it will be really terrible user experience if the new options behave > > > completely differently from everything else. Because then we'll need to > Ok, then we can't avoid TARGET_AVX10_1 in those existing 256/128-bit > evex instruction patterns. > > > document it in detail how it behaves and users will have hard time to > > > figure > > > it out, and specify what it does not just on the command line, but also > > > when > > > mixing with target attribute or pragmas. -mavx10.1-512 -mavx10.2-256 > > > should > > > be a union of those two ISAs. Either internally there is an ISA flag > > > whether > > > the instructions in the avx10.2 ISA but not avx10.1 ISA can operate on > > > 512-bit vectors or not, in that case -mavx10.1-512 -mavx10.2-256 should > > > enable the AVX10.1 set including 512-bit vectors + just the < 512-bit > > > instructions from the 10.1 to 10.2 delta, or if there is no such > > > separation > > > internally, it will just enable full AVX10.2-512. User has asked for it. > > > > I think having all three -mavx10.1, -mavx10.1-256 and -mavx10.1-512 is just > > confusing. Please separate ISA (avx10.1) from size. If -m[no-]evex512 > > isn't > > good propose something else. -mavx512f will enable 512bits, -mavx10.1 > > will not unless -mevex512. -mavx512f -mavx512vl -mno-evex512 will disable > > 512bits. > > > > So scrap -mavx10.1-256 and -mavx10.1-512 please. The related issue is what's the meaning of -mno-avx10.1-256/-mno-avx10.1-512 For -mno-avx10.1-256, maybe it just disable whole avx10.1 But for avx10.1-512 should it disable whole avx10.1 or just EVEX512, or maybe we just doesn't provide -mno-avx10.1-512, just provide -mno-avx10.1-256. And use -mno-evex512 to disable 512-bit vectors. > > It sounds to me we would have something like > avx512XXX > ^ > | > "independent": TARGET_AVX512VL || TARGET_AVX10_1 will enable > 128/256-bit instruction. > | > avx10.1-256 <----implied---- avx10.1-512 > ^ ^ > | | > | | > implied implied > | | > | | > avx10.2-256 <----implied -----avx10.2-512 > ^ ^ > | | > | | > implied Implied > | | > | | > avx10.3-256 <---implied-------avx10.3-512 > ..... > > And put every existing and new instruction under those flags > > > > > Richard. > > > > > Jakub > > > > > > > -- > BR, > Hongtao
-- BR, Hongtao