mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 22:24:07 +00:00
Cost model support for lowered math builtins.
We make the cost for calling libm functions extremely high as emitting the calls is expensive and causes spills (on x86) so performance suffers. We still vectorize important calls like ceilf and friends on SSE4.1. and fabs. Differential Revision: http://llvm-reviews.chandlerc.com/D466 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176287 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -23,6 +23,7 @@
|
||||
#include "llvm/Analysis/TargetTransformInfo.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/IntrinsicInst.h"
|
||||
#include "llvm/IR/Value.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
@ -189,6 +190,16 @@ unsigned CostModelAnalysis::getInstructionCost(const Instruction *I) const {
|
||||
0);
|
||||
return -1;
|
||||
}
|
||||
case Instruction::Call:
|
||||
if (const IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) {
|
||||
SmallVector<Type*, 4> Tys;
|
||||
for (unsigned J = 0, JE = II->getNumArgOperands(); J != JE; ++J)
|
||||
Tys.push_back(II->getArgOperand(J)->getType());
|
||||
|
||||
return TTI->getIntrinsicInstrCost(II->getIntrinsicID(), II->getType(),
|
||||
Tys);
|
||||
}
|
||||
return -1;
|
||||
default:
|
||||
// We don't have any information on this instruction.
|
||||
return -1;
|
||||
|
Reference in New Issue
Block a user