Lines Matching defs:ComplexExprEmitter
46 class ComplexExprEmitter
47 : public StmtVisitor<ComplexExprEmitter, ComplexPairTy> {
55 ComplexExprEmitter(CodeGenFunction &cgf, bool ir = false, bool ii = false)
100 return StmtVisitor<ComplexExprEmitter, ComplexPairTy>::Visit(E);
270 ComplexPairTy (ComplexExprEmitter::*Func)
274 ComplexPairTy (ComplexExprEmitter::*Func)
363 return EmitCompoundAssign(E, &ComplexExprEmitter::EmitBinAdd);
366 return EmitCompoundAssign(E, &ComplexExprEmitter::EmitBinSub);
369 return EmitCompoundAssign(E, &ComplexExprEmitter::EmitBinMul);
372 return EmitCompoundAssign(E, &ComplexExprEmitter::EmitBinDiv);
424 ComplexPairTy ComplexExprEmitter::EmitLoadOfLValue(LValue lvalue,
450 void ComplexExprEmitter::EmitStoreOfComplex(ComplexPairTy Val, LValue lvalue,
470 ComplexPairTy ComplexExprEmitter::VisitExpr(Expr *E) {
478 ComplexPairTy ComplexExprEmitter::
485 ComplexPairTy ComplexExprEmitter::VisitCallExpr(const CallExpr *E) {
492 ComplexPairTy ComplexExprEmitter::VisitStmtExpr(const StmtExpr *E) {
501 ComplexPairTy ComplexExprEmitter::EmitComplexToComplexCast(ComplexPairTy Val,
519 ComplexPairTy ComplexExprEmitter::EmitScalarToComplexCast(llvm::Value *Val,
531 ComplexPairTy ComplexExprEmitter::EmitCast(CastKind CK, Expr *Op,
635 ComplexPairTy ComplexExprEmitter::VisitUnaryPlus(const UnaryOperator *E,
648 ComplexPairTy ComplexExprEmitter::VisitPlus(const UnaryOperator *E,
657 ComplexPairTy ComplexExprEmitter::VisitUnaryMinus(const UnaryOperator *E,
669 ComplexPairTy ComplexExprEmitter::VisitMinus(const UnaryOperator *E,
690 ComplexPairTy ComplexExprEmitter::VisitUnaryNot(const UnaryOperator *E) {
704 ComplexPairTy ComplexExprEmitter::EmitBinAdd(const BinOpInfo &Op) {
724 ComplexPairTy ComplexExprEmitter::EmitBinSub(const BinOpInfo &Op) {
745 ComplexPairTy ComplexExprEmitter::EmitComplexBinOpLibCall(StringRef LibCallName,
806 ComplexPairTy ComplexExprEmitter::EmitBinMul(const BinOpInfo &Op) {
909 ComplexPairTy ComplexExprEmitter::EmitAlgebraicDiv(llvm::Value *LHSr,
943 ComplexPairTy ComplexExprEmitter::EmitRangeReductionDiv(llvm::Value *LHSr,
1016 ComplexPairTy ComplexExprEmitter::EmitBinDiv(const BinOpInfo &Op) {
1124 ComplexPairTy ComplexExprEmitter::EmitPromoted(const Expr *E,
1159 return ComplexExprEmitter(*this).EmitPromoted(E, DstTy);
1163 ComplexExprEmitter::EmitPromotedComplexOperand(const Expr *E,
1182 ComplexExprEmitter::BinOpInfo
1183 ComplexExprEmitter::EmitBinOps(const BinaryOperator *E,
1200 LValue ComplexExprEmitter::
1202 ComplexPairTy (ComplexExprEmitter::*Func)(const BinOpInfo&),
1307 ComplexPairTy ComplexExprEmitter::
1309 ComplexPairTy (ComplexExprEmitter::*Func)(const BinOpInfo&)){
1324 LValue ComplexExprEmitter::EmitBinAssignLValue(const BinaryOperator *E,
1344 ComplexPairTy ComplexExprEmitter::VisitBinAssign(const BinaryOperator *E) {
1359 ComplexPairTy ComplexExprEmitter::VisitBinComma(const BinaryOperator *E) {
1364 ComplexPairTy ComplexExprEmitter::
1416 ComplexPairTy ComplexExprEmitter::VisitChooseExpr(ChooseExpr *E) {
1420 ComplexPairTy ComplexExprEmitter::VisitInitListExpr(InitListExpr *E) {
1444 ComplexPairTy ComplexExprEmitter::VisitVAArgExpr(VAArgExpr *E) {
1470 return ComplexExprEmitter(*this, IgnoreReal, IgnoreImag)
1478 ComplexExprEmitter Emitter(*this);
1486 ComplexExprEmitter(*this).EmitStoreOfComplex(V, dest, isInit);
1492 return ComplexExprEmitter(*this).EmitLoadOfLValue(src, loc);
1498 LValue LVal = ComplexExprEmitter(*this).EmitBinAssignLValue(E, Val);
1505 typedef ComplexPairTy (ComplexExprEmitter::*CompoundFunc)(
1506 const ComplexExprEmitter::BinOpInfo &);
1510 case BO_MulAssign: return &ComplexExprEmitter::EmitBinMul;
1511 case BO_DivAssign: return &ComplexExprEmitter::EmitBinDiv;
1512 case BO_SubAssign: return &ComplexExprEmitter::EmitBinSub;
1513 case BO_AddAssign: return &ComplexExprEmitter::EmitBinAdd;
1523 return ComplexExprEmitter(*this).EmitCompoundAssignLValue(E, Op, Val);
1531 LValue Ret = ComplexExprEmitter(*this).EmitCompoundAssignLValue(E, Op, Val);