search for: selectiondaglow

Displaying 20 results from an estimated 65 matches for "selectiondaglow".

2006 Dec 19
3
[LLVMdev] alias-aware scheduling
...is information in scheduling so that independent memory operations may be reordered. Attached is a patch which implements this. I copied some routines from DAGCombiner.cpp for using SDOperands with alias queries; it should probably be factored out somewhere so the code can be shared. I reorganized SelectionDAGLowering::getLoadFrom a little, to make it simpler to use in other contexts. Also, the patch fixes a bug where SelectionDAG::getLoad and SelectionDAG::getStore were being called with the wrong arguments, with a default argument helping to hide it. I'm interested in any comments or feedback that p...
2006 Dec 20
1
[LLVMdev] alias-aware scheduling
...looks like the end result is pretty similar. > > Attached is a patch which implements this. I copied some routines from > > DAGCombiner.cpp for using SDOperands with alias queries; it should > > probably be factored out somewhere so the code can be shared. I > > reorganized SelectionDAGLowering::getLoadFrom a little, to make it > > simpler to use in other contexts. > > > > Also, the patch fixes a bug where SelectionDAG::getLoad and > > SelectionDAG::getStore were being called with the wrong arguments, > > with > > a default argument helping to hi...
2009 Aug 21
2
[LLVMdev] Possible Typo in SelectionDAGLowering::visitShuffleVector
Hello While building LLVM, the compiler (static analysis) is giving me a warning about "if (RangeUse[0] == 0 && RangeUse[0] == 0) {". Can somebody familar with the codebase look over it, maybe this should be "if (RangeUse[0] == 0 && RangeUse[1] == 0) {", otherwise sorry for the noise. Index: F:/dev/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
2008 Apr 24
0
[LLVMdev] FoldingSetNodeID operations inefficiency
Hi Chris, This is a good idea and I started thinking in that direction already. But what I don't quite understand the TFs, how TFs are formed and which rules they should obey to. For example now: > PendingLoads created by the SelectionDAGLowering::getLoadFrom and then copied into the > TokenFactor node by SelectionDAGLowering::getRoot called from the > SelectionDAGLowering::visitStore So, if I now detect in the getRoot that there are more than let's say 64 nodes in the PendingLoads queue, what should I do? - Can I take onl...
2008 Apr 23
1
[LLVMdev] FoldingSetNodeID operations inefficiency
...meant by "very many". In my test-case (you can fetch it from here http://llvm.org/bugs/attachment.cgi?id=1275), which is just one HUGE MBB with tens of thousends of instructions, there is a TokenFactor node N that has ... 3200 operands! (These operands are PendingLoads created by the SelectionDAGLowering::getLoadFrom and then copied into the TokenFactor node by SelectionDAGLowering::getRoot called from the SelectionDAGLowering::visitStore). During the code selection phase, the SelectionDAG::ReplaceAllUsesWith is called many times and in many cases it tried to update this node, by replacin...
2008 Apr 28
1
[LLVMdev] FoldingSetNodeID operations inefficiency
...stion. I have implemented the code that : a) does not merge multiple TokenFactor nodes in the DAGCombiner::visitTokenFactor(), if the resulting TF node would contain more than 64 operands. b) produces a bunch of TokenFactor nodes with at most 64 operands, instead of one huge TokenFactor in the SelectionDAGLowering::getRoot(). If we have n pending loads, they can be combined into TFs in two ways: 1) The first 64 loads are put into a new node TF1. Then TF1 and the next 64 loads are put into a new node TF2 and so on. That is, each generated TF contains a previous TF as its first operand and a bunch...
2009 Sep 16
0
[LLVMdev] struct returns
...is is where LLVM IR is translated into the special-purpose instruction-selection IR, which is lower-level. Calls are split up into multiple parts which are eventually lowered into the actual instructions for the calling sequence. The main areas of attention will be SelectionDAGISel::LowerArguments SelectionDAGLowering::LowerCallTo SelectionDAGLowering::visitRet These functions are responsible for breaking up LLVM IR values into register-sized pieces and handing them off to target-specific code through these virtual functions: TLI.LowerFormalArguments TLI.LowerCall TLI.LowerReturn (Actually, SelectionDAGL...
2009 Jul 08
4
[LLVMdev] Internal compiler error in SelectionDAGBuild.cpp
Hello, While I was trying to cross-compile Linux OMAP kernel with llvm, I have the following error message. CC arch/arm/kernel/traps.o cc1: /home/wonjeon/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp:5388: void llvm::SelectionDAGLowering::visitInlineAsm(llvm::CallSite): Assertion `(OpInfo.ConstraintType == TargetLowering::C_RegisterClass || OpInfo.ConstraintType == TargetLowering::C_Register) && "Unknown constraint type!"' failed. arch/arm/kernel/traps.c:748: internal compiler error: Aborted Please...
2009 Sep 16
2
[LLVMdev] struct returns
> I recently made a major reorganization of the calling-convention > lowering code which cleared away one of the major obstacles to > doing this within codegen. > > Dan So what was the obstacle, and how was it cleared? And how do you see the large struct return working in codegen? Anything you care to tell me would be welcome. I will be starting on this today or tomorrow.
2007 Aug 28
2
[LLVMdev] Custom GEP lowering
It looks like I need to be able to intercept GEP lowering (in SelectionDAGLowering::visitGetElementPtr) and insert something else other than the shifts and adds. The basic problem is that CellSPU loads and stores on 16-byte boundaries. Consequently, the SPU backend has to do the load or store differently than most normal architectures that have byte-addressable opera...
2006 Dec 19
0
[LLVMdev] alias-aware scheduling
...Are you not getting satisfactory results by turning it on? > > Attached is a patch which implements this. I copied some routines from > DAGCombiner.cpp for using SDOperands with alias queries; it should > probably be factored out somewhere so the code can be shared. I > reorganized SelectionDAGLowering::getLoadFrom a little, to make it > simpler to use in other contexts. > > Also, the patch fixes a bug where SelectionDAG::getLoad and > SelectionDAG::getStore were being called with the wrong arguments, > with > a default argument helping to hide it. Can you be more specif...
2006 May 23
3
[LLVMdev] HEAD broken?
I'm getting this: /home/ghost/Work/llvm-cvs/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp: In member function `void llvm::SelectionDAGLowering::visitSetCC(llvm::User&, llvm::ISD::CondCode, llvm::ISD::CondCode, llvm::ISD::CondCode)': /home/ghost/Work/llvm-cvs/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1107: error: ` UnsafeFPMath' undeclared (first use this function) /home/ghost/Work/llvm-cvs/lib/CodeGen/SelectionD...
2009 Jul 14
0
[LLVMdev] "Recursive compilation detected" and signals
...:SDValue, llvm::Type const*, bool, bool, bool, bool, unsigned int, unsigned int, bool, llvm::SDValue, std::vector<llvm::TargetLowering::ArgListEntry, std::allocator<llvm::TargetLowering::ArgListEntry> >&, llvm::SelectionDAG&, llvm::DebugLoc) + 2125 14 lli 0x0864f8c6 llvm::SelectionDAGLowering::LowerCallTo(llvm::CallSite, llvm::SDValue, bool, llvm::MachineBasicBlock*) + 1418 15 lli 0x0865c6b1 llvm::SelectionDAGLowering::visitCall(llvm::CallInst&) + 2527 16 lli 0x08666d1e llvm::SelectionDAGLowering::visit(unsigned int, llvm::User&) + 1108 17 lli 0x08666e1...
2008 May 15
2
[LLVMdev] Troubling promotion of return value to Integer ...
I know that many ABIs require this for performance purpose, but I haven't seen anything in the standard that suggests promotion of return value to integer. Furthermore, I think the LLVM is supposed to be independent of language. So I'm not sure if SelectionDAGLowering is the right place for this promotion to begin with, TargetLowering class seems more logical; but I'm not sure how. >> Either way, I think we all agree that the root of the problem is the >> FIXME in SelectionDAGLowering::visitRet() >What I would like to know is if...
2005 Mar 17
1
[LLVMdev] FP Intrinsics
...be expanded (to calls) if not fast-math is set... What do you think about this approach? > 4. Don't forget a doc patch to docs/LangRef.html :-) > >> I assume I have to add new nodetypes for the FP instructions to >> SelectionDAGNodes.h, and make nodes for these in >> SelectionDAGLowering::visitCall when I find the intrinsic... OK, I will. >> -- for me it would make most sense to lower the intrinsic to a call if >> it's not supported. However I notice that for other intrinsics (memcpy >> etc.) this is done in LegalizeDAG where the node is expanded to a...
2008 May 14
7
[LLVMdev] Troubling promotion of return value to Integer ...
...ing convention and check for it in visitRet Dan replied to thread (2) and suggested to add a new field to the TargetLowering class, and then let each target specify the minimum integer type to promote return types to Either way, I think we all agree that the root of the problem is the FIXME in SelectionDAGLowering::visitRet() But what is the preferred method? Thanks Ali -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080514/32e4e5d1/attachment.html>
2007 Aug 29
3
[LLVMdev] Custom GEP lowering
On Aug 28, 2007, at 7:02 AM, Dan Gohman wrote: > On Mon, Aug 27, 2007 at 07:26:55PM -0700, Scott Michel wrote: >> It looks like I need to be able to intercept GEP lowering (in >> SelectionDAGLowering::visitGetElementPtr) and insert something else >> other than the shifts and adds. The basic problem is that CellSPU >> loads and stores on 16-byte boundaries. Consequently, the SPU backend >> has to do the load or store differently than most normal >> architectures that...
2009 Mar 02
2
[LLVMdev] Intrinsic cannot use illegal type
Hello everybody, I use a target specific Intrinsic that returns an illegal type. The idea is that this returned value shall be eliminated when the Intrinsic node is lowered to a target node. I realize that this is a rather late stage, since (at least) SelectionDAGLowering::visitTargetIntrinsic() requires legal types, and type legalization in general is also done before ISelLowering. The background is that the intrinsic returns a boolean value which is evaluated by a branch instruction of a (special) loop. The branch targets of this kind of loop are actually co...
2009 Jul 08
2
[LLVMdev] Internal compiler error in SelectionDAGBuild.cpp
...n J Jeon wrote: > > Hello, > > While I was trying to cross-compile Linux OMAP kernel with llvm, I have the > following error message. > > CC arch/arm/kernel/traps.o > cc1: > /home/wonjeon/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp:5388: void > llvm::SelectionDAGLowering::visitInlineAsm(llvm::CallSite): Assertion > `(OpInfo.ConstraintType == TargetLowering::C_RegisterClass || > OpInfo.ConstraintType == TargetLowering::C_Register) && "Unknown constraint > type!"' failed. > arch/arm/kernel/traps.c:748: internal compiler error:...
2009 Jul 08
0
[LLVMdev] Internal compiler error in SelectionDAGBuild.cpp
...n J Jeon wrote: > Hello, > > While I was trying to cross-compile Linux OMAP kernel with llvm, I > have the following error message. > > CC arch/arm/kernel/traps.o > cc1: /home/wonjeon/llvm/lib/CodeGen/SelectionDAG/ > SelectionDAGBuild.cpp:5388: void > llvm::SelectionDAGLowering::visitInlineAsm(llvm::CallSite): > Assertion `(OpInfo.ConstraintType == TargetLowering::C_RegisterClass > || OpInfo.ConstraintType == TargetLowering::C_Register) && "Unknown > constraint type!"' failed. > arch/arm/kernel/traps.c:748: internal compiler...