Allow insertelement, extractelement, and shufflevector to be hoisted/sunk
authorDan Gohman <gohman@apple.com>
Tue, 5 Jun 2007 16:05:55 +0000 (16:05 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 5 Jun 2007 16:05:55 +0000 (16:05 +0000)
by LICM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37435 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LICM.cpp

index 1680e43fe4551723611d915115bd7281d77f8ddc..8139959a265b0478896cb2befbc29c6cfb0ca692 100644 (file)
@@ -389,7 +389,9 @@ bool LICM::canSinkOrHoistInst(Instruction &I) {
 
   // Otherwise these instructions are hoistable/sinkable
   return isa<BinaryOperator>(I) || isa<CastInst>(I) ||
-         isa<SelectInst>(I) || isa<GetElementPtrInst>(I) || isa<CmpInst>(I);
+         isa<SelectInst>(I) || isa<GetElementPtrInst>(I) || isa<CmpInst>(I) ||
+         isa<InsertElementInst>(I) || isa<ExtractElementInst>(I) ||
+         isa<ShuffleVectorInst>(I);
 }
 
 /// isNotUsedInLoop - Return true if the only users of this instruction are