mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 17:31:50 +00:00
Put HasAVX512 predicate on some patterns to properly disable them when AVX512 isn't enabled. Currently it works simply because the SSE and AVX version of the same patterns are checked first in the DAG isel table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191490 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1f31a3794e
commit
62f6fac1c5
@ -1997,15 +1997,17 @@ def VMOVHLPSZrr : AVX512PSI<0x12, MRMSrcReg, (outs VR128X:$dst),
|
||||
[(set VR128X:$dst, (v4f32 (X86Movhlps VR128X:$src1, VR128X:$src2)))],
|
||||
IIC_SSE_MOV_LH>, EVEX_4V;
|
||||
|
||||
// MOVLHPS patterns
|
||||
def : Pat<(v4i32 (X86Movlhps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVLHPSZrr VR128X:$src1, VR128X:$src2)>;
|
||||
def : Pat<(v2i64 (X86Movlhps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVLHPSZrr (v2i64 VR128X:$src1), VR128X:$src2)>;
|
||||
let Predicates = [HasAVX512] in {
|
||||
// MOVLHPS patterns
|
||||
def : Pat<(v4i32 (X86Movlhps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVLHPSZrr VR128X:$src1, VR128X:$src2)>;
|
||||
def : Pat<(v2i64 (X86Movlhps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVLHPSZrr (v2i64 VR128X:$src1), VR128X:$src2)>;
|
||||
|
||||
// MOVHLPS patterns
|
||||
def : Pat<(v4i32 (X86Movhlps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVHLPSZrr VR128X:$src1, VR128X:$src2)>;
|
||||
// MOVHLPS patterns
|
||||
def : Pat<(v4i32 (X86Movhlps VR128X:$src1, VR128X:$src2)),
|
||||
(VMOVHLPSZrr VR128X:$src1, VR128X:$src2)>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// FMA - Fused Multiply Operations
|
||||
|
Loading…
Reference in New Issue
Block a user