mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[X86] Fix some patterns that select VLX instructions, but were incorrectly also checking presence of BWI instructions.
The EVEX->VEX pass probably obscures this. llvm-svn: 315365
This commit is contained in:
parent
edf19ef4ee
commit
61bc7dca24
@ -1339,12 +1339,14 @@ let Predicates = [HasAVX512] in {
|
||||
(VPBROADCASTQZm addr:$src)>;
|
||||
}
|
||||
|
||||
let Predicates = [HasVLX, HasBWI] in {
|
||||
let Predicates = [HasVLX] in {
|
||||
// 32-bit targets will fail to load a i64 directly but can use ZEXT_LOAD.
|
||||
def : Pat<(v2i64 (X86VBroadcast (v2i64 (X86vzload addr:$src)))),
|
||||
(VPBROADCASTQZ128m addr:$src)>;
|
||||
def : Pat<(v4i64 (X86VBroadcast (v4i64 (X86vzload addr:$src)))),
|
||||
(VPBROADCASTQZ256m addr:$src)>;
|
||||
}
|
||||
let Predicates = [HasVLX, HasBWI] in {
|
||||
// loadi16 is tricky to fold, because !isTypeDesirableForOp, justifiably.
|
||||
// This means we'll encounter truncated i32 loads; match that here.
|
||||
def : Pat<(v8i16 (X86VBroadcast (i16 (trunc (i32 (load addr:$src)))))),
|
||||
|
@ -7855,12 +7855,14 @@ defm VPBROADCASTD : avx2_broadcast<0x58, "vpbroadcastd", i32mem, loadi32,
|
||||
defm VPBROADCASTQ : avx2_broadcast<0x59, "vpbroadcastq", i64mem, loadi64,
|
||||
v2i64, v4i64, NoVLX>;
|
||||
|
||||
let Predicates = [HasAVX2, NoVLX_Or_NoBWI] in {
|
||||
let Predicates = [HasAVX2, NoVLX] in {
|
||||
// 32-bit targets will fail to load a i64 directly but can use ZEXT_LOAD.
|
||||
def : Pat<(v2i64 (X86VBroadcast (v2i64 (X86vzload addr:$src)))),
|
||||
(VPBROADCASTQrm addr:$src)>;
|
||||
def : Pat<(v4i64 (X86VBroadcast (v4i64 (X86vzload addr:$src)))),
|
||||
(VPBROADCASTQYrm addr:$src)>;
|
||||
}
|
||||
let Predicates = [HasAVX2, NoVLX_Or_NoBWI] in {
|
||||
// loadi16 is tricky to fold, because !isTypeDesirableForOp, justifiably.
|
||||
// This means we'll encounter truncated i32 loads; match that here.
|
||||
def : Pat<(v8i16 (X86VBroadcast (i16 (trunc (i32 (load addr:$src)))))),
|
||||
|
Loading…
Reference in New Issue
Block a user