diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index e77e56aa96c6..036d7d92f3f8 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -7741,12 +7741,14 @@ let Predicates = [HasAVX2, NoVLX] in { // AVX1 broadcast patterns let Predicates = [HasAVX1Only] in { -def : Pat<(v8i32 (X86VBroadcastld32 addr:$src)), - (VBROADCASTSSYrm addr:$src)>; -def : Pat<(v4i64 (X86VBroadcastld64 addr:$src)), - (VBROADCASTSDYrm addr:$src)>; -def : Pat<(v4i32 (X86VBroadcastld32 addr:$src)), - (VBROADCASTSSrm addr:$src)>; + def : Pat<(v8i32 (X86VBroadcastld32 addr:$src)), + (VBROADCASTSSYrm addr:$src)>; + def : Pat<(v4i64 (X86VBroadcastld64 addr:$src)), + (VBROADCASTSDYrm addr:$src)>; + def : Pat<(v4i32 (X86VBroadcastld32 addr:$src)), + (VBROADCASTSSrm addr:$src)>; + def : Pat<(v2i64 (X86VBroadcastld64 addr:$src)), + (VMOVDDUPrm addr:$src)>; } // Provide fallback in case the load node that is used in the patterns above @@ -7795,9 +7797,6 @@ let Predicates = [HasAVX1Only] in { def : Pat<(v2i64 (X86VBroadcast i64:$src)), (VPSHUFDri (VMOV64toPQIrr GR64:$src), 0x44)>; - def : Pat<(v2i64 (X86VBroadcastld64 addr:$src)), - (VMOVDDUPrm addr:$src)>; - def : Pat<(v4i64 (X86VBroadcast v2i64:$src)), (VINSERTF128rri (INSERT_SUBREG (v4i64 (IMPLICIT_DEF)), (v2i64 (VPSHUFDri VR128:$src, 0x44)), sub_xmm),