Lines Matching refs:Op

176   ComplexPairTy EmitCast(CastKind CK, Expr *Op, QualType DestTy);
265 ComplexPairTy EmitBinAdd(const BinOpInfo &Op);
266 ComplexPairTy EmitBinSub(const BinOpInfo &Op);
267 ComplexPairTy EmitBinMul(const BinOpInfo &Op);
268 ComplexPairTy EmitBinDiv(const BinOpInfo &Op);
271 const BinOpInfo &Op);
456 ComplexPairTy ComplexExprEmitter::EmitCast(CastKind CK, Expr *Op, in EmitCast() argument
468 return Visit(Op); in EmitCast()
471 LValue origLV = CGF.EmitLValue(Op); in EmitCast()
474 return EmitLoadOfLValue(CGF.MakeAddrLValue(V, DestTy), Op->getExprLoc()); in EmitCast()
478 LValue SourceLVal = CGF.EmitLValue(Op); in EmitCast()
483 return EmitLoadOfLValue(DestLV, Op->getExprLoc()); in EmitCast()
541 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
542 return EmitScalarToComplexCast(CGF.EmitScalarExpr(Op), Op->getType(), in EmitCast()
543 DestTy, Op->getExprLoc()); in EmitCast()
550 CodeGenFunction::CGFPOptionsRAII FPOptsRAII(CGF, Op); in EmitCast()
551 return EmitComplexToComplexCast(Visit(Op), Op->getType(), DestTy, in EmitCast()
552 Op->getExprLoc()); in EmitCast()
562 ComplexPairTy Op = Visit(E->getSubExpr()); in VisitUnaryMinus() local
565 if (Op.first->getType()->isFloatingPointTy()) { in VisitUnaryMinus()
566 ResR = Builder.CreateFNeg(Op.first, "neg.r"); in VisitUnaryMinus()
567 ResI = Builder.CreateFNeg(Op.second, "neg.i"); in VisitUnaryMinus()
569 ResR = Builder.CreateNeg(Op.first, "neg.r"); in VisitUnaryMinus()
570 ResI = Builder.CreateNeg(Op.second, "neg.i"); in VisitUnaryMinus()
579 ComplexPairTy Op = Visit(E->getSubExpr()); in VisitUnaryNot() local
581 if (Op.second->getType()->isFloatingPointTy()) in VisitUnaryNot()
582 ResI = Builder.CreateFNeg(Op.second, "conj.i"); in VisitUnaryNot()
584 ResI = Builder.CreateNeg(Op.second, "conj.i"); in VisitUnaryNot()
586 return ComplexPairTy(Op.first, ResI); in VisitUnaryNot()
589 ComplexPairTy ComplexExprEmitter::EmitBinAdd(const BinOpInfo &Op) { in EmitBinAdd() argument
592 if (Op.LHS.first->getType()->isFloatingPointTy()) { in EmitBinAdd()
593 ResR = Builder.CreateFAdd(Op.LHS.first, Op.RHS.first, "add.r"); in EmitBinAdd()
594 if (Op.LHS.second && Op.RHS.second) in EmitBinAdd()
595 ResI = Builder.CreateFAdd(Op.LHS.second, Op.RHS.second, "add.i"); in EmitBinAdd()
597 ResI = Op.LHS.second ? Op.LHS.second : Op.RHS.second; in EmitBinAdd()
600 ResR = Builder.CreateAdd(Op.LHS.first, Op.RHS.first, "add.r"); in EmitBinAdd()
601 assert(Op.LHS.second && Op.RHS.second && in EmitBinAdd()
603 ResI = Builder.CreateAdd(Op.LHS.second, Op.RHS.second, "add.i"); in EmitBinAdd()
608 ComplexPairTy ComplexExprEmitter::EmitBinSub(const BinOpInfo &Op) { in EmitBinSub() argument
610 if (Op.LHS.first->getType()->isFloatingPointTy()) { in EmitBinSub()
611 ResR = Builder.CreateFSub(Op.LHS.first, Op.RHS.first, "sub.r"); in EmitBinSub()
612 if (Op.LHS.second && Op.RHS.second) in EmitBinSub()
613 ResI = Builder.CreateFSub(Op.LHS.second, Op.RHS.second, "sub.i"); in EmitBinSub()
615 ResI = Op.LHS.second ? Op.LHS.second in EmitBinSub()
616 : Builder.CreateFNeg(Op.RHS.second, "sub.i"); in EmitBinSub()
619 ResR = Builder.CreateSub(Op.LHS.first, Op.RHS.first, "sub.r"); in EmitBinSub()
620 assert(Op.LHS.second && Op.RHS.second && in EmitBinSub()
622 ResI = Builder.CreateSub(Op.LHS.second, Op.RHS.second, "sub.i"); in EmitBinSub()
629 const BinOpInfo &Op) { in EmitComplexBinOpLibCall() argument
631 Args.add(RValue::get(Op.LHS.first), in EmitComplexBinOpLibCall()
632 Op.Ty->castAs<ComplexType>()->getElementType()); in EmitComplexBinOpLibCall()
633 Args.add(RValue::get(Op.LHS.second), in EmitComplexBinOpLibCall()
634 Op.Ty->castAs<ComplexType>()->getElementType()); in EmitComplexBinOpLibCall()
635 Args.add(RValue::get(Op.RHS.first), in EmitComplexBinOpLibCall()
636 Op.Ty->castAs<ComplexType>()->getElementType()); in EmitComplexBinOpLibCall()
637 Args.add(RValue::get(Op.RHS.second), in EmitComplexBinOpLibCall()
638 Op.Ty->castAs<ComplexType>()->getElementType()); in EmitComplexBinOpLibCall()
650 4, Op.Ty->castAs<ComplexType>()->getElementType()); in EmitComplexBinOpLibCall()
651 QualType FQTy = CGF.getContext().getFunctionType(Op.Ty, ArgsQTys, EPI); in EmitComplexBinOpLibCall()
689 ComplexPairTy ComplexExprEmitter::EmitBinMul(const BinOpInfo &Op) { in EmitBinMul() argument
694 if (Op.LHS.first->getType()->isFloatingPointTy()) { in EmitBinMul()
703 if (Op.LHS.second && Op.RHS.second) { in EmitBinMul()
714 Value *AC = Builder.CreateFMul(Op.LHS.first, Op.RHS.first, "mul_ac"); in EmitBinMul()
715 Value *BD = Builder.CreateFMul(Op.LHS.second, Op.RHS.second, "mul_bd"); in EmitBinMul()
716 Value *AD = Builder.CreateFMul(Op.LHS.first, Op.RHS.second, "mul_ad"); in EmitBinMul()
717 Value *BC = Builder.CreateFMul(Op.LHS.second, Op.RHS.first, "mul_bc"); in EmitBinMul()
748 getComplexMultiplyLibCallName(Op.LHS.first->getType()), Op); in EmitBinMul()
764 assert((Op.LHS.second || Op.RHS.second) && in EmitBinMul()
770 ResR = Builder.CreateFMul(Op.LHS.first, Op.RHS.first, "mul.rl"); in EmitBinMul()
772 ResI = Op.LHS.second in EmitBinMul()
773 ? Builder.CreateFMul(Op.LHS.second, Op.RHS.first, "mul.il") in EmitBinMul()
774 : Builder.CreateFMul(Op.LHS.first, Op.RHS.second, "mul.ir"); in EmitBinMul()
776 assert(Op.LHS.second && Op.RHS.second && in EmitBinMul()
778 Value *ResRl = Builder.CreateMul(Op.LHS.first, Op.RHS.first, "mul.rl"); in EmitBinMul()
779 Value *ResRr = Builder.CreateMul(Op.LHS.second, Op.RHS.second, "mul.rr"); in EmitBinMul()
782 Value *ResIl = Builder.CreateMul(Op.LHS.second, Op.RHS.first, "mul.il"); in EmitBinMul()
783 Value *ResIr = Builder.CreateMul(Op.LHS.first, Op.RHS.second, "mul.ir"); in EmitBinMul()
791 ComplexPairTy ComplexExprEmitter::EmitBinDiv(const BinOpInfo &Op) { in EmitBinDiv() argument
792 llvm::Value *LHSr = Op.LHS.first, *LHSi = Op.LHS.second; in EmitBinDiv()
793 llvm::Value *RHSr = Op.RHS.first, *RHSi = Op.RHS.second; in EmitBinDiv()
805 BinOpInfo LibCallOp = Op; in EmitBinDiv()
852 assert(Op.LHS.second && Op.RHS.second && in EmitBinDiv()
867 if (Op.Ty->castAs<ComplexType>()->getElementType()->isUnsignedIntegerType()) { in EmitBinDiv()
1163 static CompoundFunc getComplexOp(BinaryOperatorKind Op) { in getComplexOp() argument
1164 switch (Op) { in getComplexOp()
1176 CompoundFunc Op = getComplexOp(E->getOpcode()); in EmitComplexCompoundAssignmentLValue() local
1178 return ComplexExprEmitter(*this).EmitCompoundAssignLValue(E, Op, Val); in EmitComplexCompoundAssignmentLValue()
1184 CompoundFunc Op = getComplexOp(E->getOpcode()); in EmitScalarCompoundAssignWithComplex() local
1186 LValue Ret = ComplexExprEmitter(*this).EmitCompoundAssignLValue(E, Op, Val); in EmitScalarCompoundAssignWithComplex()