diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-10-01 07:11:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-10-01 07:11:24 +0000 |
commit | 5eb5ade894cae8cb454264a1ba524e34b46c77e1 (patch) | |
tree | a930cf17e1509824e2b6ac2ba05fe85cd53f9a07 /llvm/lib | |
parent | 9af9a9d5f93b617a8d3c7ce75812acf6386d6051 (diff) | |
download | bcm5719-llvm-5eb5ade894cae8cb454264a1ba524e34b46c77e1.tar.gz bcm5719-llvm-5eb5ade894cae8cb454264a1ba524e34b46c77e1.zip |
[X86] Cleanup patterns for using VMOVDDUP for broadcasts.
-Remove OptForSize. Not all of the backend follows the same rules for creating broadcasts and there is no conflicting pattern.
-Don't stop selecting VEX VMOVDDUP when AVX512 is supported. We need VLX for EVEX VMOVDDUP.
-Only use VMOVDDUP for v2i64 broadcasts if AVX2 is not supported.
llvm-svn: 283020
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrSSE.td | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index 98d5dac9e8e..bad2d4ea415 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -5162,12 +5162,12 @@ let Predicates = [HasAVX] in { (VMOVDDUPrm addr:$src)>, Requires<[HasAVX]>; } -let Predicates = [UseAVX, OptForSize] in { - def : Pat<(v2f64 (X86VBroadcast (loadf64 addr:$src))), - (VMOVDDUPrm addr:$src)>; - def : Pat<(v2i64 (X86VBroadcast (loadi64 addr:$src))), - (VMOVDDUPrm addr:$src)>; -} +let Predicates = [HasAVX, NoVLX] in +def : Pat<(v2f64 (X86VBroadcast (loadf64 addr:$src))), + (VMOVDDUPrm addr:$src)>; +let Predicates = [HasAVX1Only] in +def : Pat<(v2i64 (X86VBroadcast (loadi64 addr:$src))), + (VMOVDDUPrm addr:$src)>; let Predicates = [UseSSE3] in { def : Pat<(X86Movddup (memopv2f64 addr:$src)), |