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
>...
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