mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-06 09:44:39 +00:00
split instcombine of compares (visit[FI]Cmp) out to
a new InstCombineCompares.cpp file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a766e19705
commit
02446fc99a
@ -1,5 +1,6 @@
|
||||
add_llvm_library(LLVMInstCombine
|
||||
InstructionCombining.cpp
|
||||
InstCombineCompares.cpp
|
||||
InstCombineSimplifyDemanded.cpp
|
||||
)
|
||||
|
||||
|
@ -32,6 +32,20 @@ enum SelectPatternFlavor {
|
||||
SPF_SMAX, SPF_UMAX
|
||||
//SPF_ABS - TODO.
|
||||
};
|
||||
|
||||
/// getComplexity: Assign a complexity or rank value to LLVM Values...
|
||||
/// 0 -> undef, 1 -> Const, 2 -> Other, 3 -> Arg, 3 -> Unary, 4 -> OtherInst
|
||||
static inline unsigned getComplexity(Value *V) {
|
||||
if (isa<Instruction>(V)) {
|
||||
if (BinaryOperator::isNeg(V) ||
|
||||
BinaryOperator::isFNeg(V) ||
|
||||
BinaryOperator::isNot(V))
|
||||
return 3;
|
||||
return 4;
|
||||
}
|
||||
if (isa<Argument>(V)) return 3;
|
||||
return isa<Constant>(V) ? (isa<UndefValue>(V) ? 0 : 1) : 2;
|
||||
}
|
||||
|
||||
|
||||
/// InstCombineIRInserter - This is an IRBuilder insertion helper that works
|
||||
@ -179,6 +193,8 @@ public:
|
||||
Instruction *visitInstruction(Instruction &I) { return 0; }
|
||||
|
||||
private:
|
||||
Value *dyn_castNegVal(Value *V) const;
|
||||
|
||||
Instruction *visitCallSite(CallSite CS);
|
||||
bool transformConstExprCastCall(CallSite CS);
|
||||
Instruction *transformCallThroughTrampoline(CallSite CS);
|
||||
@ -186,7 +202,7 @@ private:
|
||||
bool DoXform = true);
|
||||
bool WillNotOverflowSignedAdd(Value *LHS, Value *RHS);
|
||||
DbgDeclareInst *hasOneUsePlusDeclare(Value *V);
|
||||
|
||||
Value *EmitGEPOffset(User *GEP);
|
||||
|
||||
public:
|
||||
// InsertNewInstBefore - insert an instruction New before instruction Old
|
||||
|
2443
lib/Transforms/InstCombine/InstCombineCompares.cpp
Normal file
2443
lib/Transforms/InstCombine/InstCombineCompares.cpp
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user