[llvm-commits] [llvm-gcc-4.2] r132850 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp

Bill Wendling isanbard at gmail.com
Fri Jun 10 12:20:28 PDT 2011


Author: void
Date: Fri Jun 10 14:20:28 2011
New Revision: 132850

URL: http://llvm.org/viewvc/llvm-project?rev=132850&view=rev
Log:
Lower the MOVNT* variants to the appropriate native LLVM-IR equivalents.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=132850&r1=132849&r2=132850&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Fri Jun 10 14:20:28 2011
@@ -445,6 +445,21 @@
     Result = Builder.CreateCall(Func, CallOps, CallOps + 2);
     return true;
   }
+  case IX86_BUILTIN_MOVNTPS:
+  case IX86_BUILTIN_MOVNTPD:
+  case IX86_BUILTIN_MOVNTDQ:
+  case IX86_BUILTIN_MOVNTI: {
+    MDNode *Node = MDNode::get(Context, Builder.getInt32(1));
+
+    // Convert the type of the pointer to a pointer to the stored type.
+    Value *BC = Builder.CreateBitCast(Ops[0],
+                                      PointerType::getUnqual(Ops[1]->getType()),
+                                      "cast");
+    StoreInst *SI = Builder.CreateStore(Ops[1], BC);
+    SI->setMetadata(TheModule->getMDKindID("nontemporal"), Node);
+    SI->setAlignment(16);
+    return SI;
+  }
   case IX86_BUILTIN_PALIGNR: {
     static const Type *MMXTy = Type::getX86_MMXTy(Context);
     Function *Func = Intrinsic::getDeclaration(TheModule,





More information about the llvm-commits mailing list