OSDN Git Service

[X86] Teach fastisel to use VLX VMOVNTDQA for v4f64 and 256-bit integers when available.
authorCraig Topper <craig.topper@intel.com>
Fri, 27 Oct 2017 20:13:10 +0000 (20:13 +0000)
committerCraig Topper <craig.topper@intel.com>
Fri, 27 Oct 2017 20:13:10 +0000 (20:13 +0000)
This looks to have been missed from r280682.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316790 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86FastISel.cpp

index 49ff906..1f51cbb 100644 (file)
@@ -423,7 +423,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
   case MVT::v4f64:
     assert(HasAVX);
     if (IsNonTemporal && Alignment >= 32 && HasAVX2)
-      Opc = X86::VMOVNTDQAYrm;
+      Opc = HasVLX ? X86::VMOVNTDQAZ256rm : X86::VMOVNTDQAYrm;
     else if (IsNonTemporal && Alignment >= 16)
       return false; // Force split for X86::VMOVNTDQArm
     else if (Alignment >= 32)
@@ -438,7 +438,7 @@ bool X86FastISel::X86FastEmitLoad(EVT VT, X86AddressMode &AM,
   case MVT::v32i8:
     assert(HasAVX);
     if (IsNonTemporal && Alignment >= 32 && HasAVX2)
-      Opc = X86::VMOVNTDQAYrm;
+      Opc = HasVLX ? X86::VMOVNTDQAZ256rm : X86::VMOVNTDQAYrm;
     else if (IsNonTemporal && Alignment >= 16)
       return false; // Force split for X86::VMOVNTDQArm
     else if (Alignment >= 32)