Lines Matching refs:SDNode
67 std::vector<SDNode*> WorkList;
76 void AddUsersToWorkList(SDNode *N) { in AddUsersToWorkList()
77 for (SDNode::use_iterator UI = N->use_begin(), UE = N->use_end(); in AddUsersToWorkList()
84 SDValue visit(SDNode *N);
89 void AddToWorkList(SDNode *N) { in AddToWorkList()
96 void removeFromWorkList(SDNode *N) { in removeFromWorkList()
101 SDValue CombineTo(SDNode *N, const SDValue *To, unsigned NumTo,
104 SDValue CombineTo(SDNode *N, SDValue Res, bool AddTo = true) { in CombineTo()
108 SDValue CombineTo(SDNode *N, SDValue Res0, SDValue Res1, in CombineTo()
129 bool CombineToPreIndexedLoadStore(SDNode *N);
130 bool CombineToPostIndexedLoadStore(SDNode *N);
132 void ReplaceLoadWithPromotedLoad(SDNode *Load, SDNode *ExtLoad);
141 void ExtendSetCCUses(SmallVector<SDNode*, 4> SetCCs,
148 SDValue combine(SDNode *N);
157 SDValue visitTokenFactor(SDNode *N);
158 SDValue visitMERGE_VALUES(SDNode *N);
159 SDValue visitADD(SDNode *N);
160 SDValue visitSUB(SDNode *N);
161 SDValue visitADDC(SDNode *N);
162 SDValue visitADDE(SDNode *N);
163 SDValue visitMUL(SDNode *N);
164 SDValue visitSDIV(SDNode *N);
165 SDValue visitUDIV(SDNode *N);
166 SDValue visitSREM(SDNode *N);
167 SDValue visitUREM(SDNode *N);
168 SDValue visitMULHU(SDNode *N);
169 SDValue visitMULHS(SDNode *N);
170 SDValue visitSMUL_LOHI(SDNode *N);
171 SDValue visitUMUL_LOHI(SDNode *N);
172 SDValue visitSMULO(SDNode *N);
173 SDValue visitUMULO(SDNode *N);
174 SDValue visitSDIVREM(SDNode *N);
175 SDValue visitUDIVREM(SDNode *N);
176 SDValue visitAND(SDNode *N);
177 SDValue visitOR(SDNode *N);
178 SDValue visitXOR(SDNode *N);
179 SDValue SimplifyVBinOp(SDNode *N);
180 SDValue visitSHL(SDNode *N);
181 SDValue visitSRA(SDNode *N);
182 SDValue visitSRL(SDNode *N);
183 SDValue visitCTLZ(SDNode *N);
184 SDValue visitCTTZ(SDNode *N);
185 SDValue visitCTPOP(SDNode *N);
186 SDValue visitSELECT(SDNode *N);
187 SDValue visitSELECT_CC(SDNode *N);
188 SDValue visitSETCC(SDNode *N);
189 SDValue visitSIGN_EXTEND(SDNode *N);
190 SDValue visitZERO_EXTEND(SDNode *N);
191 SDValue visitANY_EXTEND(SDNode *N);
192 SDValue visitSIGN_EXTEND_INREG(SDNode *N);
193 SDValue visitTRUNCATE(SDNode *N);
194 SDValue visitBITCAST(SDNode *N);
195 SDValue visitBUILD_PAIR(SDNode *N);
196 SDValue visitFADD(SDNode *N);
197 SDValue visitFSUB(SDNode *N);
198 SDValue visitFMUL(SDNode *N);
199 SDValue visitFDIV(SDNode *N);
200 SDValue visitFREM(SDNode *N);
201 SDValue visitFCOPYSIGN(SDNode *N);
202 SDValue visitSINT_TO_FP(SDNode *N);
203 SDValue visitUINT_TO_FP(SDNode *N);
204 SDValue visitFP_TO_SINT(SDNode *N);
205 SDValue visitFP_TO_UINT(SDNode *N);
206 SDValue visitFP_ROUND(SDNode *N);
207 SDValue visitFP_ROUND_INREG(SDNode *N);
208 SDValue visitFP_EXTEND(SDNode *N);
209 SDValue visitFNEG(SDNode *N);
210 SDValue visitFABS(SDNode *N);
211 SDValue visitBRCOND(SDNode *N);
212 SDValue visitBR_CC(SDNode *N);
213 SDValue visitLOAD(SDNode *N);
214 SDValue visitSTORE(SDNode *N);
215 SDValue visitINSERT_VECTOR_ELT(SDNode *N);
216 SDValue visitEXTRACT_VECTOR_ELT(SDNode *N);
217 SDValue visitBUILD_VECTOR(SDNode *N);
218 SDValue visitCONCAT_VECTORS(SDNode *N);
219 SDValue visitVECTOR_SHUFFLE(SDNode *N);
220 SDValue visitMEMBARRIER(SDNode *N);
222 SDValue XformToShuffleWithZero(SDNode *N);
225 SDValue visitShiftByConstant(SDNode *N, unsigned Amt);
227 bool SimplifySelectOps(SDNode *SELECT, SDValue LHS, SDValue RHS);
228 SDValue SimplifyBinOpWithSameOpcodeHands(SDNode *N);
235 SDValue SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp,
237 SDValue CombineConsecutiveLoads(SDNode *N, EVT VT);
238 SDValue ConstantFoldBITCASTofBUILD_VECTOR(SDNode *, EVT);
239 SDValue BuildSDIV(SDNode *N);
240 SDValue BuildUDIV(SDNode *N);
241 SDValue MatchBSwapHWordLow(SDNode *N, SDValue N0, SDValue N1,
243 SDValue MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1);
244 SDNode *MatchRotate(SDValue LHS, SDValue RHS, DebugLoc DL);
245 SDValue ReduceLoadWidth(SDNode *N);
246 SDValue ReduceLoadOpStoreWidth(SDNode *N);
247 SDValue TransformFPLoadStorePair(SDNode *N);
253 void GatherAllAliases(SDNode *N, SDValue OriginalChain,
269 bool FindAliasInfo(SDNode *N,
277 SDValue FindBetterChain(SDNode *N, SDValue Chain);
313 virtual void NodeDeleted(SDNode *N, SDNode *E) { in NodeDeleted()
317 virtual void NodeUpdated(SDNode *N) { in NodeUpdated()
327 void TargetLowering::DAGCombinerInfo::AddToWorklist(SDNode *N) { in AddToWorklist()
331 void TargetLowering::DAGCombinerInfo::RemoveFromWorklist(SDNode *N) { in RemoveFromWorklist()
336 CombineTo(SDNode *N, const std::vector<SDValue> &To, bool AddTo) { in CombineTo()
341 CombineTo(SDNode *N, SDValue Res, bool AddTo) { in CombineTo()
347 CombineTo(SDNode *N, SDValue Res0, SDValue Res1, bool AddTo) { in CombineTo()
572 SDValue DAGCombiner::CombineTo(SDNode *N, const SDValue *To, unsigned NumTo, in CombineTo()
663 void DAGCombiner::ReplaceLoadWithPromotedLoad(SDNode *Load, SDNode *ExtLoad) { in ReplaceLoadWithPromotedLoad()
908 SDNode *N = Op.getNode(); in PromoteLoad()
967 SDNode *N = WorkList.back(); in Run()
1044 SDValue DAGCombiner::visit(SDNode *N) { in visit()
1114 SDValue DAGCombiner::combine(SDNode *N) { in combine()
1173 SDNode *CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(), in combine()
1185 static SDValue getInputChainForNode(SDNode *N) { in getInputChainForNode()
1198 SDValue DAGCombiner::visitTokenFactor(SDNode *N) { in visitTokenFactor()
1208 SmallVector<SDNode *, 8> TFs; // List of token factors to visit. in visitTokenFactor()
1210 SmallPtrSet<SDNode*, 16> SeenOps; in visitTokenFactor()
1219 SDNode *TF = TFs[i]; in visitTokenFactor()
1276 SDValue DAGCombiner::visitMERGE_VALUES(SDNode *N) { in visitMERGE_VALUES()
1313 SDValue DAGCombiner::visitADD(SDNode *N) { in visitADD()
1479 SDValue DAGCombiner::visitADDC(SDNode *N) { in visitADDC()
1522 SDValue DAGCombiner::visitADDE(SDNode *N) { in visitADDE()
1564 SDValue DAGCombiner::visitSUB(SDNode *N) { in visitSUB()
1652 SDValue DAGCombiner::visitMUL(SDNode *N) { in visitMUL()
1746 SDValue DAGCombiner::visitSDIV(SDNode *N) { in visitSDIV()
1833 SDValue DAGCombiner::visitUDIV(SDNode *N) { in visitUDIV()
1885 SDValue DAGCombiner::visitSREM(SDNode *N) { in visitSREM()
1927 SDValue DAGCombiner::visitUREM(SDNode *N) { in visitUREM()
1980 SDValue DAGCombiner::visitMULHS(SDNode *N) { in visitMULHS()
2018 SDValue DAGCombiner::visitMULHU(SDNode *N) { in visitMULHU()
2058 SDValue DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp, in SimplifyNodeWithTwoResults()
2110 SDValue DAGCombiner::visitSMUL_LOHI(SDNode *N) { in visitSMUL_LOHI()
2140 SDValue DAGCombiner::visitUMUL_LOHI(SDNode *N) { in visitUMUL_LOHI()
2170 SDValue DAGCombiner::visitSMULO(SDNode *N) { in visitSMULO()
2180 SDValue DAGCombiner::visitUMULO(SDNode *N) { in visitUMULO()
2190 SDValue DAGCombiner::visitSDIVREM(SDNode *N) { in visitSDIVREM()
2197 SDValue DAGCombiner::visitUDIVREM(SDNode *N) { in visitUDIVREM()
2206 SDValue DAGCombiner::SimplifyBinOpWithSameOpcodeHands(SDNode *N) { in SimplifyBinOpWithSameOpcodeHands()
2260 SDValue DAGCombiner::visitAND(SDNode *N) { in visitAND()
2496 SDValue DAGCombiner::MatchBSwapHWordLow(SDNode *N, SDValue N0, SDValue N1, in MatchBSwapHWordLow()
2593 static bool isBSwapHWordElement(SDValue N, SmallVector<SDNode*,4> &Parts) { in isBSwapHWordElement() argument
2663 SDValue DAGCombiner::MatchBSwapHWord(SDNode *N, SDValue N0, SDValue N1) { in MatchBSwapHWord()
2673 SmallVector<SDNode*,4> Parts(4, (SDNode*)0); in MatchBSwapHWord()
2732 SDValue DAGCombiner::visitOR(SDNode *N) { in visitOR()
2862 if (SDNode *Rot = MatchRotate(N0, N1, N->getDebugLoc())) in visitOR()
2895 SDNode *DAGCombiner::MatchRotate(SDValue LHS, SDValue RHS, DebugLoc DL) { in MatchRotate()
3052 SDValue DAGCombiner::visitXOR(SDNode *N) { in visitXOR()
3175 SDValue DAGCombiner::visitShiftByConstant(SDNode *N, unsigned Amt) { in visitShiftByConstant()
3176 SDNode *LHS = N->getOperand(0).getNode(); in visitShiftByConstant()
3210 SDNode *BinOpLHSVal = LHS->getOperand(0).getNode(); in visitShiftByConstant()
3243 SDValue DAGCombiner::visitSHL(SDNode *N) { in visitSHL()
3371 SDValue DAGCombiner::visitSRA(SDNode *N) { in visitSRA()
3516 SDValue DAGCombiner::visitSRL(SDNode *N) { in visitSRL()
3696 SDNode *Use = *N->use_begin(); in visitSRL()
3710 SDValue DAGCombiner::visitCTLZ(SDNode *N) { in visitCTLZ()
3720 SDValue DAGCombiner::visitCTTZ(SDNode *N) { in visitCTTZ()
3730 SDValue DAGCombiner::visitCTPOP(SDNode *N) { in visitCTPOP()
3740 SDValue DAGCombiner::visitSELECT(SDNode *N) { in visitSELECT()
3824 SDValue DAGCombiner::visitSELECT_CC(SDNode *N) { in visitSELECT_CC()
3862 SDValue DAGCombiner::visitSETCC(SDNode *N) { in visitSETCC()
3872 static bool ExtendUsesToFormExtLoad(SDNode *N, SDValue N0, in ExtendUsesToFormExtLoad()
3874 SmallVector<SDNode*, 4> &ExtendNodes, in ExtendUsesToFormExtLoad() argument
3878 for (SDNode::use_iterator UI = N0.getNode()->use_begin(), in ExtendUsesToFormExtLoad()
3881 SDNode *User = *UI; in ExtendUsesToFormExtLoad()
3916 for (SDNode::use_iterator UI = N->use_begin(), UE = N->use_end(); in ExtendUsesToFormExtLoad()
3932 void DAGCombiner::ExtendSetCCUses(SmallVector<SDNode*, 4> SetCCs, in ExtendSetCCUses() argument
3937 SDNode *SetCC = SetCCs[i]; in ExtendSetCCUses()
3954 SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) { in visitSIGN_EXTEND()
3973 SDNode* oye = N0.getNode()->getOperand(0).getNode(); in visitSIGN_EXTEND()
4027 SmallVector<SDNode*, 4> SetCCs; in visitSIGN_EXTEND()
4082 SmallVector<SDNode*, 4> SetCCs; in visitSIGN_EXTEND()
4169 SDValue DAGCombiner::visitZERO_EXTEND(SDNode *N) { in visitZERO_EXTEND()
4187 SDNode* oye = N0.getNode()->getOperand(0).getNode(); in visitZERO_EXTEND()
4205 SDNode* oye = N0.getNode()->getOperand(0).getNode(); in visitZERO_EXTEND()
4252 SmallVector<SDNode*, 4> SetCCs; in visitZERO_EXTEND()
4285 SmallVector<SDNode*, 4> SetCCs; in visitZERO_EXTEND()
4415 SDValue DAGCombiner::visitANY_EXTEND(SDNode *N) { in visitANY_EXTEND()
4435 SDNode* oye = N0.getNode()->getOperand(0).getNode(); in visitANY_EXTEND()
4482 SmallVector<SDNode*, 4> SetCCs; in visitANY_EXTEND()
4607 SDValue DAGCombiner::ReduceLoadWidth(SDNode *N) { in ReduceLoadWidth()
4738 SDValue DAGCombiner::visitSIGN_EXTEND_INREG(SDNode *N) { in visitSIGN_EXTEND_INREG()
4848 SDValue DAGCombiner::visitTRUNCATE(SDNode *N) { in visitTRUNCATE()
4906 static SDNode *getBuildPairElt(SDNode *N, unsigned i) { in getBuildPairElt()
4915 SDValue DAGCombiner::CombineConsecutiveLoads(SDNode *N, EVT VT) { in CombineConsecutiveLoads()
4947 SDValue DAGCombiner::visitBITCAST(SDNode *N) { in visitBITCAST()
5094 SDValue DAGCombiner::visitBUILD_PAIR(SDNode *N) { in visitBUILD_PAIR()
5103 ConstantFoldBITCASTofBUILD_VECTOR(SDNode *BV, EVT DstEltVT) { in ConstantFoldBITCASTofBUILD_VECTOR()
5157 SDNode *Tmp = ConstantFoldBITCASTofBUILD_VECTOR(BV, TmpVT).getNode(); in ConstantFoldBITCASTofBUILD_VECTOR()
5234 SDValue DAGCombiner::visitFADD(SDNode *N) { in visitFADD()
5275 SDValue DAGCombiner::visitFSUB(SDNode *N) { in visitFSUB()
5309 SDValue DAGCombiner::visitFMUL(SDNode *N) { in visitFMUL()
5364 SDValue DAGCombiner::visitFDIV(SDNode *N) { in visitFDIV()
5397 SDValue DAGCombiner::visitFREM(SDNode *N) { in visitFREM()
5411 SDValue DAGCombiner::visitFCOPYSIGN(SDNode *N) { in visitFCOPYSIGN()
5461 SDValue DAGCombiner::visitSINT_TO_FP(SDNode *N) { in visitSINT_TO_FP()
5486 SDValue DAGCombiner::visitUINT_TO_FP(SDNode *N) { in visitUINT_TO_FP()
5511 SDValue DAGCombiner::visitFP_TO_SINT(SDNode *N) { in visitFP_TO_SINT()
5523 SDValue DAGCombiner::visitFP_TO_UINT(SDNode *N) { in visitFP_TO_UINT()
5535 SDValue DAGCombiner::visitFP_ROUND(SDNode *N) { in visitFP_ROUND()
5570 SDValue DAGCombiner::visitFP_ROUND_INREG(SDNode *N) { in visitFP_ROUND_INREG()
5585 SDValue DAGCombiner::visitFP_EXTEND(SDNode *N) { in visitFP_EXTEND()
5633 SDValue DAGCombiner::visitFNEG(SDNode *N) { in visitFNEG()
5660 SDValue DAGCombiner::visitFABS(SDNode *N) { in visitFABS()
5695 SDValue DAGCombiner::visitBRCOND(SDNode *N) { in visitBRCOND()
5719 SDNode *Trunc = 0; in visitBRCOND()
5789 SDNode *TheXor = N1.getNode(); in visitBRCOND()
5841 SDValue DAGCombiner::visitBR_CC(SDNode *N) { in visitBR_CC()
5873 bool DAGCombiner::CombineToPreIndexedLoadStore(SDNode *N) { in CombineToPreIndexedLoadStore()
5942 SmallPtrSet<const SDNode *, 32> Visited; in CombineToPreIndexedLoadStore()
5943 SmallVector<const SDNode *, 16> Worklist; in CombineToPreIndexedLoadStore()
5945 for (SDNode::use_iterator I = Ptr.getNode()->use_begin(), in CombineToPreIndexedLoadStore()
5947 SDNode *Use = *I; in CombineToPreIndexedLoadStore()
6005 bool DAGCombiner::CombineToPostIndexedLoadStore(SDNode *N) { in CombineToPostIndexedLoadStore()
6036 for (SDNode::use_iterator I = Ptr.getNode()->use_begin(), in CombineToPostIndexedLoadStore()
6038 SDNode *Op = *I; in CombineToPostIndexedLoadStore()
6063 for (SDNode::use_iterator II = BasePtr.getNode()->use_begin(), in CombineToPostIndexedLoadStore()
6065 SDNode *Use = *II; in CombineToPostIndexedLoadStore()
6073 for (SDNode::use_iterator III = Use->use_begin(), in CombineToPostIndexedLoadStore()
6075 SDNode *UseUse = *III; in CombineToPostIndexedLoadStore()
6135 SDValue DAGCombiner::visitLOAD(SDNode *N) { in visitLOAD()
6338 static SDNode *
6396 SDValue DAGCombiner::ReduceLoadOpStoreWidth(SDNode *N) { in ReduceLoadOpStoreWidth()
6420 if (SDNode *NewST = ShrinkLoadReplaceStoreWithStore(MaskedLoad, in ReduceLoadOpStoreWidth()
6427 if (SDNode *NewST = ShrinkLoadReplaceStoreWithStore(MaskedLoad, in ReduceLoadOpStoreWidth()
6519 SDValue DAGCombiner::TransformFPLoadStorePair(SDNode *N) { in TransformFPLoadStorePair()
6572 SDValue DAGCombiner::visitSTORE(SDNode *N) { in visitSTORE()
6775 SDValue DAGCombiner::visitINSERT_VECTOR_ELT(SDNode *N) { in visitINSERT_VECTOR_ELT()
6818 SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) { in visitEXTRACT_VECTOR_ELT()
6935 SDValue DAGCombiner::visitBUILD_VECTOR(SDNode *N) { in visitBUILD_VECTOR()
7018 SDValue DAGCombiner::visitCONCAT_VECTORS(SDNode *N) { in visitCONCAT_VECTORS()
7031 SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) { in visitVECTOR_SHUFFLE()
7046 SDNode *V = N0.getNode(); in visitVECTOR_SHUFFLE()
7086 SDValue DAGCombiner::visitMEMBARRIER(SDNode* N) { in visitMEMBARRIER()
7143 SDValue DAGCombiner::XformToShuffleWithZero(SDNode *N) { in XformToShuffleWithZero()
7187 SDValue DAGCombiner::SimplifyVBinOp(SDNode *N) { in SimplifyVBinOp()
7283 bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS, in SimplifySelectOps()
7328 SDNode *CondNode = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
7337 SDNode *CondLHS = TheSelect->getOperand(0).getNode(); in SimplifySelectOps()
7338 SDNode *CondRHS = TheSelect->getOperand(1).getNode(); in SimplifySelectOps()
7682 SDValue DAGCombiner::BuildSDIV(SDNode *N) { in BuildSDIV()
7683 std::vector<SDNode*> Built; in BuildSDIV()
7686 for (std::vector<SDNode*>::iterator ii = Built.begin(), ee = Built.end(); in BuildSDIV()
7696 SDValue DAGCombiner::BuildUDIV(SDNode *N) { in BuildUDIV()
7697 std::vector<SDNode*> Built; in BuildUDIV()
7700 for (std::vector<SDNode*>::iterator ii = Built.begin(), ee = Built.end(); in BuildUDIV()
7819 bool DAGCombiner::FindAliasInfo(SDNode *N, in FindAliasInfo()
7848 void DAGCombiner::GatherAllAliases(SDNode *N, SDValue OriginalChain, in GatherAllAliases()
7851 SmallPtrSet<SDNode *, 16> Visited; // Visited node set. in GatherAllAliases()
7950 SDValue DAGCombiner::FindBetterChain(SDNode *N, SDValue OldChain) { in FindBetterChain()