00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef LLVM_ANALYSIS_INSTRUCTIONSIMPLIFY_H
00017 #define LLVM_ANALYSIS_INSTRUCTIONSIMPLIFY_H
00018
00019 namespace llvm {
00020 class Instruction;
00021 class Value;
00022 class TargetData;
00023
00026 Value *SimplifyAddInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW,
00027 const TargetData *TD = 0);
00028
00031 Value *SimplifyAndInst(Value *LHS, Value *RHS,
00032 const TargetData *TD = 0);
00033
00036 Value *SimplifyOrInst(Value *LHS, Value *RHS,
00037 const TargetData *TD = 0);
00038
00041 Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS,
00042 const TargetData *TD = 0);
00043
00046 Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
00047 const TargetData *TD = 0);
00048
00049
00052 Value *SimplifyGEPInst(Value * const *Ops, unsigned NumOps,
00053 const TargetData *TD = 0);
00054
00055
00056
00057
00060 Value *SimplifyCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
00061 const TargetData *TD = 0);
00062
00065 Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
00066 const TargetData *TD = 0);
00067
00070 Value *SimplifyInstruction(Instruction *I, const TargetData *TD = 0);
00071
00072
00079 void ReplaceAndSimplifyAllUses(Instruction *From, Value *To,
00080 const TargetData *TD = 0);
00081 }
00082
00083 #endif
00084