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 /clang | |
| 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
Diffstat (limited to 'clang')
| -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:  | 

