Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Opcode

92 /// it into "(A op B) op' (A op C)".  Here "op" is given by Opcode and "op'" is
96 static Value *ExpandBinOp(unsigned Opcode, Value *LHS, Value *RHS,
110 if (Value *L = SimplifyBinOp(Opcode, A, C, TD, DT, MaxRecurse))
111 if (Value *R = SimplifyBinOp(Opcode, B, C, TD, DT, MaxRecurse)) {
134 if (Value *L = SimplifyBinOp(Opcode, A, B, TD, DT, MaxRecurse))
135 if (Value *R = SimplifyBinOp(Opcode, A, C, TD, DT, MaxRecurse)) {
155 /// FactorizeBinOp - Simplify "LHS Opcode RHS" by factorizing out a common term
156 /// using the operation OpCodeToExtract. For example, when Opcode is Add and
159 static Value *FactorizeBinOp(unsigned Opcode, Value *LHS, Value *RHS,
185 if (Value *V = SimplifyBinOp(Opcode, B, DD, TD, DT, MaxRecurse)) {
208 if (Value *V = SimplifyBinOp(Opcode, A, CC, TD, DT, MaxRecurse)) {
233 Instruction::BinaryOps Opcode = (Instruction::BinaryOps)Opc;
234 assert(Instruction::isAssociative(Opcode) && "Not an associative operation!");
244 if (Op0 && Op0->getOpcode() == Opcode) {
250 if (Value *V = SimplifyBinOp(Opcode, B, C, TD, DT, MaxRecurse)) {
255 if (Value *W = SimplifyBinOp(Opcode, A, V, TD, DT, MaxRecurse)) {
263 if (Op1 && Op1->getOpcode() == Opcode) {
269 if (Value *V = SimplifyBinOp(Opcode, A, B, TD, DT, MaxRecurse)) {
274 if (Value *W = SimplifyBinOp(Opcode, V, C, TD, DT, MaxRecurse)) {
282 if (!Instruction::isCommutative(Opcode))
286 if (Op0 && Op0->getOpcode() == Opcode) {
292 if (Value *V = SimplifyBinOp(Opcode, C, A, TD, DT, MaxRecurse)) {
297 if (Value *W = SimplifyBinOp(Opcode, V, B, TD, DT, MaxRecurse)) {
305 if (Op1 && Op1->getOpcode() == Opcode) {
311 if (Value *V = SimplifyBinOp(Opcode, C, A, TD, DT, MaxRecurse)) {
316 if (Value *W = SimplifyBinOp(Opcode, B, V, TD, DT, MaxRecurse)) {
330 static Value *ThreadBinOpOverSelect(unsigned Opcode, Value *LHS, Value *RHS,
350 TV = SimplifyBinOp(Opcode, SI->getTrueValue(), RHS, TD, DT, MaxRecurse);
351 FV = SimplifyBinOp(Opcode, SI->getFalseValue(), RHS, TD, DT, MaxRecurse);
353 TV = SimplifyBinOp(Opcode, LHS, SI->getTrueValue(), TD, DT, MaxRecurse);
354 FV = SimplifyBinOp(Opcode, LHS, SI->getFalseValue(), TD, DT, MaxRecurse);
380 if (Simplified && Simplified->getOpcode() == Opcode) {
460 static Value *ThreadBinOpOverPHI(unsigned Opcode, Value *LHS, Value *RHS,
488 SimplifyBinOp(Opcode, Incoming, RHS, TD, DT, MaxRecurse) :
489 SimplifyBinOp(Opcode, LHS, Incoming, TD, DT, MaxRecurse);
805 static Value *SimplifyDiv(Instruction::BinaryOps Opcode
811 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, TD);
815 bool isSigned = Opcode == Instruction::SDiv;
852 if (Div->getOpcode() == Opcode && Div->getOperand(1) == Y)
864 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, TD, DT, MaxRecurse))
870 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, TD, DT, MaxRecurse))
926 static Value *SimplifyRem(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
932 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, TD);
967 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, TD, DT, MaxRecurse))
973 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, TD, DT, MaxRecurse))
1029 static Value *SimplifyShift(unsigned Opcode, Value *Op0, Value *Op1,
1035 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, TD);
1060 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, TD, DT, MaxRecurse))
1066 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, TD, DT, MaxRecurse))
2342 static Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2345 switch (Opcode) {
2373 return ConstantFoldInstOperands(Opcode, LHS->getType(), COps, TD);
2377 if (Instruction::isAssociative(Opcode))
2378 if (Value *V = SimplifyAssociativeBinOp(Opcode, LHS, RHS, TD, DT,
2385 if (Value *V = ThreadBinOpOverSelect(Opcode, LHS, RHS, TD, DT,
2392 if (Value *V = ThreadBinOpOverPHI(Opcode, LHS, RHS, TD, DT, MaxRecurse))
2399 Value *llvm::SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2401 return ::SimplifyBinOp(Opcode, LHS, RHS, TD, DT, RecursionLimit);