On Sun, Jun 25, 2023 at 2:35 PM Hongtao Liu <crazy...@gmail.com> wrote: > > On Sun, Jun 25, 2023 at 2:25 PM Jan Beulich <jbeul...@suse.com> wrote: > > > > On 25.06.2023 07:12, Hongtao Liu wrote: > > > On Wed, Jun 21, 2023 at 2:29 PM Jan Beulich via Gcc-patches > > > <gcc-patches@gcc.gnu.org> wrote: > > >> > > >> --- > > >> For the purpose here (and elsewhere) bcst_vector_operand() (really: > > >> bcst_mem_operand()) isn't permissive enough: We'd want it to allow > > >> 128-bit and 256-bit types as well irrespective of AVX512VL being > > >> enabled. This would likely require a new predicate > > >> (bcst_intvec_operand()?) and a new constraint (BR? Bi?). (Yet for name > > >> selection it will want considering that this is applicable to certain > > >> non-calculational FP operations as well.) > > > I think so. > > > > Any preference towards predicate and constraint naming? > something like bcst_mem_operand_$suffiix, $suffix indicates the > pattern may use zmm instruction for 128/256-bit operand. > maybe just bcst_mem_operand_zmm? For constraint, maybe we can reuse Br, relax Br to match bcst_mem_operand_zmm. For those original patterns with bcst_mem_operand, it should be ok since it's already guarded by the predicate, the constraint must be valid. > > > > > Plus I think there's a more general question behind this: A new > > predicate / constraint pair is likely just one way of dealing > > with the issue. Another would appear to be to remove the > > restriction of 128- and 256-byte types when AVX512VL is not > > enabled, but AVX512F is. While that would require touching a > > lot of insn constraints, it looks as if lifting that restriction > > would "merely" require much wider use of Yv where v is used > > right now. But of course I may well be unaware of (some of) the > > reasons why that restriction was put in place in the first place > > (it can't really be the lack of suitable move insns, as those > > can be synthesized by using e.g. vextract{32,64}x4). > Also be careful of SIMD Floating-Point Exception if we use the zmm > version for those arithmetic instructions, the upper bits need to be > explicitly cleared for 128/256-bit operand. > For pternlog or other logic instructions, it's ok since there's no > SIMD Floating-Point Exception for such instructions. > > > > > Jan > > > > -- > BR, > Hongtao
-- BR, Hongtao