diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -12577,7 +12577,8 @@ (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2, (VTI.VT (VTI.LdFrag addr:$src3))))>, EVEX_4V, EVEX_CD8<32, CD8VF>, T8PD, - Sched<[sched.Folded, sched.ReadAfterFold]>; + Sched<[sched.Folded, sched.ReadAfterFold, + sched.ReadAfterFold]>; defm mb : AVX512_maskable_3src, EVEX_4V, EVEX_CD8<32, CD8VF>, EVEX_B, - T8PD, Sched<[sched.Folded, sched.ReadAfterFold]>; + T8PD, Sched<[sched.Folded, sched.ReadAfterFold, + sched.ReadAfterFold]>; } } diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -7332,7 +7332,9 @@ !strconcat(OpcodeStr, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"), [(set VR128:$dst, (v4i32 (OpNode VR128:$src1, VR128:$src2, (loadv4i32 addr:$src3))))]>, - VEX_4V, Sched<[SchedWriteVecIMul.XMM]>; + VEX_4V, Sched<[SchedWriteVecIMul.XMM.Folded, + SchedWriteVecIMul.XMM.ReadAfterFold, + SchedWriteVecIMul.XMM.ReadAfterFold]>; let isCommutable = IsCommutable in def Yrr : AVX8I, - VEX_4V, VEX_L, Sched<[SchedWriteVecIMul.XMM]>; + VEX_4V, VEX_L, Sched<[SchedWriteVecIMul.YMM]>; def Yrm : AVX8I, - VEX_4V, VEX_L, Sched<[SchedWriteVecIMul.XMM]>; + VEX_4V, VEX_L, Sched<[SchedWriteVecIMul.YMM.Folded, + SchedWriteVecIMul.YMM.ReadAfterFold, + SchedWriteVecIMul.YMM.ReadAfterFold]>; } defm VPDPBUSD : avx_vnni_rm<0x50, "vpdpbusd", X86Vpdpbusd, 0>;