Lines Matching full: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);
1063 static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
1068 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
1072 bool isSigned = Opcode == Instruction::SDiv;
1109 if (Div->getOpcode() == Opcode && Div->getOperand(1) == Y)
1121 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1127 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1186 static Value *SimplifyRem(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
1191 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
1226 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1232 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1291 static Value *SimplifyShift(unsigned Opcode, Value *Op0, Value *Op1,
1296 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.TD, Q.TLI);
1321 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1327 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
2853 static Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2855 switch (Opcode) {
2891 return ConstantFoldInstOperands(Opcode, LHS->getType(), COps, Q.TD,
2896 if (Instruction::isAssociative(Opcode))
2897 if (Value *V = SimplifyAssociativeBinOp(Opcode, LHS, RHS, Q, MaxRecurse))
2903 if (Value *V = ThreadBinOpOverSelect(Opcode, LHS, RHS, Q, MaxRecurse))
2909 if (Value *V = ThreadBinOpOverPHI(Opcode, LHS, RHS, Q, MaxRecurse))
2916 Value *llvm::SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
2919 return ::SimplifyBinOp(Opcode, LHS, RHS, Query (TD, TLI, DT), RecursionLimit);