Generate more builtins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44841 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CGBuiltin.cpp b/CodeGen/CGBuiltin.cpp
index 8cbdce5..8f07910 100644
--- a/CodeGen/CGBuiltin.cpp
+++ b/CodeGen/CGBuiltin.cpp
@@ -231,6 +231,39 @@
   case X86::BI__builtin_ia32_psubw:
     return Builder.CreateSub(EmitScalarExpr(E->getArg(0)),
                              EmitScalarExpr(E->getArg(1)), "psub");
+  case X86::BI__builtin_ia32_pmullw:
+    return Builder.CreateMul(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)), "pmul");
+  case X86::BI__builtin_ia32_punpckhbw:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             4, 12, 5, 13, 6, 14, 7, 15,
+                             "punpckhbw");
+  case X86::BI__builtin_ia32_punpckhwd:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             2, 6, 3, 7,
+                             "punpckhwd");
+  case X86::BI__builtin_ia32_punpckhdq:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             1, 3,
+                             "punpckhdq");
+  case X86::BI__builtin_ia32_punpcklbw:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             0, 8, 1, 9, 2, 10, 3, 11,
+                             "punpcklbw");
+  case X86::BI__builtin_ia32_punpcklwd:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             0, 4, 1, 5,
+                             "punpcklwd");
+  case X86::BI__builtin_ia32_punpckldq:
+    return EmitShuffleVector(EmitScalarExpr(E->getArg(0)),
+                             EmitScalarExpr(E->getArg(1)),
+                             0, 2,
+                             "punpckldq");
   case X86::BI__builtin_ia32_pshufd: {
     llvm::Value *V = EmitScalarExpr(E->getArg(0));
     llvm::ConstantInt *I =