Lines Matching defs:Opcode
124 /// it into "(A op B) op' (A op C)". Here "op" is given by Opcode and "op'" is
128 static Value *ExpandBinOp(unsigned Opcode, Value *LHS, Value *RHS,
142 if (Value *L = SimplifyBinOp(Opcode, A, C, Q, MaxRecurse))
143 if (Value *R = SimplifyBinOp(Opcode, B, C, Q, MaxRecurse)) {
165 if (Value *L = SimplifyBinOp(Opcode, A, B, Q, MaxRecurse))
166 if (Value *R = SimplifyBinOp(Opcode, A, C, Q, MaxRecurse)) {
185 /// FactorizeBinOp - Simplify "LHS Opcode RHS" by factorizing out a common term
186 /// using the operation OpCodeToExtract. For example, when Opcode is Add and
189 static Value *FactorizeBinOp(unsigned Opcode, Value *LHS, Value *RHS,
215 if (Value *V = SimplifyBinOp(Opcode, B, DD, Q, MaxRecurse)) {
238 if (Value *V = SimplifyBinOp(Opcode, A, CC, Q, MaxRecurse)) {
261 Instruction::BinaryOps Opcode = (Instruction::BinaryOps)Opc;
262 assert(Instruction::isAssociative(Opcode) && "Not an associative operation!");
272 if (Op0 && Op0->getOpcode() == Opcode) {
278 if (Value *V = SimplifyBinOp(Opcode, B, C, Q, MaxRecurse)) {
283 if (Value *W = SimplifyBinOp(Opcode, A, V, Q, MaxRecurse)) {
291 if (Op1 && Op1->getOpcode() == Opcode) {
297 if (Value *V = SimplifyBinOp(Opcode, A, B, Q, MaxRecurse)) {
302 if (Value *W = SimplifyBinOp(Opcode, V, C, Q, MaxRecurse)) {
310 if (!Instruction::isCommutative(Opcode))
314 if (Op0 && Op0->getOpcode() == Opcode) {
320 if (Value *V = SimplifyBinOp(Opcode, C, A, Q, MaxRecurse)) {
325 if (Value *W = SimplifyBinOp(Opcode, V, B, Q, MaxRecurse)) {
333 if (Op1 && Op1->getOpcode() == Opcode) {
339 if (Value *V = SimplifyBinOp(Opcode, C, A, Q, MaxRecurse)) {
344 if (Value *W = SimplifyBinOp(Opcode, B, V, Q, MaxRecurse)) {
358 static Value *ThreadBinOpOverSelect(unsigned Opcode, Value *LHS, Value *RHS,
376 TV = SimplifyBinOp(Opcode, SI->getTrueValue(), RHS, Q, MaxRecurse);
377 FV = SimplifyBinOp(Opcode, SI->getFalseValue(), RHS, Q, MaxRecurse);
379 TV = SimplifyBinOp(Opcode, LHS, SI->getTrueValue(), Q, MaxRecurse);
380 FV = SimplifyBinOp(Opcode, LHS, SI->getFalseValue(), Q, MaxRecurse);
406 if (Simplified && Simplified->getOpcode() == Opcode) {
512 static Value *ThreadBinOpOverPHI(unsigned Opcode, Value *LHS, Value *RHS,
539 SimplifyBinOp(Opcode, Incoming, RHS, Q, MaxRecurse) :
540 SimplifyBinOp(Opcode, LHS, Incoming, Q, MaxRecurse);
962 static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
967 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
971 bool isSigned = Opcode == Instruction::SDiv;
1008 if (Div->getOpcode() == Opcode && Div->getOperand(1) == Y)
1020 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1026 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1085 static Value *SimplifyRem(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
1090 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
1125 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1131 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1190 static Value *SimplifyShift(unsigned Opcode, Value *Op0, Value *Op1,
1195 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
1220 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1226 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
2677 static Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2679 switch (Opcode) {
2707 return ConstantFoldInstOperands(Opcode, LHS->getType(), COps, Q.TD,
2712 if (Instruction::isAssociative(Opcode))
2713 if (Value *V = SimplifyAssociativeBinOp(Opcode, LHS, RHS, Q, MaxRecurse))
2719 if (Value *V = ThreadBinOpOverSelect(Opcode, LHS, RHS, Q, MaxRecurse))
2725 if (Value *V = ThreadBinOpOverPHI(Opcode, LHS, RHS, Q, MaxRecurse))
2732 Value *llvm::SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2735 return ::SimplifyBinOp(Opcode, LHS, RHS, Query (TD, TLI, DT), RecursionLimit);