https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126239
--- Comment #5 from Tamar Christina <tnfchris at gcc dot gnu.org> --- looks like the only other function that changed is mult_su3_an which now seems to have different scheduling and uses a different vector FMA instruction (presumably because of a change in register allocation). - vfmadd132pd %ymm5,%ymm1,%ymm10 - vfnmadd132pd %ymm8,%ymm10,%ymm1 - vfmadd132pd %ymm8,%ymm10,%ymm9 + vfmadd132pd %ymm4,%ymm16,%ymm9 + vfnmadd132pd %ymm20,%ymm9,%ymm16 + vfmadd231pd %ymm20,%ymm8,%ymm9 but now schedules the permutes in sequence rather than in batches as it did before. I don't know enough about Zen4's micro-architecture to say if # peak vmovupd 0x30(%rsi),%ymm2 ... vpermilpd $0x0,%ymm2,%ymm8 vpermilpd $0xf,%ymm2,%ymm4 vmovupd 0x60(%rsi),%ymm2 vpermpd $0xee,%ymm3,%ymm21 vpermpd $0xbb,%ymm3,%ymm16 vpermpd $0x11,%ymm0,%ymm9 vpermpd $0x44,%ymm0,%ymm20 ... vpermpd $0xbb,%ymm5,%ymm18 vpermpd $0xee,%ymm5,%ymm5 vpermilpd $0x5,%ymm6,%ymm17 vpermpd $0xbb,%ymm0,%ymm13 vpermpd $0xee,%ymm0,%ymm0 vpermilpd $0x0,%ymm2,%ymm22 vpermilpd $0xf,%ymm2,%ymm2 vmulpd %ymm22,%ymm21,%ymm21 vmulpd %ymm22,%ymm1,%ymm1 vmulpd %ymm22,%ymm3,%ymm3 is a problem vs # base vmovupd 0x60(%rsi),%ymm2 vmovupd 0x30(%rsi),%ymm5 ... vpermilpd $0x0,%ymm2,%ymm22 vpermilpd $0xf,%ymm2,%ymm2 ... vpermilpd $0x0,%ymm5,%ymm8 vmulpd %ymm22,%ymm1,%ymm1 vmulpd %ymm22,%ymm21,%ymm21 ... vpermilpd $0xf,%ymm5,%ymm5 vpermpd $0x11,%ymm0,%ymm10 vpermpd $0x44,%ymm0,%ymm9 ... vmulpd %ymm22,%ymm3,%ymm3 but this would just be target scheduling. So I don't think the patch is directly related, unless I missed something.
