Displaying 20 results from an estimated 120 matches similar to: "How to finalize instruction lowering after register allocation."
2019 Jun 25
2
How to handle ISD::STORE when both operands are FrameIndex?
On Mon, Jun 24, 2019 at 4:08 PM Tim Northover <t.p.northover at gmail.com>
wrote:
> On Mon, 24 Jun 2019 at 12:16, Gleb Popov via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> > 1. Where does it come from? Can I do anything to make it not appear?
>
> It comes from something like:
>
> %ptr = alloca i8
> %var = alloca i8*
> store i8* %ptr, i8**
2019 Jun 24
3
How to handle ISD::STORE when both operands are FrameIndex?
Hello.
After "Initial selection DAG" stage I get a DAG with node
t14: ch = store<(store 4 into %ir.p45, align 8, addrspace 1)> t10,
FrameIndex:i32<2>, FrameIndex:i32<3>, undef:i32
1. Where does it come from? Can I do anything to make it not appear?
2. If not, how do I change it so that the operand being stored would be
first loaded into a register, and that register
2011 Jun 29
2
parse XML file
Hi all,
this is my first post in this mailing group. I hope that anyboby could
help me parsing a xml file.
I found this website http://www.omegahat.org/RSXML/gettingStarted.html
but unfortunately my XML file is not as easy as the one in the example.
Example:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet
2009 May 20
2
Example for parsing XML file?
Hi,
I am trying to parse XML files and read them into R as a data frame,
but have been unable to find examples which I could apply
successfully.
I'm afraid I don't know much about XML, which makes this all the more
difficult. If someone could point me in the right direction to a
resource (preferably with an example or two), it would be greatly
appreciated.
Here is a snippet from one of
2019 Jun 26
2
How to handle ISD::STORE when both operands are FrameIndex?
On Tue, Jun 25, 2019 at 9:59 AM Tim Northover <t.p.northover at gmail.com>
wrote:
> On Tue, 25 Jun 2019 at 06:26, Gleb Popov via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> >> While the store is being selected LLVM will just treat the value being
> >> stored as a generic pointer-width integer unless you have written a
> >> specific pattern for
2018 Mar 29
4
Mapping virtual registers to physical registers
Hi,
In the context of MachineCode custom inserter, I'm trying to enforce the mapping of virtual register to a physical one.
According to the documentation https://llvm.org/docs/CodeGenerator.html#mapping-virtual-registers-to-physical-registers
There are two ways: the direct one and the indirect ones. The indirect ones refer VirtRegMap class that I've never found. So I tried the direct
2017 Jul 27
2
Are there some strong naming conventions in TableGen?
Hi,
For the development of a new micro-controller backend, I try to lowering the following store SDNode: t5: ch = store<ST2[%ptr2](align=4)> t0, Constant:i16<3>, FrameIndex:i16<1>, undef:i16
I have defined the following instruction and associated DAG pattern.
def MOVSUTO_A_i32o : CLPFPU_A_i32o_Inst<0b1000001101,
2018 Mar 27
1
Live Interval Analysis and pipelining.
Hi,
I'm writing a backend for a proprietary microcontroller.
I'm facing a limitation related to Live Interval Analysis.
Some FPU instructions, most notably the FDIV, requires a few cycles to complete.
There is a pipeline and, during the execution of the FDIV, others instructions could be executed in parallel, provided they don't use the same registers.
This pipeline has been modeled
2017 Sep 20
1
Store lowering -> Cannot select FrameIndex.
Hi,
I'm try to lower the store LLVM-IR instruction as per the following LLVM IR program:
*** IR Dump After Module Verifier ***
define void @storeloadi32() {
%ptr = alloca i32
store volatile i32 12, i32* %ptr
ret void
}
The target instruction is associated to the store like this:
def MOVSUTO_A_iSLr : CLPFPU_A_iSLr<0b1000001101,
2018 Mar 30
0
Mapping virtual registers to physical registers
Hi again,
After further investigation, I've found that the private PhysRegUseDefLists array ("head of use/def list for physical register") from MachineRegisterInfo class seems to be empty.
But I didn't found any methods for updating such data structure. How/where this "use/def list" should be managed ?
Is the documentation
2017 Jul 24
2
How to lower a 'Store' node using the list<dag> pattern.
Hi,
I'm trying to complete the lowering for a new microcontroller. I'm using LLVM 3.8.
For now this lowering crashes on 'Store' node, which is actually not yet defined.
I've tried to map the ISel 'Store' node to architecture specific instructions.
I've define the following semantic to my architecture specific instructions:
def MOVSUTO_SU_rr :
2018 May 04
2
How to constraint instructions reordering from patterns?
Hi,
Is there a kind of scope mechanism in the instruction lowering pattern language in order to control where instructions are inserted or how they are later reordered during the SelectionDiag linearization?
I know the glue chain that stick instructions together. But such mechanism in not provided in instruction lowering pattern.
I'm facing many situations where some patterns are lowered into
2018 Apr 03
1
Mapping virtual registers to physical registers
Hi Krzysztof, Thanks for your response.
I was trying to map function input parameters to machine specific registers.
My solution I found is based to the RegInfo.setSimpleHint() API.
Here is the body of the parameters loop of TargetLowering::LowerFormalArguments
VReg = RegInfo.createVirtualRegister(RC);
RegInfo.setSimpleHint(VReg,CLP::FA_ROFF1+i);
2018 Apr 02
0
Mapping virtual registers to physical registers
Hi Dominique,
From your description it is not really clear what you are trying to do
here. It may be the case that the goal you are trying to accomplish can
be better reached using a different approach.
In general, optimizations don't try to assign physical registers, that's
done by the register allocation passes. There are some cases when
target-specific passes use physical
2014 Mar 06
4
[LLVMdev] llvm-mc and endianess.
Hi,
As a first step to port the LLVM chain on an in-house big-endian processor, I'm integrating the native assembler as a new '-assemble -arch=' in llvm-mc.
All work quite well, I have a correct output ELF format except that generated code is little-endian.
I've understood that the endianess of the LLVM chain is controlled by the DataLayout class, but it appear to me that llvm-mc
2018 May 04
2
How to constraint instructions reordering from patterns?
The DAG dumping will try to print some of the nodes "inline" (i.e. where
they are used) to make the output more readable, so the dump of the DAG
may not strictly reflect the node ordering.
-Krzysztof
On 5/4/2018 8:18 AM, Dominique Torette via llvm-dev wrote:
> Here is a last example to illustrate my concern.
>
> The problem is about the lowering of node t13.
>
>
2018 Sep 20
2
Errononous scheduling of COPY instruction.
Hi,
I've instruction scheduling problem that I cannot further investigate by myself... Could someone give me some clues?
After Instruction selection, here is part of the generated instruction.
NOP
MOV_AB_ro @s1, %fab_roff0
%6:fpuaoffsetclass = COPY %fab_roff0; FPUaOffsetClass:%6
MOV_A_oo %6, def %5; FPUaOffsetClass:%6,%5
MOVSUTO_A_iSLo 24575, def %7;
2018 May 04
0
How to constraint instructions reordering from patterns?
Krzysztof,
Thanks for your interest to my questions.
In order to clarify the context, here is the C source file of my test case.
The 3 builtins initialize some stack pointers. They have to be executed before any other instruction.
extern float fdivfaddfmul_a(float a, float b, float c, float d);
volatile static float x1,x2,x3,x4;
void _start(void)
{
float res;
2018 Apr 23
2
pre-RA scheduling/live register analysis optimization (handle move) forcing spill of registers
Hi,
I have a question related to pre-RA scheduling and spill of registers.
I'm writing a backend for two operands instructions set, so FPU operations result have implicit destination.
For example, the result of FMUL_A_oo is implicitly the register FA_ROUTMUL.
I have defined FPUaROUTMULRegisterClass containing only FA_ROUTMUL.
During the instruction lowering, in order to avoid frequent spill
2017 Sep 27
0
PEI::replaceFrameIndices() endless loop
Hi,
My backend (based on version 3.8) was hanging in an infinite loop in the Prolog/Epilog Inserter.
After investigation, it appears that it was looping in the first level loop of the PEI::replaceFrameIndices() method: processing the second instruction of the block again and again...
This loop never exits because the iterator is 'skipped backward' under some condition in the middle of