https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99041
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Combiner tries to combine whatever it can and if it matches (and costs suggest it is beneficial) it keeps it. So, this looks like a target bug to me. In particular, mma_assemble_input_operand predicate seems to allow any MEM whatsoever as long as it has V16QImode: (define_special_predicate "mma_assemble_input_operand" (match_test "(mode == V16QImode && (vsx_register_operand (op, mode) || MEM_P (op)))")) I don't believe it can allow any, there must be some requirement on what the address of the MEM can be, whether a REG + REG, REG + offset etc. and the ICE is a proof it is not the case.