Lines Matching refs:Real
142 : Operation(Op), Real(R), Imag(I) {} in ComplexDeinterleavingCompositeNode()
151 Value *Real; member
185 PrintValue(Real); in dump()
297 if (Node->Real && Node->Imag) in submitCompositeNode()
298 CachedResult[{Node->Real, Node->Imag}] = Node; in submitCompositeNode()
313 NodePtr identifyPartialMul(Instruction *Real, Instruction *Imag);
329 NodePtr identifyAdd(Instruction *Real, Instruction *Imag);
330 NodePtr identifySymmetricOperation(Instruction *Real, Instruction *Imag);
378 NodePtr identifyDeinterleave(Instruction *Real, Instruction *Imag);
384 NodePtr identifySplat(Value *Real, Value *Imag);
386 NodePtr identifyPHINode(Instruction *Real, Instruction *Imag);
390 NodePtr identifySelectNode(Instruction *Real, Instruction *Imag);
550 Instruction *Real, Instruction *Imag, in identifyNodeWithImplicitAdd() argument
552 LLVM_DEBUG(dbgs() << "identifyNodeWithImplicitAdd " << *Real << " / " << *Imag in identifyNodeWithImplicitAdd()
555 if (!Real->hasOneUse() || !Imag->hasOneUse()) { in identifyNodeWithImplicitAdd()
560 if ((Real->getOpcode() != Instruction::FMul && in identifyNodeWithImplicitAdd()
561 Real->getOpcode() != Instruction::Mul) || in identifyNodeWithImplicitAdd()
569 Value *R0 = Real->getOperand(0); in identifyNodeWithImplicitAdd()
570 Value *R1 = Real->getOperand(1); in identifyNodeWithImplicitAdd()
644 ComplexDeinterleavingOperation::CMulPartial, Real, Imag); in identifyNodeWithImplicitAdd()
652 ComplexDeinterleavingGraph::identifyPartialMul(Instruction *Real, in identifyPartialMul() argument
654 LLVM_DEBUG(dbgs() << "identifyPartialMul " << *Real << " / " << *Imag in identifyPartialMul()
664 if (IsAdd(Real->getOpcode()) && IsAdd(Imag->getOpcode())) in identifyPartialMul()
666 else if (IsSub(Real->getOpcode()) && IsAdd(Imag->getOpcode())) in identifyPartialMul()
668 else if (IsSub(Real->getOpcode()) && IsSub(Imag->getOpcode())) in identifyPartialMul()
670 else if (IsAdd(Real->getOpcode()) && IsSub(Imag->getOpcode())) in identifyPartialMul()
677 if (isa<FPMathOperator>(Real) && in identifyPartialMul()
678 (!Real->getFastMathFlags().allowContract() || in identifyPartialMul()
684 Value *CR = Real->getOperand(0); in identifyPartialMul()
685 Instruction *RealMulI = dyn_cast<Instruction>(Real->getOperand(1)); in identifyPartialMul()
761 ComplexDeinterleavingOperation::CMulPartial, Real, Imag); in identifyPartialMul()
770 ComplexDeinterleavingGraph::identifyAdd(Instruction *Real, Instruction *Imag) { in identifyAdd() argument
771 LLVM_DEBUG(dbgs() << "identifyAdd " << *Real << " / " << *Imag << "\n"); in identifyAdd()
775 if ((Real->getOpcode() == Instruction::FSub && in identifyAdd()
777 (Real->getOpcode() == Instruction::Sub && in identifyAdd()
780 else if ((Real->getOpcode() == Instruction::FAdd && in identifyAdd()
782 (Real->getOpcode() == Instruction::Add && in identifyAdd()
790 auto *AR = dyn_cast<Instruction>(Real->getOperand(0)); in identifyAdd()
791 auto *BI = dyn_cast<Instruction>(Real->getOperand(1)); in identifyAdd()
812 prepareCompositeNode(ComplexDeinterleavingOperation::CAdd, Real, Imag); in identifyAdd()
852 ComplexDeinterleavingGraph::identifySymmetricOperation(Instruction *Real, in identifySymmetricOperation() argument
854 if (Real->getOpcode() != Imag->getOpcode()) in identifySymmetricOperation()
857 if (!isInstructionPotentiallySymmetric(Real) || in identifySymmetricOperation()
861 auto *R0 = Real->getOperand(0); in identifySymmetricOperation()
869 if (Real->isBinaryOp()) { in identifySymmetricOperation()
870 auto *R1 = Real->getOperand(1); in identifySymmetricOperation()
877 if (isa<FPMathOperator>(Real) && in identifySymmetricOperation()
878 Real->getFastMathFlags() != Imag->getFastMathFlags()) in identifySymmetricOperation()
882 Real, Imag); in identifySymmetricOperation()
883 Node->Opcode = Real->getOpcode(); in identifySymmetricOperation()
884 if (isa<FPMathOperator>(Real)) in identifySymmetricOperation()
885 Node->Flags = Real->getFastMathFlags(); in identifySymmetricOperation()
888 if (Real->isBinaryOp()) in identifySymmetricOperation()
909 auto *Real = dyn_cast<Instruction>(R); in identifyNode() local
911 if (!Real || !Imag) in identifyNode()
914 if (NodePtr CN = identifyDeinterleave(Real, Imag)) in identifyNode()
917 if (NodePtr CN = identifyPHINode(Real, Imag)) in identifyNode()
920 if (NodePtr CN = identifySelectNode(Real, Imag)) in identifyNode()
923 auto *VTy = cast<VectorType>(Real->getType()); in identifyNode()
931 if (HasCMulSupport && isInstructionPairMul(Real, Imag)) { in identifyNode()
932 if (NodePtr CN = identifyPartialMul(Real, Imag)) in identifyNode()
936 if (HasCAddSupport && isInstructionPairAdd(Real, Imag)) { in identifyNode()
937 if (NodePtr CN = identifyAdd(Real, Imag)) in identifyNode()
942 if (NodePtr CN = identifyReassocNodes(Real, Imag)) in identifyNode()
946 if (NodePtr CN = identifySymmetricOperation(Real, Imag)) in identifyNode()
955 ComplexDeinterleavingGraph::identifyReassocNodes(Instruction *Real, in identifyReassocNodes() argument
963 if (!IsOperationSupported(Real->getOpcode()) || in identifyReassocNodes()
968 if (isa<FPMathOperator>(Real)) { in identifyReassocNodes()
969 if (Real->getFastMathFlags() != Imag->getFastMathFlags()) { in identifyReassocNodes()
975 Flags = Real->getFastMathFlags(); in identifyReassocNodes()
1071 if (!Collect(Real, RealMuls, RealAddends) || in identifyReassocNodes()
1096 FinalNode->Real = Real; in identifyReassocNodes()
1106 auto FindCommonInstruction = [](const Product &Real, in collectPartialMuls()
1108 if (Real.Multiplicand == Imag.Multiplicand || in collectPartialMuls()
1109 Real.Multiplicand == Imag.Multiplier) in collectPartialMuls()
1110 return Real.Multiplicand; in collectPartialMuls()
1112 if (Real.Multiplier == Imag.Multiplicand || in collectPartialMuls()
1113 Real.Multiplier == Imag.Multiplier) in collectPartialMuls()
1114 return Real.Multiplier; in collectPartialMuls()
1220 auto IsMultiplicandReal = PMI.Common == NodeA->Real; in identifyMultiplications()
1262 dbgs().indent(4) << "X: " << *NodeA->Real << "\n"; in identifyMultiplications()
1264 dbgs().indent(4) << "U: " << *NodeB->Real << "\n"; in identifyMultiplications()
1434 auto *R = cast<Instruction>(RootNode->Real); in identifyNodes()
1528 auto *Real = OperationInstruction[i]; in identifyReductionNodes() local
1530 if (Real->getType() != Imag->getType()) in identifyReductionNodes()
1533 RealPHI = ReductionInfo[Real].first; in identifyReductionNodes()
1536 auto Node = identifyNode(Real, Imag); in identifyReductionNodes()
1538 std::swap(Real, Imag); in identifyReductionNodes()
1540 Node = identifyNode(Real, Imag); in identifyReductionNodes()
1548 << *Real << " / " << *Imag << "\n"); in identifyReductionNodes()
1552 ComplexDeinterleavingOperation::ReductionOperation, Real, Imag); in identifyReductionNodes()
1554 RootToNode[Real] = RootNode; in identifyReductionNodes()
1645 auto *Real = dyn_cast<Instruction>(Intrinsic->getOperand(0)); in identifyRoot() local
1647 if (!Real || !Imag) in identifyRoot()
1650 return identifyNode(Real, Imag); in identifyRoot()
1662 Instruction *Real; in identifyRoot() local
1664 if (!match(RootI, m_Shuffle(m_Instruction(Real), m_Instruction(Imag)))) in identifyRoot()
1667 return identifyNode(Real, Imag); in identifyRoot()
1671 ComplexDeinterleavingGraph::identifyDeinterleave(Instruction *Real, in identifyDeinterleave() argument
1675 if (match(Real, m_ExtractValue<0>(m_Instruction(I))) && in identifyDeinterleave()
1680 llvm::ComplexDeinterleavingOperation::Deinterleave, Real, Imag); in identifyDeinterleave()
1682 FinalInstructions.insert(Real); in identifyDeinterleave()
1687 auto *RealShuffle = dyn_cast<ShuffleVectorInst>(Real); in identifyDeinterleave()
1814 auto *Real = dyn_cast<Instruction>(R); in identifySplat() local
1816 if ((!Real && Imag) || (Real && !Imag)) in identifySplat()
1819 if (Real && Imag) { in identifySplat()
1821 if (Real->getParent() != Imag->getParent()) in identifySplat()
1824 FinalInstructions.insert(Real); in identifySplat()
1833 ComplexDeinterleavingGraph::identifyPHINode(Instruction *Real, in identifyPHINode() argument
1835 if (Real != RealPHI || Imag != ImagPHI) in identifyPHINode()
1840 ComplexDeinterleavingOperation::ReductionPHI, Real, Imag); in identifyPHINode()
1845 ComplexDeinterleavingGraph::identifySelectNode(Instruction *Real, in identifySelectNode() argument
1847 auto *SelectReal = dyn_cast<SelectInst>(Real); in identifySelectNode()
1854 if (!match(Real, m_Select(m_Instruction(MaskA), m_Instruction(AR), in identifySelectNode()
1875 ComplexDeinterleavingOperation::ReductionSelect, Real, Imag); in identifySelectNode()
1955 cast<VectorType>(Node->Real->getType())); in replaceNode()
1956 auto *R = dyn_cast<Instruction>(Node->Real); in replaceNode()
1963 NewTy, {Node->Real, Node->Imag}); in replaceNode()
1966 Intrinsic::vector_interleave2, NewTy, {Node->Real, Node->Imag}); in replaceNode()
1973 auto *VTy = cast<VectorType>(Node->Real->getType()); in replaceNode()
1976 OldToNewPHI[dyn_cast<PHINode>(Node->Real)] = NewPHI; in replaceNode()
1985 auto *MaskReal = cast<Instruction>(Node->Real)->getOperand(0); in replaceNode()
2006 auto *Real = cast<Instruction>(Node->Real); in processReductionOperation() local
2008 auto *OldPHIReal = ReductionInfo[Real].first; in processReductionOperation()
2012 auto *VTy = cast<VectorType>(Real->getType()); in processReductionOperation()
2028 auto *FinalReductionReal = ReductionInfo[Real].second; in processReductionOperation()
2038 FinalReductionReal->replaceUsesOfWith(Real, NewReal); in processReductionOperation()
2059 auto *RootReal = cast<Instruction>(RootNode->Real); in replaceNodes()