On May 3, 2011, at 7:40 PM, Bill Wendling wrote: > Author: void > Date: Tue May 3 21:40:38 2011 > New Revision: 130830 > > URL: http://llvm.org/viewvc/llvm-project?rev=130830&view=rev > Log: > Convert the non-temporal store builtins to LLVM-native IR.
Thanks Bill, MDNode::get takes an ArrayRef, so you don't need the SmallVector temporary, just pass the ConstantInt in directly. Also, IRBuilder has a helper to get i32 constants, something like Builder->getInt32(1) -Chris > > Modified: > cfe/trunk/lib/CodeGen/CGBuiltin.cpp > > Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=130830&r1=130829&r2=130830&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Tue May 3 21:40:38 2011 > @@ -2154,6 +2154,23 @@ > LI->setAlignment(1); // Unaligned load. > return Builder.CreateBitCast(LI, VecTy, "loadu.cast"); > } > + case X86::BI__builtin_ia32_movntps: > + case X86::BI__builtin_ia32_movntpd: > + case X86::BI__builtin_ia32_movntdq: > + case X86::BI__builtin_ia32_movnti: { > + llvm::SmallVector<Value *, 1> Elts; > + Elts.push_back(llvm::ConstantInt::get(Int32Ty, 1)); > + llvm::MDNode *Node = llvm::MDNode::get(getLLVMContext(), Elts); > + > + // Convert the type of the pointer to a pointer to the stored type. > + Value *BC = Builder.CreateBitCast(Ops[0], > + > llvm::PointerType::getUnqual(Ops[1]->getType()), > + "cast"); > + StoreInst *SI = Builder.CreateStore(Ops[1], BC); > + SI->setMetadata(CGM.getModule().getMDKindID("nontemporal"), Node); > + SI->setAlignment(16); > + return SI; > + } > // 3DNow! > case X86::BI__builtin_ia32_pavgusb: > case X86::BI__builtin_ia32_pf2id: > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
