summaryrefslogtreecommitdiffstats
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
commitdbe8b7d236dca10e3dac10426a1e113172c58428 (patch)
tree28f88453e2b8071a360072a6abf725e9f2719b0f
parent8f14de8f32e63fffd37731dd2115d304ff3000a2 (diff)
downloadbcm5719-llvm-dbe8b7d236dca10e3dac10426a1e113172c58428.tar.gz
bcm5719-llvm-dbe8b7d236dca10e3dac10426a1e113172c58428.zip
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.
llvm-svn: 191490
-rw-r--r--llvm/lib/Target/X86/X86InstrAVX512.td20
1 files changed, 11 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td
index 884d7252c06..c9901bca0b1 100644
--- a/llvm/lib/Target/X86/X86InstrAVX512.td
+++ b/llvm/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
OpenPOWER on IntegriCloud