aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2013-09-27 07:20:47 +0000
committerCraig Topper <craig.topper@gmail.com>2013-09-27 07:20:47 +0000
commit62f6fac1c500c9d6cb287db395d9ab3cbd985de9 (patch)
treebec0b2e1b5abb6a5040d38e7f1f0fb2de64e5a6e
parent1f31a3794ef01d51efa23b892e76565ac23f3029 (diff)
downloadexternal_llvm-62f6fac1c500c9d6cb287db395d9ab3cbd985de9.zip
external_llvm-62f6fac1c500c9d6cb287db395d9ab3cbd985de9.tar.gz
external_llvm-62f6fac1c500c9d6cb287db395d9ab3cbd985de9.tar.bz2
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
-rw-r--r--lib/Target/X86/X86InstrAVX512.td20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td
index 884d725..c9901bc 100644
--- a/lib/Target/X86/X86InstrAVX512.td
+++ b/lib/Target/X86/X86InstrAVX512.td
@@ -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)>;
-
-// MOVHLPS patterns
-def : Pat<(v4i32 (X86Movhlps VR128X:$src1, VR128X:$src2)),
- (VMOVHLPSZrr 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)>;
+}
//===----------------------------------------------------------------------===//
// FMA - Fused Multiply Operations