[llvm-commits] [dragonegg] r131635 - in /dragonegg/trunk/src/x86: Target.cpp x86_builtins

Duncan Sands baldrick at free.fr
Thu May 19 02:39:04 PDT 2011


Author: baldrick
Date: Thu May 19 04:39:04 2011
New Revision: 131635

URL: http://llvm.org/viewvc/llvm-project?rev=131635&view=rev
Log:
Restore support for non-temporal vector moves (which was lost when the
corresponding intrinsics were removed from LLVM).

Modified:
    dragonegg/trunk/src/x86/Target.cpp
    dragonegg/trunk/src/x86/x86_builtins

Modified: dragonegg/trunk/src/x86/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/Target.cpp?rev=131635&r1=131634&r2=131635&view=diff
==============================================================================
--- dragonegg/trunk/src/x86/Target.cpp (original)
+++ dragonegg/trunk/src/x86/Target.cpp Thu May 19 04:39:04 2011
@@ -753,6 +753,30 @@
       return true;
     }
   }
+  case movntdq:
+  case movntdq256:
+  case movntdqa:
+  case movnti:
+  case movntpd:
+  case movntpd256:
+  case movntps:
+  case movntps256:
+  case movntq:
+  case movntsd:
+  case movntss: {
+    MDNode *Node = MDNode::get(Context, Builder.getInt32(1));
+
+    // Convert the type of the pointer to a pointer to the stored type.
+    unsigned AS = cast<PointerType>(Ops[0]->getType())->getAddressSpace();
+    Value *Ptr = Builder.CreateBitCast(Ops[0],
+                                       PointerType::get(Ops[1]->getType(), AS),
+                                       "cast");
+
+    StoreInst *SI = Builder.CreateStore(Ops[1], Ptr);
+    SI->setMetadata(TheModule->getMDKindID("nontemporal"), Node);
+    SI->setAlignment(16);
+    return SI;
+  }
   }
   DieAbjectly("Builtin not implemented!", stmt);
   return false;

Modified: dragonegg/trunk/src/x86/x86_builtins
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/x86_builtins?rev=131635&r1=131634&r2=131635&view=diff
==============================================================================
--- dragonegg/trunk/src/x86/x86_builtins (original)
+++ dragonegg/trunk/src/x86/x86_builtins Thu May 19 04:39:04 2011
@@ -206,17 +206,17 @@
 //DEFINE_BUILTIN(movmskpd256),
 //DEFINE_BUILTIN(movmskps),
 //DEFINE_BUILTIN(movmskps256),
-//DEFINE_BUILTIN(movntdq),
-//DEFINE_BUILTIN(movntdq256),
-//DEFINE_BUILTIN(movntdqa),
-//DEFINE_BUILTIN(movnti),
-//DEFINE_BUILTIN(movntpd),
-//DEFINE_BUILTIN(movntpd256),
-//DEFINE_BUILTIN(movntps),
-//DEFINE_BUILTIN(movntps256),
-//DEFINE_BUILTIN(movntq),
-//DEFINE_BUILTIN(movntsd),
-//DEFINE_BUILTIN(movntss),
+DEFINE_BUILTIN(movntdq),
+DEFINE_BUILTIN(movntdq256),
+DEFINE_BUILTIN(movntdqa),
+DEFINE_BUILTIN(movnti),
+DEFINE_BUILTIN(movntpd),
+DEFINE_BUILTIN(movntpd256),
+DEFINE_BUILTIN(movntps),
+DEFINE_BUILTIN(movntps256),
+DEFINE_BUILTIN(movntq),
+DEFINE_BUILTIN(movntsd),
+DEFINE_BUILTIN(movntss),
 DEFINE_BUILTIN(movq128),
 DEFINE_BUILTIN(movsd),
 DEFINE_BUILTIN(movshdup),





More information about the llvm-commits mailing list