Displaying 20 results from an estimated 26 matches for "combine1".
Did you mean:
combine
2016 Sep 23
2
Runtime error
...*int a, b;int main() {a=10;b=10;return a+b;}*
Compiled with clang command to produce test.ll file which is attached below,
*$clang -cc1 test.c -emit-llvm*
Now If I want to run with my own target for selection with *llc* with
command as follow getting error,
*COMMAND:$ ./llc -view-dag-combine1-dags -march=toy -relocation-model=pic
-filetype=asm ~/test.ll ERROR:./llc: /home/varun/test.ll:14:18: error:
expected comma after load's type %2 = load i32* @a, align
4 ^*
Please Help me with It.
Thanks and Regards
Varun
-------------- next part --------------
An HTML attachme...
2008 Nov 10
2
[LLVMdev] Invalid comparison instruction generation
...=1]
%tmp3 = load double* %x.addr ; <double> [#uses=1]
store double %tmp3, double addrspace(11)* %tmp2
br label %ifend
ifend: ; preds = %ifthen, %entry
ret void
}
With the above kernel run through llc with -march=x86
-view-dag-combine1-dags I still see the ogt as the comparison operation,
but when I run it with llc -march=x86 -view-legalize-dags the ogt node
has been transformed into a ule.
So, my question is, how do I get llvm to stop doing invalid translation
of comparison instructions? This problem affects my custom backen...
2008 Nov 11
0
[LLVMdev] Invalid comparison instruction generation
On Mon, Nov 10, 2008 at 3:06 PM, Villmow, Micah <Micah.Villmow at amd.com> wrote:
> With the above kernel run through llc with -march=x86
> -view-dag-combine1-dags I still see the ogt as the comparison operation, but
> when I run it with llc -march=x86 -view-legalize-dags the ogt node has been
> transformed into a ule.
Okay... I can see that in the attached graph.
> So, my question is, how do I get llvm to stop doing invalid translation of
>...
2015 Jun 27
3
[LLVMdev] Legalizing SelectionDAGs with illegal pointer type
Hi,
I recently started helping with the LLVM AVR backend [1]. The AVR is an 8 bit core with pointer type i16. That makes pointers illegal in the SelectionDAG. As far as I understand it, it is the backends job to legalize these nodes by using the ReplaceNodeResults/LowerOperation callbacks. Is that about right?
I have the feeling that the symbolic nodes carrying pointers, like FrameIndex are
2012 Jan 20
1
[LLVMdev] SelectionDAG debug output
...LLVM and make use of the debug output from
llc. The SelectionDAG dumping features are especially interesting to me
since I am looking for operation patterns that allow me to decide which
custom instructions can be added to a processor in order to improve the
performance.
Providing a -view-dag-combine1-dags option (and its friends) to llc show
the SelectionDAG nicely in a viewer. I was wondering about the reasoning
behind this behavior.
In my case it would be much more useful to just get the DOT files of
these graphs in either the current location, or optionally at some user
specified locati...
2008 Sep 10
0
[LLVMdev] Custom Lowering and fneg
...serting on the following item.
>
> Cannot yet select: 017B8010: i32 = fneg 017B7E78
That seems strange... you definitely shouldn't be seeing an fneg with
an i32 result. What sorts of changes have you made to the SPARC
backend? Have you tried looking at the output of "llc
-view-dag-combine1-dags" and "llc -view-legalize-dags" to see where
exactly this node is getting introduced?
> What I cannot figure out is why it is attempting to pattern match on an i32
> when there are no i32's in my test program.
With the regular SPARC backend, what ends up happening is...
2015 Jun 28
3
[LLVMdev] Legalizing SelectionDAGs with illegal pointer type
...o that solutions to these problems were more likely to happen!
>
> We maintain an out of tree backend for at least one target that has an i64 pointer type but for which i64 is illegal (much like AVR, 6502, etc). Unfortunately, the solution is extremely ugly; it lowers loads and stores during combine1 (before legalization), which is way less than ideal. It also uses 32-bit frameindexes (it treats the stack as 32-bit despite global pointers being 64-bit), so I don’t think that provides a usable template for a solution here, unfortunately.
If it would help, one of the changes that we’ve made is t...
2009 Sep 16
0
[LLVMdev] struct returns
...re sufficient registers. It'll need to be extended
some, because it calls llvm_unreachable() when it runs
out of registers, which is the behavior we're trying to avoid
here :-).
If you're not familiar with the SelectionDAG IR, feel free to
ask questions. I recommend using the -view-dag-combine1-dags
option, which provides a visualization of the SelectionDAG for
each basic block immediately after it has been constructed, to
get an idea of what's being built.
>
> Anything you care to tell me would be welcome. I will be starting on
> this today or tomorrow.
Ok, let me know if...
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.
2020 Mar 27
2
Instruction selection phase
...ent was scrubbed...
Name: legalize-dags.pdf
Type: application/pdf
Size: 46606 bytes
Desc: legalize-dags.pdf
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200327/7bc9722e/attachment-0002.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dag-combine1.pdf
Type: application/pdf
Size: 45602 bytes
Desc: dag-combine1.pdf
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200327/7bc9722e/attachment-0003.pdf>
2008 Sep 10
2
[LLVMdev] Custom Lowering and fneg
So, I have this small test program that I figured would cause no
problems but want to test all the various data types and operations with
my modified sparc backend. I've been working on LLVM for about 3 days
now, so this might be a problem with not knowing enough yet, so thanks
for bearing with me.
The code that I based my example off of is compiled to LLVM-IR from:
void
2008 Sep 10
3
[LLVMdev] Custom Lowering and fneg
...serting on the following item.
>
> Cannot yet select: 017B8010: i32 = fneg 017B7E78
That seems strange... you definitely shouldn't be seeing an fneg with
an i32 result. What sorts of changes have you made to the SPARC
backend? Have you tried looking at the output of "llc
-view-dag-combine1-dags" and "llc -view-legalize-dags" to see where
exactly this node is getting introduced?
Thanks I'll get this a try. I've made quite a few changes, introduced
many new instructions and formats for my backend and working on getting
the various data types to work with all the...
2009 Sep 04
1
[LLVMdev] viewing dags
Hi
I would like to view the various dags being output during codegen.
Unfortunately, I am not seeing the files being dumped. I will really
appreciate if someone can help me here
llc switch.bc -f -view-dag-combine1-dags ( i tried -view-isel-dags,
-view-sched-dags as well)
Writing '/tmp/llvm_zbbAKM/dag.main.dot'... done.
Writing '/tmp/llvm_G4rLKf/dag.main.dot'... done.
Writing '/tmp/llvm_mv0TMI/dag.main.dot'... done.
Writing '/tmp/llvm_adT8Ob/dag.main.dot'... done.
Writing...
2012 Jun 23
0
[LLVMdev] Why can not sparcv9 backend handle i64 produced by FrameIndex?
...operator!
To sovle this problem, I tried "-march=sparcv9" (LLVM 3.1 release
version), the same problem occured.
sparcv9 is a 64-bit target so FrameIndex operator produces i64 data,
and it seems v9 subtarget did not handle this well.
Then I tried llc option "-march=x86-64 -view-dag-combine1-dags". It works OK.
FrameIndex produces i64 in x86-64, but this subtarget can handle the
problem well.
So I guess hacking x86-64 backend will help me to find a solution. But
I need more clues.
Can someone tell me where to start?
Best regards.
--
杨勇勇 (Yang Yongyong)
2018 Apr 07
0
Instruction selection algorithm
...icantly better than greedy; in practice most optimization goals seem to be representable through heuristics on the regular selection algorithm, at least for real machines. Additionally, I kind of suspect that there is far more to gain from better transformations during instruction lowering (e.g. in Combine1/Legalize/Combine2) than from better ordering in Select().
—escha
> On Mar 28, 2018, at 3:31 AM, Ivan Kulagin via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Is the algorithm described in the article "Near-Optimal Instruction
> Selection on DAGs
> (https://llvm.org/...
2017 Nov 02
2
Why am I getting FrameIndex:i64<0> when I have no i64's?
...ot;false" }
!llvm.module.flags = !{!0}
!llvm.ident = !{!1}
!0 = !{i32 1, !"wchar_size", i32 2}
!1 = !{!"clang version 6.0.0 (trunk 315731) (llvm/trunk 316278)"}
So far, so good. Now, when I try to compile this:
build/bin/llc -march tms9900 -filetype=asm foo.bc -view-dag-combine1-dags
-debug -O0
...
Initial selection DAG: BB#0 'dothis:entry'
SelectionDAG has 17 nodes:
t0: ch = EntryToken
t2: i16,ch = CopyFromReg t0, Register:i16 %vreg0
t6: i64 = Constant<0>
t8: ch = store<ST2[%a.addr]> t0, t2, FrameIndex:i64<0>, undef:i64
t4: ch = Co...
2009 Mar 23
3
[LLVMdev] Proposal to disable some of DAG combine optimizations
I can't think of any workaround? this optimization eliminates so much information that if we want to retrieve back, it will take a lot of processing and may not necessarily be able to retrieve the lost information for all cases.
Besides, why does the generic part of llvm have to force an optimization that is counter productive to some targets?
If there are other phases that do the same
2018 Mar 28
2
Instruction selection algorithm
Is the algorithm described in the article "Near-Optimal Instruction
Selection on DAGs
(https://llvm.org/pubs/2008-CGO-DagISel.html)" really used in llvm
instruction selection?
I've studied implementation (SelectionDAGISel.cpp) and I see that
instructions are selected
by target specific MatcherTable generated by llvm-tblgen. In the
implementation the first
matching pattern from
2014 Jul 11
2
[LLVMdev] Lowering to return multiple values: codeGen, instruction write one value to the input register.
Hi All,
In XCore backend, I saw
“
…...
EVT VT = Op.getValueType();
SDValue Data =
DAG.getNode(XCoreISD::CRC8, DL, DAG.getVTList(VT, VT),
Op.getOperand(1), Op.getOperand(2) , Op.getOperand(3));
SDValue Crc(Data.getNode(), 1);
SDValue Results[] = { Crc, Data };
return DAG.getMergeValues(Results, 2, DL);
“ which is used to lower an
2012 Sep 03
1
[LLVMdev] Selection DAG output as bare DAG, code review
Hello all,
I recently foudn myself wanting to view the basic blocks in the
selection DAG as pure DAGs - so just as a list of edges, with no other
information. I added the below code to the start of the "
void SelectionDAGISel::CodeGenAndEmitDAG()" function. It creates a
separate txt file for each basic block and gives a list of edges
between nodes. The segment of code is below -