Displaying 20 results from an estimated 10000 matches similar to: "returning from LowerOperation()"
2017 Jan 23
2
returning from LowerOperation()
> On Jan 23, 2017, at 12:36, Friedman, Eli via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> On 1/23/2017 5:21 AM, Jonas Paulsson wrote:
>> Hi Eli,
>>
>> I would like to clarify generally what the difference is between returning SDValue() and Op (input argument unchanged) from LowerOperation()?
>>
>> My understanding is that returning SDValue()
2016 Jan 22
3
Return value from TargetLowering::LowerOperation?
Hi,
I'm a litle bit puzzled by the TargetLowering::LowerOperation function,
and what different callers of this function assumes about the returned
value.
In several places it seems like it is assumed that LowerOperation can
return three kinds of values:
* Something completely new.
* SDValue()
* The same SDValue as LowerOperation was called on.
However in some places, e.g. in
2016 Jan 25
1
Return value from TargetLowering::LowerOperation?
Hi,
On 01/22/2016 05:02 PM, Tom Stellard wrote:
> On Fri, Jan 22, 2016 at 01:58:49PM +0100, Mikael Holmén via llvm-dev wrote:
>> Hi,
>>
>> I'm a litle bit puzzled by the TargetLowering::LowerOperation function,
>> and what different callers of this function assumes about the returned
>> value.
>>
> SelectionDAGLegalize::LegalizeOp() is your best
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
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
2012 Jun 01
2
[LLVMdev] legalization of truncating stores in LegalizeDAG.cpp
In LegalizeDAG.cpp, truncating stores are custom-lowered in line 1314-1317:
1314 case TargetLowering::Custom:
1315 ReplaceNode(SDValue(Node, 0),
1316 TLI.LowerOperation(SDValue(Node, 0), DAG));
1317 break;
Is there a reason it doesn't check whether the SDValue returned from
TargetLowering::LowerOperation is null before it replaces the
2012 Jun 01
0
[LLVMdev] legalization of truncating stores in LegalizeDAG.cpp
Hi Akira,
On 01/06/12 02:27, Hatanaka, Akira wrote:
> In LegalizeDAG.cpp, truncating stores are custom-lowered in line 1314-1317:
>
> 1314 case TargetLowering::Custom:
> 1315 ReplaceNode(SDValue(Node, 0),
> 1316 TLI.LowerOperation(SDValue(Node, 0), DAG));
> 1317 break;
>
> Is there a reason it doesn't check whether the
2009 Jan 16
2
[LLVMdev] PIC16 backend for llvm 2.5
> -----Original Message-----
> From: Duncan Sands [mailto:baldrick at free.fr]
> Sent: Friday, January 09, 2009 5:23 PM
> To: Sanjiv Kumar Gupta - I00171
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: PIC16 backend for llvm 2.5
>
> Hi Sanjiv,
>
> > Well, the first email is here.
> >
> > http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
>
2009 Jan 16
0
[LLVMdev] PIC16 backend for llvm 2.5
Hi Sanjiv,
> Well the magnitude of the task is not small.
> ExpandIntegerOperand() calls LowerOperation() to allow targets to handle
> illegal operands. So we will need to change the interface of
> LowerOperation() to pass an extra argument called Results, which is an
> array of SDValue. Targets will push the result values in this array and
> then we can replace values in
2009 Mar 04
2
[LLVMdev] Nested functions
I get the following error during compilation using the LLVM cross-compiler
(x86_64->arm).
error: nested functions are disabled, use -fnested-functions to re-enable
With -fnested-functions switch, I get the following error:
<llvm-src-dir>/llvm/lib/Target/ARM/ARMISelLowering.cpp:1439: virtual
llvm::SDValue llvm::ARMTargetLowering::LowerOperation(llvm::SDValue,
llvm::SelectionDAG&):
2010 Sep 22
2
[LLVMdev] r114523 (convert the last 4 X86ISD...) breaks clang
Hello,
After commit r114523, I start to get crash when compiling with clang (Release+Asserts) for i386:
(I know I should fill a bug report instead of posting here, but I don't get much time right now).
Trying to compile the following simple code, clang asserts.
---------- round.c --------
#include <math.h>
float test() { return llround(1); }
--------------------
[MacPro:~/Desktop]
2011 Oct 18
0
[LLVMdev] Matching addsub
Hi Hal, you should probably add a target specific DAG combine that
synthesizes the appropriate target instruction. This is how I
handled x86 horizontal add (see the FHADD X86 opcode). If it turns
out that the same thing is useful for other targets then it can be
generalized later.
Ciao, Duncan.
On 10/18/11 00:40, Hal Finkel wrote:
> How should I go about matching floating-point addsub-like
2009 Mar 04
0
[LLVMdev] Nested functions
Hi Bharadwaj,
> I get the following error during compilation using the LLVM cross-compiler
> (x86_64->arm).
>
> error: nested functions are disabled, use -fnested-functions to re-enable
yes, nested functions are disabled by default in llvm-gcc (not sure why -
maybe a historical hang over from the days when they were not supported?).
> With -fnested-functions switch, I get the
2010 Oct 08
1
[LLVMdev] register constraints
Hi,
I have worked with GCC prior to using LLVM, and I am a bit startled to find no way to use an earlier operand as is done in GCC.
For example, a sext instruction on my target takes one the operand of a low-part register, and then sign extends into the full register.I find that there is no way to use for example (set RC:$srsc, sext($src, 16)), or in any other way use a sext operator to perform
2011 Oct 17
4
[LLVMdev] Matching addsub
How should I go about matching floating-point addsub-like vector
instructions? My first inclination is to write something which matches
build_vector 1.0, -1.0, and then use that in combination with a match on
fadd, but that does not seem to work. I think this is because
BUILD_VECTOR cannot ever be "Legal", and so it is always turned into a
constant load before instruction selection.
2013 Jul 31
1
[LLVMdev] Help with promotion/custom handling of MUL i32 and MUL i64
Thanks Tom. I really appreciate your insight.
I'm able to use the customize to get the 64-bit to go to a subroutine and
for the 32-bit, I am generate XXXISD::MUL32. I'm not sure then what you
mean about "overriding" the ReplaceNodeResults.
For ReplaceNodeResults, I'm doing:
SDValue Res = LowerOperation(SDValue(N, 0), DAG);
for (unsigned I = 0, E =
2009 Mar 04
2
[LLVMdev] Nested functions
Hi Duncan,
Thanks for your reply.
I did try the method suggested by you. I got a foo.bc with -emit-llvm
switch. llc on foo.bc gets me the same assertion failure, as you pointed
out.
Then I ran bugpoint to generate bugpoint-reduced-simplified.bc and
bugpoint-reduced-function.bc. My previous experience is that if I compile
either if them, I would get the same failure as I did with foo.bc. That is
2017 Jul 10
2
Conditional Register Assignment based on the no of loop iterations
Here basically my problem is vector width since i have used v64i32 in my
backend. now if vector width=64. i want the Reg_B class registers to be
assigned and if vector width=2048 i want Reg_A registers to be assigned to
instruction.
Should i incorporate the solution in lowering stage? some thing like;
addRegisterClass(MVT::v2048i32, &X86::Reg_B);
2010 Sep 22
0
[LLVMdev] r114523 (convert the last 4 X86ISD...) breaks clang
I will take a look in the next couple hours. Feel free to revert it in the meantime, thanks!
-Chris
On Sep 22, 2010, at 1:53 AM, Jean-Daniel Dupas <devlists at shadowlab.org> wrote:
> Hello,
>
> After commit r114523, I start to get crash when compiling with clang (Release+Asserts) for i386:
> (I know I should fill a bug report instead of posting here, but I don't get
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
Per subject, this patch adding an additional pass to handle vector
operations; the idea is that this allows removing the code from
LegalizeDAG that handles illegal types, which should be a significant
simplification. There are still some issues with this patch, but does
the approach look sane?
-Eli
-------------- next part --------------
Index: lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp