diff options
author | Craig Topper <craig.topper@intel.com> | 2019-07-10 17:11:29 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-07-10 17:11:29 +0000 |
commit | caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6 (patch) | |
tree | 32c886d66f32f46f4d063ca891fff1150189f6ac /clang/lib/CodeGen/CGBuiltin.cpp | |
parent | f9cb127ca92fddeca203ce01592f10e9a53ef077 (diff) | |
download | bcm5719-llvm-caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6.tar.gz bcm5719-llvm-caf6b71ab2e6f9de3efe6ed71e9a21579b9994b6.zip |
[X86] Change the IR sequence for _mm_storeh_pi and _mm_storel_pi to perform the store as a <2 x float> instead of i64.
This is similar to what we do for loadl_pi and loadh_pi.
llvm-svn: 365669
Diffstat (limited to 'clang/lib/CodeGen/CGBuiltin.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 16 |
1 files changed, 0 insertions, 16 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index f21e02d79c9..52e2d5bfb91 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -10651,22 +10651,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, return Builder.CreateCall(Intr, Ops); } - case X86::BI__builtin_ia32_storehps: - case X86::BI__builtin_ia32_storelps: { - llvm::Type *PtrTy = llvm::PointerType::getUnqual(Int64Ty); - llvm::Type *VecTy = llvm::VectorType::get(Int64Ty, 2); - - // cast val v2i64 - Ops[1] = Builder.CreateBitCast(Ops[1], VecTy, "cast"); - - // extract (0, 1) - unsigned Index = BuiltinID == X86::BI__builtin_ia32_storelps ? 0 : 1; - Ops[1] = Builder.CreateExtractElement(Ops[1], Index, "extract"); - - // cast pointer to i64 & store - Ops[0] = Builder.CreateBitCast(Ops[0], PtrTy); - return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]); - } case X86::BI__builtin_ia32_vextractf128_pd256: case X86::BI__builtin_ia32_vextractf128_ps256: case X86::BI__builtin_ia32_vextractf128_si256: |