diff options
author | Nate Begeman <natebegeman@mac.com> | 2008-07-25 20:17:24 +0000 |
---|---|---|
committer | Nate Begeman <natebegeman@mac.com> | 2008-07-25 20:17:24 +0000 |
commit | abfaf9984eee3d076ded8770bf9fce156f10c185 (patch) | |
tree | 004ea50ea800d8c79b013a6dcb6d54cdb19154b4 /lib/CodeGen/CGBuiltin.cpp | |
parent | 7a66d7b6c0d84f8c9c74c687a338cf3cf6b9c808 (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.cpp | 42 |
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); |