@@ -7704,24 +7704,18 @@ let Predicates = [HasAVX2] in {
7704
7704
// is used by additional users, which prevents the pattern selection.
7705
7705
let AddedComplexity = 20 in {
7706
7706
def : Pat<(v4f32 (X86VBroadcast FR32:$src)),
7707
- (VBROADCASTSSrr
7708
- (INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), FR32:$src, sub_ss))>;
7707
+ (VBROADCASTSSrr (COPY_TO_REGCLASS FR32:$src, VR128))>;
7709
7708
def : Pat<(v8f32 (X86VBroadcast FR32:$src)),
7710
- (VBROADCASTSSYrr
7711
- (INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), FR32:$src, sub_ss))>;
7709
+ (VBROADCASTSSYrr (COPY_TO_REGCLASS FR32:$src, VR128))>;
7712
7710
def : Pat<(v4f64 (X86VBroadcast FR64:$src)),
7713
- (VBROADCASTSDYrr
7714
- (INSERT_SUBREG (v2f64 (IMPLICIT_DEF)), FR64:$src, sub_sd))>;
7711
+ (VBROADCASTSDYrr (COPY_TO_REGCLASS FR64:$src, VR128))>;
7715
7712
7716
7713
def : Pat<(v4i32 (X86VBroadcast GR32:$src)),
7717
- (VBROADCASTSSrr
7718
- (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)), GR32:$src, sub_ss))>;
7714
+ (VBROADCASTSSrr (COPY_TO_REGCLASS GR32:$src, VR128))>;
7719
7715
def : Pat<(v8i32 (X86VBroadcast GR32:$src)),
7720
- (VBROADCASTSSYrr
7721
- (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)), GR32:$src, sub_ss))>;
7716
+ (VBROADCASTSSYrr (COPY_TO_REGCLASS GR32:$src, VR128))>;
7722
7717
def : Pat<(v4i64 (X86VBroadcast GR64:$src)),
7723
- (VBROADCASTSDYrr
7724
- (INSERT_SUBREG (v2i64 (IMPLICIT_DEF)), GR64:$src, sub_sd))>;
7718
+ (VBROADCASTSDYrr (COPY_TO_REGCLASS GR64:$src, VR128))>;
7725
7719
}
7726
7720
}
7727
7721
@@ -7745,46 +7739,26 @@ def : Pat<(v4i32 (X86VBroadcast (loadi32 addr:$src))),
7745
7739
let AddedComplexity = 20 in {
7746
7740
// 128bit broadcasts:
7747
7741
def : Pat<(v4f32 (X86VBroadcast FR32:$src)),
7748
- (VPSHUFDri
7749
- (INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), FR32:$src, sub_ss), 0)>;
7742
+ (VPSHUFDri (COPY_TO_REGCLASS FR32:$src, VR128), 0)>;
7750
7743
def : Pat<(v8f32 (X86VBroadcast FR32:$src)),
7751
7744
(VINSERTF128rr (INSERT_SUBREG (v8f32 (IMPLICIT_DEF)),
7752
- (VPSHUFDri
7753
- (INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), FR32:$src, sub_ss), 0),
7754
- sub_xmm),
7755
- (VPSHUFDri
7756
- (INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), FR32:$src, sub_ss),
7757
- 0), 1)>;
7745
+ (VPSHUFDri (COPY_TO_REGCLASS FR32:$src, VR128), 0), sub_xmm),
7746
+ (VPSHUFDri (COPY_TO_REGCLASS FR32:$src, VR128), 0), 1)>;
7758
7747
def : Pat<(v4f64 (X86VBroadcast FR64:$src)),
7759
7748
(VINSERTF128rr (INSERT_SUBREG (v4f64 (IMPLICIT_DEF)),
7760
- (VPSHUFDri
7761
- (INSERT_SUBREG (v2f64 (IMPLICIT_DEF)), FR64:$src, sub_sd),
7762
- 0x44),
7763
- sub_xmm),
7764
- (VPSHUFDri
7765
- (INSERT_SUBREG (v2f64 (IMPLICIT_DEF)), FR64:$src, sub_sd),
7766
- 0x44), 1)>;
7749
+ (VPSHUFDri (COPY_TO_REGCLASS FR64:$src, VR128), 0x44), sub_xmm),
7750
+ (VPSHUFDri (COPY_TO_REGCLASS FR64:$src, VR128), 0x44), 1)>;
7767
7751
7768
7752
def : Pat<(v4i32 (X86VBroadcast GR32:$src)),
7769
- (VPSHUFDri
7770
- (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)), GR32:$src, sub_ss), 0)>;
7753
+ (VPSHUFDri (COPY_TO_REGCLASS GR32:$src, VR128), 0)>;
7771
7754
def : Pat<(v8i32 (X86VBroadcast GR32:$src)),
7772
7755
(VINSERTF128rr (INSERT_SUBREG (v8i32 (IMPLICIT_DEF)),
7773
- (VPSHUFDri
7774
- (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)), GR32:$src, sub_ss), 0),
7775
- sub_xmm),
7776
- (VPSHUFDri
7777
- (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)), GR32:$src, sub_ss),
7778
- 0), 1)>;
7756
+ (VPSHUFDri (COPY_TO_REGCLASS GR32:$src, VR128), 0), sub_xmm),
7757
+ (VPSHUFDri (COPY_TO_REGCLASS GR32:$src, VR128), 0), 1)>;
7779
7758
def : Pat<(v4i64 (X86VBroadcast GR64:$src)),
7780
7759
(VINSERTF128rr (INSERT_SUBREG (v4i64 (IMPLICIT_DEF)),
7781
- (VPSHUFDri
7782
- (INSERT_SUBREG (v2i64 (IMPLICIT_DEF)), GR64:$src, sub_sd),
7783
- 0x44),
7784
- sub_xmm),
7785
- (VPSHUFDri
7786
- (INSERT_SUBREG (v2i64 (IMPLICIT_DEF)), GR64:$src, sub_sd),
7787
- 0x44), 1)>;
7760
+ (VPSHUFDri (COPY_TO_REGCLASS GR64:$src, VR128), 0x44), sub_xmm),
7761
+ (VPSHUFDri (COPY_TO_REGCLASS GR64:$src, VR128), 0x44), 1)>;
7788
7762
}
7789
7763
}
7790
7764
0 commit comments