Lines Matching refs:BO
145 bool ByteCodeExprGen<Emitter>::VisitBinaryOperator(const BinaryOperator *BO) { in VisitBinaryOperator() argument
146 const Expr *LHS = BO->getLHS(); in VisitBinaryOperator()
147 const Expr *RHS = BO->getRHS(); in VisitBinaryOperator()
150 switch (BO->getOpcode()) { in VisitBinaryOperator()
164 std::optional<PrimType> T = classify(BO->getType()); in VisitBinaryOperator()
166 return this->bail(BO); in VisitBinaryOperator()
169 auto Discard = [this, T, BO](bool Result) { in VisitBinaryOperator()
172 return DiscardResult ? this->emitPop(*T, BO) : true; in VisitBinaryOperator()
176 if (BO->getOpcode() == BO_Add || BO->getOpcode() == BO_Sub) { in VisitBinaryOperator()
178 return this->VisitPointerArithBinOp(BO); in VisitBinaryOperator()
184 switch (BO->getOpcode()) { in VisitBinaryOperator()
186 return Discard(this->emitEQ(*LT, BO)); in VisitBinaryOperator()
188 return Discard(this->emitNE(*LT, BO)); in VisitBinaryOperator()
190 return Discard(this->emitLT(*LT, BO)); in VisitBinaryOperator()
192 return Discard(this->emitLE(*LT, BO)); in VisitBinaryOperator()
194 return Discard(this->emitGT(*LT, BO)); in VisitBinaryOperator()
196 return Discard(this->emitGE(*LT, BO)); in VisitBinaryOperator()
198 return Discard(this->emitSub(*T, BO)); in VisitBinaryOperator()
200 return Discard(this->emitAdd(*T, BO)); in VisitBinaryOperator()
202 return Discard(this->emitMul(*T, BO)); in VisitBinaryOperator()
204 return Discard(this->emitRem(*T, BO)); in VisitBinaryOperator()
206 return Discard(this->emitDiv(*T, BO)); in VisitBinaryOperator()
209 return this->emitStorePop(*T, BO); in VisitBinaryOperator()
210 return this->emitStore(*T, BO); in VisitBinaryOperator()
212 return Discard(this->emitBitAnd(*T, BO)); in VisitBinaryOperator()
214 return Discard(this->emitBitOr(*T, BO)); in VisitBinaryOperator()
216 return Discard(this->emitShl(*LT, *RT, BO)); in VisitBinaryOperator()
218 return Discard(this->emitShr(*LT, *RT, BO)); in VisitBinaryOperator()
220 return Discard(this->emitBitXor(*T, BO)); in VisitBinaryOperator()
224 return this->bail(BO); in VisitBinaryOperator()