On Fri, 2020-02-28 at 18:15 -0800, H.J. Lu wrote: > On Fri, Feb 28, 2020 at 4:16 PM Jeff Law <l...@redhat.com> wrote: > > On Thu, 2020-02-27 at 06:50 -0800, H.J. Lu wrote: > > > How about this? If it looks OK, I will post the whole patch set. > > It's better. I'm guessing the two cases that were previously handled with > > vextract/vbroadcast aren't supposed to happen? They're caught here IIUC: > > > > > + /* NB: To move xmm16-xmm31/ymm16-ymm31 registers without AVX512VL, > > > + we can only use zmm register move without memory operand. */ > > > + if (evex_reg_p > > > + && !TARGET_AVX512VL > > > + && GET_MODE_SIZE (mode) < 64) > > > + { > > > + if (memory_operand (operands[0], mode) > > > + || memory_operand (operands[1], mode)) > > > + gcc_unreachable (); > > > > > > > If they truly can't happen, that's fine. My worry is I don't see changes to > > the operand predicates or constraints which would avoid this case. Is it > > prevented by the mode iterator on the operands? Again, just want to make > > sure > > I understand why the vextract/vbroadcast stuff isn't in the new code. > > There are no GCC testcases to show that they are actually ever used. That is > why I removed them and added gcc_unreachable (). Understood.
> > 4 patches don't require changes in ix86_output_ssemov/ix86_get_ssemov: > > https://gitlab.com/x86-gcc/gcc/-/commit/426f2464abb80b97b8533f9efa15bbe72e6aa888 > https://gitlab.com/x86-gcc/gcc/-/commit/ec5b40d77f7a4424935275f1a7ccedbce83b6f54 > https://gitlab.com/x86-gcc/gcc/-/commit/92fdd98234984f86b66fb5403dd828661cd7999f > https://gitlab.com/x86-gcc/gcc/-/commit/f8fa5e571caf6740b36d042d631b4ace11683cd7 > > I can combine them into a single patch. That sounds reasonable -- it should be trivial to review. Then we can work through the patches that require changes to ix86_output_ssemov. Thanks for your patience. I'm juggling a fair amount of stuff right now. jeff