[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