forked from OSchip/llvm-project
[AVX-512] Move (v4i64 (X86SubVBroadcast (v2i64))) alternate patterns under a HasVLX predicate. Similar for floating point.
llvm-svn: 284327
This commit is contained in:
parent
9db689263e
commit
f18b9201f5
|
@ -1079,6 +1079,15 @@ defm VBROADCASTI64X2Z128 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti64x2",
|
|||
defm VBROADCASTF64X2Z128 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf64x2",
|
||||
v4f64x_info, v2f64x_info>, VEX_W,
|
||||
EVEX_V256, EVEX_CD8<64, CD8VT2>;
|
||||
|
||||
// Provide fallback in case the load node that is used in the patterns above
|
||||
// is used by additional users, which prevents the pattern selection.
|
||||
def : Pat<(v4f64 (X86SubVBroadcast (v2f64 VR128X:$src))),
|
||||
(VINSERTF64x2Z256rr (INSERT_SUBREG (v4f64 (IMPLICIT_DEF)), VR128X:$src, sub_xmm),
|
||||
(v2f64 VR128X:$src), 1)>;
|
||||
def : Pat<(v4i64 (X86SubVBroadcast (v2i64 VR128X:$src))),
|
||||
(VINSERTI64x2Z256rr (INSERT_SUBREG (v4i64 (IMPLICIT_DEF)), VR128X:$src, sub_xmm),
|
||||
(v2i64 VR128X:$src), 1)>;
|
||||
}
|
||||
|
||||
let Predicates = [HasVLX, NoDQI] in {
|
||||
|
@ -1110,15 +1119,6 @@ defm VBROADCASTF64X2 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf64x2",
|
|||
defm VBROADCASTF32X8 : avx512_subvec_broadcast_rm<0x1b, "vbroadcastf32x8",
|
||||
v16f32_info, v8f32x_info>,
|
||||
EVEX_V512, EVEX_CD8<32, CD8VT8>;
|
||||
|
||||
// Provide fallback in case the load node that is used in the patterns above
|
||||
// is used by additional users, which prevents the pattern selection.
|
||||
def : Pat<(v4f64 (X86SubVBroadcast (v2f64 VR128X:$src))),
|
||||
(VINSERTI64x2Z256rr (INSERT_SUBREG (v4f64 (IMPLICIT_DEF)), VR128X:$src, sub_xmm),
|
||||
(v2f64 VR128X:$src), 1)>;
|
||||
def : Pat<(v4i64 (X86SubVBroadcast (v2i64 VR128X:$src))),
|
||||
(VINSERTI64x2Z256rr (INSERT_SUBREG (v4i64 (IMPLICIT_DEF)), VR128X:$src, sub_xmm),
|
||||
(v2i64 VR128X:$src), 1)>;
|
||||
}
|
||||
|
||||
multiclass avx512_common_broadcast_32x2<bits<8> opc, string OpcodeStr,
|
||||
|
|
Loading…
Reference in New Issue