]> granicus.if.org Git - clang/commitdiff
Added support for sse intrinsics loadlpd, loadhpd, muldq128, and mulld128
authorMon P Wang <wangmp@apple.com>
Tue, 30 Sep 2008 05:31:27 +0000 (05:31 +0000)
committerMon P Wang <wangmp@apple.com>
Tue, 30 Sep 2008 05:31:27 +0000 (05:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56830 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/X86Builtins.def
lib/CodeGen/CGBuiltin.cpp

index ffe6e1eca26a68726a41cc59c61e02af36da3023..f5d4347808583bbdc3779e9c361f2b8733079ab9 100644 (file)
@@ -437,6 +437,8 @@ BUILTIN(__builtin_ia32_pmovzxbw128, "V8sV16c", "")
 BUILTIN(__builtin_ia32_pmovzxdq128, "V2LLiV4i", "")
 BUILTIN(__builtin_ia32_pmovzxwd128, "V4iV8s", "")
 BUILTIN(__builtin_ia32_pmovzxwq128, "V2LLiV8s", "")
+BUILTIN(__builtin_ia32_pmuldq128, "V2LLV4iV4i", "")
+BUILTIN(__builtin_ia32_pmulld128, "V4iV4iV4i", "")
 BUILTIN(__builtin_ia32_roundps, "V4fV4fi", "")
 BUILTIN(__builtin_ia32_roundss, "V4fV4fi", "")
 BUILTIN(__builtin_ia32_roundsd, "V2dV2di", "")
index 177e68e70496655ea777024211c10a238844efdb..1ced9869c1aa6f3a78ff7c811a8760e3419f9b5f 100644 (file)
@@ -892,6 +892,13 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
     Ops[0] = Builder.CreateInsertElement(Ops[0], Ops[1], Idx, "loadps");
     return Builder.CreateBitCast(Ops[0], OrigTy, "loadps");
   }
+  case X86::BI__builtin_ia32_loadlpd:
+  case X86::BI__builtin_ia32_loadhpd: {
+    Ops[1] = Builder.CreateLoad(Ops[1], "tmp");
+    unsigned Index = BuiltinID == X86::BI__builtin_ia32_loadlpd ? 0 : 1;
+    llvm::Value *Idx = llvm::ConstantInt::get(llvm::Type::Int32Ty, Index);
+    return Builder.CreateInsertElement(Ops[0], Ops[1], Idx, "loadpd");
+  }
   case X86::BI__builtin_ia32_storehps:
   case X86::BI__builtin_ia32_storelps: {
     const llvm::Type *EltTy = llvm::Type::Int64Ty;