diff options
| author | Bill Wendling <isanbard@gmail.com> | 2011-05-04 02:40:38 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2011-05-04 02:40:38 +0000 |
| commit | 5f9150b5b11f74cbe3b6b98c84ebeedb2e8f68e1 (patch) | |
| tree | 7a268caeb8933938713f8fb7328e5ae77da4de76 | |
| parent | 1abe296cfd1bfee882f1c4d1516822210f7d2637 (diff) | |
| download | bcm5719-llvm-5f9150b5b11f74cbe3b6b98c84ebeedb2e8f68e1.tar.gz bcm5719-llvm-5f9150b5b11f74cbe3b6b98c84ebeedb2e8f68e1.zip | |
Convert the non-temporal store builtins to LLVM-native IR.
llvm-svn: 130830
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 7a0c8da5024..c2f1ebd122a 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -2154,6 +2154,23 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, 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: |

