aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGBuiltin.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2008-07-25 20:17:24 +0000
committerNate Begeman <natebegeman@mac.com>2008-07-25 20:17:24 +0000
commitabfaf9984eee3d076ded8770bf9fce156f10c185 (patch)
tree004ea50ea800d8c79b013a6dcb6d54cdb19154b4 /lib/CodeGen/CGBuiltin.cpp
parent7a66d7b6c0d84f8c9c74c687a338cf3cf6b9c808 (diff)
X86 builtin fixes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54049 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGBuiltin.cpp')
-rw-r--r--lib/CodeGen/CGBuiltin.cpp42
1 files changed, 10 insertions, 32 deletions
diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp
index 541a5664c8..f32688fded 100644
--- a/lib/CodeGen/CGBuiltin.cpp
+++ b/lib/CodeGen/CGBuiltin.cpp
@@ -506,6 +506,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "punpckhdq");
case X86::BI__builtin_ia32_punpckhdq128:
return EmitShuffleVector(Ops[0], Ops[1], 2, 6, 3, 7, "punpckhdq");
+ case X86::BI__builtin_ia32_punpckhqdq128:
+ return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "punpckhqdq");
case X86::BI__builtin_ia32_punpcklbw:
return EmitShuffleVector(Ops[0], Ops[1], 0, 8, 1, 9, 2, 10, 3, 11,
"punpcklbw");
@@ -515,6 +517,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "punpckldq");
case X86::BI__builtin_ia32_punpckldq128:
return EmitShuffleVector(Ops[0], Ops[1], 0, 4, 1, 5, "punpckldq");
+ case X86::BI__builtin_ia32_punpcklqdq128:
+ return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "punpcklqdq");
case X86::BI__builtin_ia32_pslldi128:
case X86::BI__builtin_ia32_psllqi128:
case X86::BI__builtin_ia32_psllwi128:
@@ -618,38 +622,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
name = "psrlwi";
ID = Intrinsic::x86_mmx_psrl_w;
break;
- case X86::BI__builtin_ia32_pslldi128:
- name = "pslldi";
- ID = Intrinsic::x86_sse2_psll_d;
- break;
- case X86::BI__builtin_ia32_psllqi128:
- name = "psllqi";
- ID = Intrinsic::x86_sse2_psll_q;
- break;
- case X86::BI__builtin_ia32_psllwi128:
- name = "psllwi";
- ID = Intrinsic::x86_sse2_psll_w;
- break;
- case X86::BI__builtin_ia32_psradi128:
- name = "psradi";
- ID = Intrinsic::x86_sse2_psra_d;
- break;
- case X86::BI__builtin_ia32_psrawi128:
- name = "psrawi";
- ID = Intrinsic::x86_sse2_psra_w;
- break;
- case X86::BI__builtin_ia32_psrldi128:
- name = "psrldi";
- ID = Intrinsic::x86_sse2_psrl_d;
- break;
- case X86::BI__builtin_ia32_psrlqi128:
- name = "psrlqi";
- ID = Intrinsic::x86_sse2_psrl_q;
- break;
- case X86::BI__builtin_ia32_psrlwi128:
- name = "psrlwi";
- ID = Intrinsic::x86_sse2_psrl_w;
- break;
}
llvm::Function *F = CGM.getIntrinsic(ID);
return Builder.CreateCall(F, &Ops[0], &Ops[0] + Ops.size(), name);
@@ -885,6 +857,12 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
return EmitShuffleVector(Ops[0], Ops[1], 2, 6, 3, 7, "unpckhps");
case X86::BI__builtin_ia32_unpcklps:
return EmitShuffleVector(Ops[0], Ops[1], 0, 4, 1, 5, "unpcklps");
+ case X86::BI__builtin_ia32_unpckhpd:
+ return EmitShuffleVector(Ops[0], Ops[1], 1, 3, "unpckhpd");
+ case X86::BI__builtin_ia32_unpcklpd:
+ return EmitShuffleVector(Ops[0], Ops[1], 0, 2, "unpcklpd");
+ case X86::BI__builtin_ia32_movsd:
+ return EmitShuffleVector(Ops[0], Ops[1], 2, 1, "movsd");
case X86::BI__builtin_ia32_movqv4si: {
llvm::Type *Ty = llvm::VectorType::get(llvm::Type::Int64Ty, 2);
return Builder.CreateBitCast(Ops[0], Ty);