Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults"
2012 Aug 31
0
[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults
On Fri, Aug 31, 2012 at 2:48 PM, Pranav Bhandarkar
<pranavb at codeaurora.org> wrote:
> Hi,
>
> I am defining Hexagons version of ReplaceNodeResults to change the a node of
> the type
> A: i8 = INTRINSIC_WO_CHAIN ... , ... ,
>
> To
> B: SIGN_EXTEND (A)
>
> After returning from my function, the type legalizer
The type legalizer asked your target to replace an
2012 Sep 02
2
[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults
Hi Duncan,
> as well as what Eli said, ReplaceNodeResults requires (IIRC) the new node
to
> have the same type as the old node, which doesn't seem to be the case
> here.
Are you sure ? I see ReplaceNodeResults being called from functions such as
CustomWidenLowerNode and CustomLowerNode.
In the former, we are clearly expecting a change in type, aren't we? Even in
the latter,
2012 Sep 02
0
[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults
Hi Pranav,
>> as well as what Eli said, ReplaceNodeResults requires (IIRC) the new node
> to
>> have the same type as the old node, which doesn't seem to be the case
>> here.
>
> Are you sure ? I see ReplaceNodeResults being called from functions such as
> CustomWidenLowerNode and CustomLowerNode.
> In the former, we are clearly expecting a change in type,
2020 Jan 28
2
Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
Thank you Craig for explanation.
Could be the same algorithm used for custom legalizing given node in
LowerOperation and ReplaceNodeResults in case results and inputs of the
node are illegal?
Or actually such situation is impossible and for given node either
LowerOperation or ReplaceNodeResults can be only called?
Przemek
wt., 28 sty 2020, 18:48 użytkownik Craig Topper <craig.topper at
2020 Jan 28
2
Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
Hi,
I see that for different targets in classes which inherits from
TargetLowering there are implemented both methods:
LowerOperation and ReplaceNodeResults
What decides that for one given ISD we have to add handling in
LowerOperation and for other in ReplaceNodeResults, when for both
SetOperationAction is configured to be Custom?
Is it related with number of results of given operation and
2012 Jun 01
3
[LLVMdev] Predicate registers/condition codes question
Salut Ivan,
On Fri, Jun 1, 2012 at 7:22 AM, Ivan Llopard <ivanllopard at gmail.com> wrote:
> Hi Sebastian,
>
> Le 25/05/2012 18:54, Sebastian Pop a écrit :
>> On Thu, May 24, 2012 at 5:40 PM, Sebastian Pop<spop at codeaurora.org> wrote:
>>> On Thu, May 24, 2012 at 5:06 PM, Hal Finkel<hfinkel at anl.gov> wrote:
>>>> Sebastian,
2011 Jun 13
1
[LLVMdev] Modifying DAG in TargetLowering::ReplaceNodeResults()
Hi!
I am trying to implement va_arg() on ppc32. Everything went smooth, except
implementing va_arg() of 64bit int. Since i64 is not a legal type on ppc32
DAGTypeLegalizer::ExpandRes_VAARG() splits the va_arg(i64) into two i32
va_args.
The problem with ppc32 va_arg is that it needs special "alignment" of its
gpr pointer when the argument is i64. Ie. I need to know if I am lowering
2009 Apr 20
1
[LLVMdev] How to prevent LLVM from undoing a custom lowering
My target has only logical shifts and lacks an arithmetic right shift
instruction.
I have a custom LowerSRA function that rewrites SRA as SHL + SIGN_EXTEND
when the shift width is either constant 16 or 24. Unfortunately, I
observe that a
later pass combines the SHL + SIGN_EXTEND back into SRA so we crash.
The idea I had for defeating this behavior is lower to a target-specific
version of SHL
2012 Jun 03
0
[LLVMdev] Predicate registers/condition codes question
Salut Sebastian!
On 01/06/2012 18:19, Sebastian Pop wrote:
> Salut Ivan,
>
> On Fri, Jun 1, 2012 at 7:22 AM, Ivan Llopard<ivanllopard at gmail.com> wrote:
>> Hi Sebastian,
>>
>> Le 25/05/2012 18:54, Sebastian Pop a écrit :
>>> On Thu, May 24, 2012 at 5:40 PM, Sebastian Pop<spop at codeaurora.org> wrote:
>>>> On Thu, May 24, 2012 at
2014 Jul 18
2
[LLVMdev] how to define INTRINSIC_W_CHAIN
en!
my test is : %r1 = call<float> @test.adddiv( <float> %r0, <float>* %p0).
since
>> but somehow it always fall into INTRINSIC_WO_CHAIN category.
(caught it in lowering..)
I think it doesn’t have chain in initial DAG.
unfortunately the intrinsic “test.adddiv” is defined by me for now. not sure how to make it has a chain.
kevin
On Jul 18, 2014, at 3:06 PM,
2010 Jan 26
2
[LLVMdev] Any extend
Duncan Sands wrote:
> Hi Greg,
>
>> 1) What causes the Initial selection DAG code to choose an any_extend
>> over a sign_extend (or zero_extend)?
>
> because it is more efficient: the backend gets more choice in how to do
> it, and at the same time it tells the optimizers that the extra bits
> contain rubbish, which gives them more freedom to reason.
Makes sense,
2010 Jan 25
2
[LLVMdev] Any extend
Hi,
I'm building a backend for a 64-bit target based on the existing Mips 32
one and I've come up against a problem with 32-bit loads. If you load a
32-bit value into a register this needs extending to fit into a native
64-bit register. The initial selection DAG acomplishes this using an
any_extend node, which isn't handled later on by any instruction
selector and thus LLVM
2010 Jan 26
0
[LLVMdev] Any extend
Hi Greg,
>>> 1) What causes the Initial selection DAG code to choose an any_extend
>>> over a sign_extend (or zero_extend)?
>>
>> because it is more efficient: the backend gets more choice in how to do
>> it, and at the same time it tells the optimizers that the extra bits
>> contain rubbish, which gives them more freedom to reason.
> Makes sense,
2016 Feb 02
2
creating Intrinsic DAG Node
Matt,
Is this an example you are talking about:
LoadedVect = DAG.getNode
<http://llvm.org/docs/doxygen/html/classllvm_1_1SelectionDAG.html#ab02868bea897db34232413f1929ade1d>
(ISD::INTRINSIC_WO_CHAIN
<http://llvm.org/docs/doxygen/html/namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ac771b9cda3b889242d457cc4d9b2159c>,
dl, MVT::v4f64,
DAG.getConstant
2014 Jul 18
2
[LLVMdev] how to define INTRINSIC_W_CHAIN
sure!
class TEST_INTINSIC_FM< string asmstr> : Intrinsic
<llvm_i32_ty], [llvm_i32_ty, llvm_ptr_ty],
[IntrReadWriteArgMem],
!strconcat(“llvm.test”, asmstr),”.float”)
>;
tks
On Jul 18, 2014, at 4:06 PM, Tom Stellard <tom at stellard.net> wrote:
> On Fri, Jul 18, 2014 at 03:19:47PM -0400, kewuzhang wrote:
>> en!
>>
>> my test is : %r1 =
2009 Feb 19
2
[LLVMdev] Possible error in LegalizeDAG
-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
On Behalf Of Eli Friedman
Sent: Wednesday, February 18, 2009 3:01 PM
To: LLVM Developers Mailing List
Subject: Re: [LLVMdev] Possible error in LegalizeDAG
On Wed, Feb 18, 2009 at 10:14 AM, Villmow, Micah <Micah.Villmow at amd.com>
wrote:
> I'm still trying to track down some
2014 Jul 18
3
[LLVMdev] how to define INTRINSIC_W_CHAIN
Hi guys,
I am working on an intrinsic function, which will write to a pointer argument.
So I am lowering it and think I need to catch it in lowerINTRINSIC_W_CHAIN, but somehow it always fall into INTRINSIC_WO_CHAIN category.
I put [IntrReadwriteArgMem] into my Intrinsic class definition, it did not help.
tried put [SDNPHasChain] into intrinsic class definition, cause errors” Element type
2009 Feb 19
0
[LLVMdev] Possible error in LegalizeDAG
On Thu, Feb 19, 2009 at 10:35 AM, Villmow, Micah <Micah.Villmow at amd.com> wrote:
> On the hardware that I am targeting, which is not a CPU, I must support
> i8 loads, however the hardware only supports natively 32bit aligned
> loads, therefore I have to read in 4 i8's and unpack them and shift them
> based on the read address. So any i8 load has a 75% chance of being
>
2017 May 09
3
Instruction selection for 'load' based on static vs. dynamic data
On Tue, 9 May 2017, Krzysztof Parzyszek wrote:
> def: Pat<(ld (add (WRAPPER RC:$addr), (sign_extend RC:$offset))),
> (load_instruction_rr RC:$addr, RC:$offset)>;
>
> Where "load_instruction" is a machine load instruction with base address and
> an offset, both in registers, and RC is the corresponding register class.
Can I also use something more complex
2012 Jun 01
0
[LLVMdev] Predicate registers/condition codes question
Hi Sebastian,
Le 25/05/2012 18:54, Sebastian Pop a écrit :
> On Thu, May 24, 2012 at 5:40 PM, Sebastian Pop<spop at codeaurora.org> wrote:
>> On Thu, May 24, 2012 at 5:06 PM, Hal Finkel<hfinkel at anl.gov> wrote:
>>> Sebastian,
>>>
>>> First, it might be useful to look at what is done in the PowerPC
>>> backend. PPC also has condition