[llvm-commits] [llvm-gcc-4.2] r51524 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp

Evan Cheng evan.cheng at apple.com
Fri May 23 17:09:24 PDT 2008


Author: evancheng
Date: Fri May 23 19:09:24 2008
New Revision: 51524

URL: http://llvm.org/viewvc/llvm-project?rev=51524&view=rev
Log:
Lower loadhpd / loadlpd into load + insert + shuffle.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=51524&r1=51523&r2=51524&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Fri May 23 19:09:24 2008
@@ -278,6 +278,22 @@
     Result = Builder.CreateBitCast(Result, ResultType, "tmp");
     return true;
   }
+  case IX86_BUILTIN_LOADHPD: {
+    Value *Load = Builder.CreateLoad(Ops[1], "tmp");
+    Ops[1] = BuildVector(Load, UndefValue::get(Type::DoubleTy), NULL);
+    Ops[1] = Builder.CreateBitCast(Ops[1], ResultType, "tmp");
+    Result = BuildVectorShuffle(Ops[0], Ops[1], 0, 2);
+    Result = Builder.CreateBitCast(Result, ResultType, "tmp");
+    return true;
+  }
+  case IX86_BUILTIN_LOADLPD: {
+    Value *Load = Builder.CreateLoad(Ops[1], "tmp");
+    Ops[1] = BuildVector(Load, UndefValue::get(Type::DoubleTy), NULL);
+    Ops[1] = Builder.CreateBitCast(Ops[1], ResultType, "tmp");
+    Result = BuildVectorShuffle(Ops[0], Ops[1], 2, 1);
+    Result = Builder.CreateBitCast(Result, ResultType, "tmp");
+    return true;
+  }
   case IX86_BUILTIN_STOREHPS: {
     VectorType *v2f64 = VectorType::get(Type::DoubleTy, 2);
     PointerType *f64Ptr = PointerType::getUnqual(Type::DoubleTy);





More information about the llvm-commits mailing list