mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 11:33:24 +02:00
Tidied up switch cases. NFCI.
Split FCMP//ICMP/SEL from the basic arithmetic cost functions. They were not sharing any notable code path (just the return) and were repeatedly testing the opcode. llvm-svn: 269348
This commit is contained in:
parent
c1b0c5a7b4
commit
81b1cf65e7
@ -1640,7 +1640,14 @@ int BoUpSLP::getEntryCost(TreeEntry *E) {
|
|||||||
}
|
}
|
||||||
case Instruction::FCmp:
|
case Instruction::FCmp:
|
||||||
case Instruction::ICmp:
|
case Instruction::ICmp:
|
||||||
case Instruction::Select:
|
case Instruction::Select: {
|
||||||
|
// Calculate the cost of this instruction.
|
||||||
|
VectorType *MaskTy = VectorType::get(Builder.getInt1Ty(), VL.size());
|
||||||
|
int ScalarCost = VecTy->getNumElements() *
|
||||||
|
TTI->getCmpSelInstrCost(Opcode, ScalarTy, Builder.getInt1Ty());
|
||||||
|
int VecCost = TTI->getCmpSelInstrCost(Opcode, VecTy, MaskTy);
|
||||||
|
return VecCost - ScalarCost;
|
||||||
|
}
|
||||||
case Instruction::Add:
|
case Instruction::Add:
|
||||||
case Instruction::FAdd:
|
case Instruction::FAdd:
|
||||||
case Instruction::Sub:
|
case Instruction::Sub:
|
||||||
@ -1659,16 +1666,6 @@ int BoUpSLP::getEntryCost(TreeEntry *E) {
|
|||||||
case Instruction::And:
|
case Instruction::And:
|
||||||
case Instruction::Or:
|
case Instruction::Or:
|
||||||
case Instruction::Xor: {
|
case Instruction::Xor: {
|
||||||
// Calculate the cost of this instruction.
|
|
||||||
int ScalarCost = 0;
|
|
||||||
int VecCost = 0;
|
|
||||||
if (Opcode == Instruction::FCmp || Opcode == Instruction::ICmp ||
|
|
||||||
Opcode == Instruction::Select) {
|
|
||||||
VectorType *MaskTy = VectorType::get(Builder.getInt1Ty(), VL.size());
|
|
||||||
ScalarCost = VecTy->getNumElements() *
|
|
||||||
TTI->getCmpSelInstrCost(Opcode, ScalarTy, Builder.getInt1Ty());
|
|
||||||
VecCost = TTI->getCmpSelInstrCost(Opcode, VecTy, MaskTy);
|
|
||||||
} else {
|
|
||||||
// Certain instructions can be cheaper to vectorize if they have a
|
// Certain instructions can be cheaper to vectorize if they have a
|
||||||
// constant second vector operand.
|
// constant second vector operand.
|
||||||
TargetTransformInfo::OperandValueKind Op1VK =
|
TargetTransformInfo::OperandValueKind Op1VK =
|
||||||
@ -1706,12 +1703,11 @@ int BoUpSLP::getEntryCost(TreeEntry *E) {
|
|||||||
CInt->getValue().isPowerOf2())
|
CInt->getValue().isPowerOf2())
|
||||||
Op2VP = TargetTransformInfo::OP_PowerOf2;
|
Op2VP = TargetTransformInfo::OP_PowerOf2;
|
||||||
|
|
||||||
ScalarCost = VecTy->getNumElements() *
|
int ScalarCost = VecTy->getNumElements() *
|
||||||
TTI->getArithmeticInstrCost(Opcode, ScalarTy, Op1VK, Op2VK,
|
TTI->getArithmeticInstrCost(Opcode, ScalarTy, Op1VK,
|
||||||
|
Op2VK, Op1VP, Op2VP);
|
||||||
|
int VecCost = TTI->getArithmeticInstrCost(Opcode, VecTy, Op1VK, Op2VK,
|
||||||
Op1VP, Op2VP);
|
Op1VP, Op2VP);
|
||||||
VecCost = TTI->getArithmeticInstrCost(Opcode, VecTy, Op1VK, Op2VK,
|
|
||||||
Op1VP, Op2VP);
|
|
||||||
}
|
|
||||||
return VecCost - ScalarCost;
|
return VecCost - ScalarCost;
|
||||||
}
|
}
|
||||||
case Instruction::GetElementPtr: {
|
case Instruction::GetElementPtr: {
|
||||||
|
Loading…
Reference in New Issue
Block a user