Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] What cause holes in a LiveInterval?"
2005 Dec 16
1
[LLVMdev] List Scheduling on LLVM Instructions
Didn't SparcV9 backend implement list scheduling?
2005/12/16, Chris Lattner <sabre at nondot.org>:
> On Thu, 15 Dec 2005, thean kiat sew wrote:
> > I am planning to use list scheduling on LLVM instructions.
> > Any recommendation on how to start ? As in which codes in LLVM that I need
> > to look at.
>
> We don't currently have a list scheduler in the
2005 Sep 27
1
[LLVMdev] How does the memory of MachineInstr objects are managed?
A question about how the memory of object in LLVM are managed.
I dived in some source files but still don't have any idea how the
memory of MachineInstr object are managed. It doesn't look like
reference counting.
I'm writing an instruction scheudling code, the new order of
MachineInstr* in a MachineBasicBlock is stored in a "schedule". All
MachineInstr* in
2005 Oct 11
1
[LLVMdev] Next LLVM release thoughts?
The automated tests seems not run periodically. Some builds are even
broken (http://llvm.cs.uiuc.edu/testresults/X86-niobe/), and some
failed (http://llvm.cs.uiuc.edu/testresults/SparcV9/).
Will there be another automated test be scheduled before the next release?
On 11/10/05, Bill Wendling <isanbard at gmail.com> wrote:
> Frequently releasing software can be a good thing. Especially
2005 Dec 13
3
[LLVMdev] The live interval of write-only registers
In my ISA, some registers are write-only. These registers serve as
output ports, writing to these registers will output the values to an
external device. They cannot be read. So their live intervals should
not be joined with any other registers.
The only way I know to do this is defining several instruction
'templates' for an opcode (of course automatically generated by a
script) similar
2005 Dec 13
2
[LLVMdev] The live interval of write-only registers
2005/12/13, Chris Lattner <sabre at nondot.org>:
> > For example, this a code snippet for the file generated by the TableGen tool:
> ...
> > Somewhere in my code, I have to write:
> > unsigned opcode = MI->getOpcode(); // MachineInstr*
> > if (CMPfaaaa == opcode ||
> > CMPfaaar == opcode ||
> > CMPfaara == opcode ||
> > ...
2005 Dec 13
1
[LLVMdev] The live interval of write-only registers
2005/12/13, Chris Lattner <sabre at nondot.org>:
> On Tue, 13 Dec 2005, Tzu-Chien Chiu wrote:
>
> > In my ISA, some registers are write-only. These registers serve as
> > output ports, writing to these registers will output the values to an
> > external device. They cannot be read. So their live intervals should
> > not be joined with any other registers.
>
2005 Sep 07
3
[LLVMdev] LiveIntervals invalidates LiveVariables?
I though LiveVariables may be invalidated by LiveIntervals, but it's
declared not:
void LiveIntervals::getAnalysisUsage(AnalysisUsage &AU) const
{
AU.addPreserved<LiveVariables>();
AU.addRequired<LiveVariables>();
...
LiveInterval may coalesce virtual registers and remove identity moves
instructions:
bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
2005 Sep 07
4
[LLVMdev] LiveIntervals, replace register with representative register?
I don't understand the following code snippet in LiveIntervalAnalysis.cpp.
Why changing the type of the opreand from a virtual register to a
machine register? The register number (reg) is still a virtual
register index (>1024).
bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
// perform a final pass over the instructions and compute spill
// weights, coalesce
2005 Sep 22
3
[LLVMdev] name collision - llvm::tie and boost::tie
The BGL (Boost Graph Library) defines tie(), which is exactly what the
tie() defined in STLExtras.h.
The header files of GBL use boost::tie(), and other boost libraries
use boost::tie() too.
How to resolve the ambiguity for compiler?
--
Tzu-Chien Chiu,
3D Graphics Hardware Architect
<URL:http://www.csie.nctu.edu.tw/~jwchiu>
2005 Dec 15
3
[LLVMdev] Vector LLVM extension v.s. DirectX Shaders
Dear all:
To write a compiler for Microsoft Direct3D shaders from our hardware,
I have a program which translates the Direct3D shader assembly to LLVM
assembly. I added several intrinsics for this purpose.
It's a vector ISA and has some special instructions like:
* rcp (reciprocal)
* frc (the fractional portion of each input component)
* dp4 (dot product)
* exp (exponential)
* max, min
These
2005 Sep 20
2
[LLVMdev] Requiring LiveIntervals
One of my pass requires LiveIntervals to build the interference graph,
because LiveVariables do not provide an interface to iterate through
all viritual registers. But LiveIntervalAnalysis.h is not in
"include/llvm/CodeGen", so I have to either include it by:
#include "../../llvm/lib/CodeGen/LiveIntervalAnalysis.h"
or point my project include path to
2005 Sep 07
1
[LLVMdev] LiveIntervals, replace register with representative register?
On 08/09/05, Chris Lattner <sabre at nondot.org> wrote:
> This code isn't actually replacing the virtual register with a physreg.
Then why changing its optype?
It makes the assertion fails:
MachineOperand& MO = inst.getOperand(n);
if (MRegisterInfo::isVirtualRegister(MO.getReg())) {
assert(MachineOperand::MO_VirtualRegister == MO.getType());
...
}
Is that alright?
Some
2005 Sep 07
1
[LLVMdev] LiveIntervals invalidates LiveVariables?
On 08/09/05, Alkis Evlogimenos <evlogimenos at gmail.com> wrote:
> to those coalesced registers, it is logical that noone will ever query
> the liveness of those registers (unless there is a bug somewhere in the
Indeed the coalesced registers may logically not be queried since they
do not appear in any operand list of the machine code, but the
VarInfo::DefInst in VirtRegInfo of the
2005 Sep 07
1
[LLVMdev] LiveIntervals, replace register with representative register?
On 08/09/05, Alkis Evlogimenos <evlogimenos at gmail.com> wrote:
> representative register (found using a union find algorithm). Note that
> the representative register could be a real register if we ever joined
> an interval of a real register with one of a virtual register (and this
> real register will be the representative register of the set of
> intervals joined
2005 Dec 13
0
[LLVMdev] The live interval of write-only registers
On Tue, 13 Dec 2005, Tzu-Chien Chiu wrote:
> In my ISA, some registers are write-only. These registers serve as
> output ports, writing to these registers will output the values to an
> external device. They cannot be read. So their live intervals should
> not be joined with any other registers.
Ok. Since they are not really registers in the sense that LLVM is used
to, I
2005 Nov 03
0
[LLVMdev] [DRAFT] Announcement for LLVM 1.6 [DRAFT]
The vector LLVA extension will not be merged into the 1.6 release branch?
It will make me have to merge twice: one for 1.6 and one for vector LLVA.
When do you plan to merge the vector LLVA to the main trunk, please?
On 26/10/05, Chris Lattner <sabre at nondot.org> wrote:
>
> Hi All,
>
> I'm putting together the announcement for the LLVM 1.6 release. Here is
> what I
2005 Jul 23
3
[LLVMdev] How to partition registers into different RegisterClass?
2005/7/23, Chris Lattner <sabre at nondot.org>:
>
> What does a 'read only' register mean? Is it a constant (e.g. returns
> 1.0)? Otherwise, how can it be a useful value?
Yes, it's a constant register.
Because the instruction cannot contain an immediate value, a constant
value may be stored in a constant register, and it's defined _before_
the program starts by
2005 Jul 26
1
[LLVMdev] How to partition registers into different RegisterClass?
2005/7/26, Chris Lattner <sabre at nondot.org>:
> Tzu-Chien Chiu wrote:
> > The same problem exists when there are two types of costant registers,
> > floating point and integer, and each is declared 'packed' ([4xfloat]
> > and [4xint]). The instruction selector doesn't know which instruction
> > it should produce because the newly defined MVT type
2005 Jul 22
2
[LLVMdev] How to partition registers into different RegisterClass?
All registers in my hardware are 4-element vector registers (128-bit).
Some are floating point registers, and the others are integer
registers.
I typedef two packed classes: [4 x float] and [4 x int], and add an
enum 'packed' to MVT::ValueType (ValuesTypes.h).
I declared all 'RegisterClass'es to be 'packed' (first argument of
RegisterClass):
def GeneralPurposeRC :
2005 Sep 18
2
[LLVMdev] LLVM-TV web page link is broken?
http://llvm.cs.uiuc.edu/~gaeke/llvm-tv
File Not Found?
--
Tzu-Chien Chiu,
3D Graphics Hardware Architect
<URL:http://www.csie.nctu.edu.tw/~jwchiu>