search for: pusdesris

Displaying 12 results from an estimated 12 matches for "pusdesris".

2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...n (add (load) (load)), source operands are memory addresses, and thus it can be treated as (addmm address, address). Here is an alternative you can take into consideration: defining new node (like addmm, similiar with movmm) to specify matching patterns for isel. Regards. 2012/12/2 Joseph Pusdesris <joe at pusdesris.com>: > I am writing a target for an odd cisc-like architecture which has no support > for keeping most values in registers. As such, memory-memory operations are > needed, but for isel to generate a memory-memory the pattern must be of the > form (store (op (lo...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Hi, Joe. I am sorry I did not catch your point. Can you provide more details? Since SDValue/SDNode can be used multiple times, why would you want to create two identical objects instead of reference to the same one? 2012/12/2 Joseph Pusdesris <joe at pusdesris.com>: > Yes, changing parameters will create a new Node, but is there some way I can > force a new node with the same parameters? > -Joe > > > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> wrote: >> >> Hi, Joseph,...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...are > memory addresses, and thus it can be treated as (addmm > address, address). Here is an alternative you can take into > consideration: defining new node (like addmm, similiar with movmm) to > specify matching patterns for isel. > > Regards. > > 2012/12/2 Joseph Pusdesris <joe at pusdesris.com>: > > I am writing a target for an odd cisc-like architecture which has no > support > > for keeping most values in registers. As such, memory-memory operations > are > > needed, but for isel to generate a memory-memory the pattern must be of &gt...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...ng on real parameters. Since you use exactly the same attributes dupVal/dupNode have, no doubt getLoad() return the old one. I am not sure it's *volatile* that let you get a new result, you might want to try change some other parameters and check what it turns out. Regards. 2012/12/2 Joseph Pusdesris <joe at pusdesris.com> > > So I think I have made some progress. > SDValue dupVal = consumer->getOperand(OpNo); > LoadSDNode *dupNode = (LoadSDNode*) dupVal.getNode(); > > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(), dupVal.getDebugLoc(), >...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...gmail.com> wrote: > Hi, Joe. > > I am sorry I did not catch your point. Can you provide more details? > > Since SDValue/SDNode can be used multiple times, why would you want to > create two identical objects > instead of reference to the same one? > > 2012/12/2 Joseph Pusdesris <joe at pusdesris.com>: > > Yes, changing parameters will create a new Node, but is there some way I > can > > force a new node with the same parameters? > > -Joe > > > > > > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> &...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...exactly the same attributes dupVal/dupNode have, no > doubt getLoad() return the old one. > > I am not sure it's *volatile* that let you get a new result, you might > want to try change some other parameters and check what it turns out. > > Regards. > > 2012/12/2 Joseph Pusdesris <joe at pusdesris.com> > > > > So I think I have made some progress. > > SDValue dupVal = consumer->getOperand(OpNo); > > LoadSDNode *dupNode = (LoadSDNode*) dupVal.getNode(); > > > > SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(), > dupV...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...upNode->getTBAAInfo(), dupNode->getRanges()); However, my problem now is that it will re-use the same load still. If I change something, like setting volatile to true for example, it will create a new node, but otherwise it will not. Any ideas? -Joe On Fri, Nov 30, 2012 at 9:55 PM, Joseph Pusdesris <joe at pusdesris.com> wrote: > Hi, I am writing an llvm target and I need both loads for isel > reasons, but I am struggling to find the right way. I have been trying to > use DAG.getLoad() to make a copy, then just change the operand in the > consumers, but I cannot seem to ge...
2012 Nov 24
2
[LLVMdev] Fwd: Prevention register promotion at the isel codegen phase
Sorry, forgot to Reply-All. Begin forwarded message: > From: Steve Montgomery <stephen.montgomery3 at btinternet.com> > Subject: Re: [LLVMdev] Prevention register promotion at the isel codegen phase > Date: 24 November 2012 17:09:58 GMT > To: Joseph Pusdesris <joe at pusdesris.com> > > I had a similar problem trying to implement reg-mem operations. The solution I chose was to use PreprocessISelDAG() to decide which operands needed spilling to memory and then to store and load them from a new stack slot. This seems to work OK for me, though...
2012 Dec 01
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Hi, I am writing an llvm target and I need both loads for isel reasons, but I am struggling to find the right way. I have been trying to use DAG.getLoad() to make a copy, then just change the operand in the consumers, but I cannot seem to get all of the arguments needed for that function in order to make the copy. Any help would be great, thanks! -Joe -------------- next part -------------- An
2012 Nov 24
0
[LLVMdev] Fwd: Prevention register promotion at the isel codegen phase
...; Sorry, forgot to Reply-All. > > Begin forwarded message: > > *From: *Steve Montgomery <stephen.montgomery3 at btinternet.com> > *Subject: **Re: [LLVMdev] Prevention register promotion at the isel > codegen phase* > *Date: *24 November 2012 17:09:58 GMT > *To: *Joseph Pusdesris <joe at pusdesris.com> > > I had a similar problem trying to implement reg-mem operations. The > solution I chose was to use PreprocessISelDAG() to decide which operands > needed spilling to memory and then to store and load them from a new stack > slot. This seems to work OK f...
2012 Nov 18
2
[LLVMdev] Is there a stubbed out target definition available somewhere?
I am trying to follow this tutorial: http://llvm.org/devmtg/2009-10/Korobeynikov_BackendTutorial.pdf However, figuring out what can and cannot be deleted from the sparc backend while still compiling is proving rather frustrating. -Joe -------------- next part -------------- An HTML attachment was scrubbed... URL:
2012 Nov 23
0
[LLVMdev] Prevention register promotion at the isel codegen phase
I am trying to implement mem-mem operations, but I can't seem to figure out how to prevent register promotion for most cases. I can successfully compile: int foo(int a, int b){ return a + b; } because it gets matched to store(add(load)(load)), but when I attempt to compile: int foo(int a, int b, int c){ return a + b + c; } I can't match the add anymore since it is of the form