From 4e4ee211b56e3276df80b350a6194f7cbf04b92c Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Tue, 11 Dec 2007 02:25:54 +0000 Subject: [PATCH] Generate code for some more intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44839 91177308-0d34-0410-b5e6-96231b3b80d8 --- CodeGen/CGBuiltin.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/CodeGen/CGBuiltin.cpp b/CodeGen/CGBuiltin.cpp index 875e56e029..8cbdce5318 100644 --- a/CodeGen/CGBuiltin.cpp +++ b/CodeGen/CGBuiltin.cpp @@ -204,6 +204,44 @@ llvm::Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, return Builder.CreateMul(EmitScalarExpr(E->getArg(0)), EmitScalarExpr(E->getArg(1)), "mulps"); + case X86::BI__builtin_ia32_pand: + return Builder.CreateAnd(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), + "pand"); + case X86::BI__builtin_ia32_por: + return Builder.CreateAnd(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), + "por"); + case X86::BI__builtin_ia32_pxor: + return Builder.CreateAnd(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), + "pxor"); + case X86::BI__builtin_ia32_pandn: + llvm::Value *V1 = Builder.CreateNot(EmitScalarExpr(E->getArg(0)), "tmp"); + return Builder.CreateAnd(V1, EmitScalarExpr(E->getArg(1)), "pandn"); + case X86::BI__builtin_ia32_paddb: + case X86::BI__builtin_ia32_paddd: + case X86::BI__builtin_ia32_paddq: + case X86::BI__builtin_ia32_paddw: + return Builder.CreateAdd(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), "padd"); + case X86::BI__builtin_ia32_psubb: + case X86::BI__builtin_ia32_psubd: + case X86::BI__builtin_ia32_psubq: + case X86::BI__builtin_ia32_psubw: + return Builder.CreateSub(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), "psub"); + case X86::BI__builtin_ia32_pshufd: { + llvm::Value *V = EmitScalarExpr(E->getArg(0)); + llvm::ConstantInt *I = + cast(EmitScalarExpr(E->getArg(1))); + int i = I->getZExtValue(); + + return EmitShuffleVector(V, V, + i & 0x3, (i & 0xc) >> 2, + (i & 0x30) >> 4, (i & 0xc0) >> 6, + "pshufd"); + } } } -- 2.50.1