Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] basic block missing after MachineInstr packetizing"
2014 Jan 09
2
[LLVMdev] basic block missing after MachineInstr packetizing
Sergei, Thank you for your attention.
My target is a custom VLIW DSP. I am not sure dependency dag is correct
when it gets scheduled and packetized. Months ago, I submitted a bug at
http://llvm.org/bugs/show_bug.cgi?id=17894 which explained more details.
I am not sure my understanding of this bug is proper, but modified my local
codes this way and it works for my target when scheduling and
2017 Jun 26
2
Some questions about software pipeline in LLVM 4.0.0
Hi Ehsan,
In some cases modulo scheduling will insert copy instruction that end up as
real copies in the final code. It unavoidable in some cases. For example,
let's say a instruction defining a value is scheduled in the first
iteration, but one of its uses is scheduled two iterations later. In this
case, the kernel needs to create a copy because there will be two values
live in the
2013 Jun 21
3
[LLVMdev] Register Class assignment for integer and pointer types
llvm code generator lowers both integer and pointer types into ixx(say,
i16, i32, i64, ...). This make senses for some optimizations.
However, integer registers and pointer registers is expilicitly
distinguished from each other for some architectures, like TriCore,
Blackfin, and our lab prototype dsp, which accelerates address computation
and memory access.
I have already read this mail thread:
2013 Jun 23
3
[LLVMdev] Register Class assignment for integer and pointer types
David, thanks for your immediate response.
Since iPTR is a reserved type for tablegen internal use, can you make a
further explanation?
On the other hand, it can be simply treated as a register class assignment
problem during register allocation.
Assume both pointer and integet have a 32 bit width. backend handles it
just as to i32. When it performs register allocation, it can retrieve from
2013 Jun 21
0
[LLVMdev] Register Class assignment for integer and pointer types
We also have this problem, and have added iPTR types to the back end. Our pointers are actually fat pointers, so this also requires tweaking some optimisations (for example, things like to turn GEPs with 64-bit offsets into pointer-sized offsets, but our pointers are larger than any integer type that we support...). Most of the changes are a bit ugly, and I'm loath to upstream them without
2013 Jun 23
0
[LLVMdev] Register Class assignment for integer and pointer types
Hi,
In our version of LLVM, we've added different-sized iPTR* types, so we have an iPTR256 for our fat pointers. This causes some problems with constraints, because the way that TableGen resolves constraints is not expected to handle multiple pointer types. We've added a flag that can be set on a per-backend basis to turn this off.
Our problem is perhaps a bit different form yours,
2013 Jun 24
2
[LLVMdev] Register Class assignment for integer and pointer types
On Sun, Jun 23, 2013 at 04:57:44PM +0100, David Chisnall wrote:
> Hi,
>
> In our version of LLVM, we've added different-sized iPTR* types, so we have an iPTR256 for our fat pointers. This causes some problems with constraints, because the way that TableGen resolves constraints is not expected to handle multiple pointer types. We've added a flag that can be set on a per-backend
2013 Mar 15
3
[LLVMdev] Can the FileCheck ignore spaces ?
Hi all:
I'm writing testcase for the MC layer regression in llvm, the
disassembled string is a bit complicate, for example:
"IALU.T0 (I0) = BIU0.DM ; REPEAT AT ( 2 ) ;;"
The spaces in the disassembled string is error-prone. Is there any
option to tell the FileCheck utility to ignore the spaces ?
Kind Regards.
Shawn.
2014 Feb 19
2
[LLVMdev] [lldb-dev] How is variable info retrieved in debugging for executables generated by llvm backend?
Sorry, this is the attachment.
2014-02-19 15:08 GMT+08:00 杨勇勇 <triple.yang at gmail.com>:
> Thank you.
>
> Here is an example and the attchment contains extra files including object
> file and executable file.
> I want to print for example the value of "a", but lldb command "frame
> variable a" displays "0" and so does "b", and
2013 Sep 04
2
[LLVMdev] How to prevent Dead-Code-Elimination pass removing pseudo-instructions ADJCALLSTACK(DOWN | UP)?
Hi, LLVMer.
I use pseudo-instructions ADJCALLSTACK(DOWN | UP) to adjust call stacks,
and it works well with "-O0" option. However, ADJCALLSTACK(DOWN | UP) are
removed during codegen DCE pass under "-O2".
What have I ignored?
Thanks.
--
杨勇勇 (Yang Yong-Yong)
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2014 Feb 18
1
[LLVMdev] [lldb-dev] How is variable info retrieved in debugging for executables generated by llvm backend?
All of this information is contained in the DWARF debug info that you must generate. Are you generating DWARF? If not, you will need to. If so, please attach an example program that contains DWARF and specify which function you are having trouble getting variable information for.
Greg Clayton
On Feb 18, 2014, at 12:44 AM, 杨勇勇 <triple.yang at gmail.com> wrote:
> Hi, all
>
> I
2014 Feb 18
4
[LLVMdev] How is variable info retrieved in debugging for executables generated by llvm backend?
Hi, all
I ported llvm backend and lldb recently. Both tools can basically work.
lldb is able to debug programs in asm style and frame unwinding is OK.
But "frame variable XX" does not work because lldb is not able to determine
the address of
XX from debug info.
Can someone give any clue?
Thanks in advance.
--
杨勇勇 (Yang Yong-Yong)
-------------- next part --------------
An HTML
2013 Mar 16
1
[LLVMdev] Can the FileCheck ignore spaces ?
"--strict-whitespace
By default, FileCheck canonicalizes input horizontal whitespace (spaces
and tabs) which causes it to ignore these differences (a space will
match a tab). The/--strict-whitespace/
<http://llvm.org/docs/CommandGuide/FileCheck.html#cmdoption--strict-whitespace>argument
disables this behavior. End-of-line sequences are canonicalized to
UNIX-style ‘n’ in all
2013 Sep 04
0
[LLVMdev] How to prevent Dead-Code-Elimination pass removing pseudo-instructions ADJCALLSTACK(DOWN | UP)?
You should set them as using/defining your stack register with :
let Defs = [STACKREG], Uses = [STACKREG] in {
__ YOUR INSTRUCTION __
}
Marcello
On 04/09/13 07:56, 杨勇勇 wrote:
> I use pseudo-instructions ADJCALLSTACK(DOWN | UP) to adjust call
> stacks, and it works well with "-O0" option. However,
> ADJCALLSTACK(DOWN | UP) are removed during codegen DCE pass under
2013 Jul 09
2
[LLVMdev] A problem on returning value for functions
Hi,
I write a backend and come cross an abnormal problem. Here I give a example
to describe it:
///////////////////////////////////////////////////////////////////////////////////////////
// A simple C function
int foo()
{
return 1234;
}
/////////////////////////////////////////////////////////////////////////////////////////
When compiling foo() into my target ISA, I would expect codes
2013 Sep 18
2
[LLVMdev] How basic block layout is determined during scheduling?
Hi, guys,
I compiled a subroutine with -O2, and llvm backend produced codes like:
##################################################################
LBB0_32:
...
R31 = -1
R20 = R31 * R20;
....
bnz R2, LBB0_34
LBB0_31:
...
b LBB0_34
LBB0_33: # weird basic block?
R20 = R5
LBB0_34:
....
2013 Jul 09
0
[LLVMdev] A problem on returning value for functions
Hi,
> The headache is when I pass option -O0 to llc, the generated codes are
> correct. However, if I omit -O0 and use default compiling options, the
> instruction "movi r0, #1234" does not show.
It's probably being eliminated as dead code. You want to make sure
that during ISelLowering your RET instruction has %R0 as one of its
operands (check in the -view-isel-dags
2013 Sep 18
0
[LLVMdev] How basic block layout is determined during scheduling?
Hi Yang,
> bnz R2, LBB0_34
>
> I do not have any clue what happens when compiling with -O2.
> Can someone make a suggestion?
Is the "bnz" instruction marked "isBarrier" in your TableGen files? If
so, that would mean LLVM considers fallthrough impossible and decides
it can move LBB0_33 around at will. It's still very odd that it thinks
it can put it
2017 Jun 01
1
Some questions about software pipeline in LLVM 4.0.0
Hi - I replied to the original sender only by mistake. Sorry about that.
When we started working on the pipeliner, and added it before the scheduler,
we also were concerned that the scheduler or other passes would undo the
work of the pipeliner. The initial thought was that we would add information
(using metadata or some other way like you've suggested) to the basic block
to tell the
2012 Jul 25
2
[LLVMdev] VLIW code generation for LLVM backend
Hi,
It seems the only one VLIW target Hexagon in LLVM 3.2 devel uses a
straightforward way to emit its VLIW-style asm codes.
It uses a list scheduler to schedule on DAG and a simple packetizer to
wrap the emitted asm instructions.
Both scheduling and packetizing work on basic blocks.
so, is there any plan to implement better optimization methods such as
trace scheduling, software pipelining, ...