Lines Matching defs:Opcode
135 /// it into "(A op B) op' (A op C)". Here "op" is given by Opcode and "op'" is
139 static Value *ExpandBinOp(unsigned Opcode, Value *LHS, Value *RHS,
153 if (Value *L = SimplifyBinOp(Opcode, A, C, Q, MaxRecurse))
154 if (Value *R = SimplifyBinOp(Opcode, B, C, Q, MaxRecurse)) {
176 if (Value *L = SimplifyBinOp(Opcode, A, B, Q, MaxRecurse))
177 if (Value *R = SimplifyBinOp(Opcode, A, C, Q, MaxRecurse)) {
200 Instruction::BinaryOps Opcode = (Instruction::BinaryOps)Opc;
201 assert(Instruction::isAssociative(Opcode) && "Not an associative operation!");
211 if (Op0 && Op0->getOpcode() == Opcode) {
217 if (Value *V = SimplifyBinOp(Opcode, B, C, Q, MaxRecurse)) {
222 if (Value *W = SimplifyBinOp(Opcode, A, V, Q, MaxRecurse)) {
230 if (Op1 && Op1->getOpcode() == Opcode) {
236 if (Value *V = SimplifyBinOp(Opcode, A, B, Q, MaxRecurse)) {
241 if (Value *W = SimplifyBinOp(Opcode, V, C, Q, MaxRecurse)) {
249 if (!Instruction::isCommutative(Opcode))
253 if (Op0 && Op0->getOpcode() == Opcode) {
259 if (Value *V = SimplifyBinOp(Opcode, C, A, Q, MaxRecurse)) {
264 if (Value *W = SimplifyBinOp(Opcode, V, B, Q, MaxRecurse)) {
272 if (Op1 && Op1->getOpcode() == Opcode) {
278 if (Value *V = SimplifyBinOp(Opcode, C, A, Q, MaxRecurse)) {
283 if (Value *W = SimplifyBinOp(Opcode, B, V, Q, MaxRecurse)) {
297 static Value *ThreadBinOpOverSelect(unsigned Opcode, Value *LHS, Value *RHS,
315 TV = SimplifyBinOp(Opcode, SI->getTrueValue(), RHS, Q, MaxRecurse);
316 FV = SimplifyBinOp(Opcode, SI->getFalseValue(), RHS, Q, MaxRecurse);
318 TV = SimplifyBinOp(Opcode, LHS, SI->getTrueValue(), Q, MaxRecurse);
319 FV = SimplifyBinOp(Opcode, LHS, SI->getFalseValue(), Q, MaxRecurse);
345 if (Simplified && Simplified->getOpcode() == Opcode) {
451 static Value *ThreadBinOpOverPHI(unsigned Opcode, Value *LHS, Value *RHS,
477 SimplifyBinOp(Opcode, Incoming, RHS, Q, MaxRecurse) :
478 SimplifyBinOp(Opcode, LHS, Incoming, Q, MaxRecurse);
994 static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
999 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.DL, Q.TLI);
1003 bool isSigned = Opcode == Instruction::SDiv;
1044 if (Div->getOpcode() == Opcode && Div->getOperand(1) == Y)
1066 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1072 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1159 static Value *SimplifyRem(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
1164 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.DL, Q.TLI);
1197 if ((Opcode == Instruction::SRem &&
1199 (Opcode == Instruction::URem &&
1206 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1212 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1311 static Value *SimplifyShift(unsigned Opcode, Value *Op0, Value *Op1,
1316 return ConstantFoldInstOperands(Opcode, C0->getType(), Ops, Q.DL, Q.TLI);
1335 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1341 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1349 static Value *SimplifyRightShift(unsigned Opcode, Value *Op0, Value *Op1,
1352 if (Value *V = SimplifyShift(Opcode, Op0, Op1, Q, MaxRecurse))
3701 static Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
3703 switch (Opcode) {
3741 return ConstantFoldInstOperands(Opcode, LHS->getType(), COps, Q.DL,
3746 if (Instruction::isAssociative(Opcode))
3747 if (Value *V = SimplifyAssociativeBinOp(Opcode, LHS, RHS, Q, MaxRecurse))
3753 if (Value *V = ThreadBinOpOverSelect(Opcode, LHS, RHS, Q, MaxRecurse))
3759 if (Value *V = ThreadBinOpOverPHI(Opcode, LHS, RHS, Q, MaxRecurse))
3770 static Value *SimplifyFPBinOp(unsigned Opcode, Value *LHS, Value *RHS,
3773 switch (Opcode) {
3781 return SimplifyBinOp(Opcode, LHS, RHS, Q, MaxRecurse);
3785 Value *llvm::SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
3789 return ::SimplifyBinOp(Opcode, LHS, RHS, Query(DL, TLI, DT, AC, CxtI),
3793 Value *llvm::SimplifyFPBinOp(unsigned Opcode, Value *LHS, Value *RHS,
3798 return ::SimplifyFPBinOp(Opcode, LHS, RHS, FMF, Query(DL, TLI, DT, AC, CxtI),