Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] Use SEGMENT_REG in X86 calling convention"
2020 Sep 09
2
spill to register not stack?
Hi Brian,
+1 on what Nemanja said: specifying large register classes is the key.
More details here:
http://lists.llvm.org/pipermail/llvm-dev/2019-December/137700.html <http://lists.llvm.org/pipermail/llvm-dev/2019-December/137700.html>
Cheers,
-Quentin
> On Sep 9, 2020, at 11:13 AM, Nemanja Ivanovic via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> On PowerPC, we
2018 Jan 30
3
Disable spilling sub-registers in LLVM
Right Matthias, I am aware that an implementation for
storeRegToStackSlot()/loadRegFromStackSlot() is necessary. But these
functions receive the physical register that need to be spilled, they
might receive the sub-register. In this case, using the super-register
naively is unsafe (e.g., one might overwrite parts of it). Thus, I think
the register allocator/spillar need to be aware of the
2018 Jan 30
0
Disable spilling sub-registers in LLVM
To make my point clear, I believe an implementation of
storeRegToStackSlot()/loadRegFromStackSlot() is not sufficient (as it
received the physical register already). Does this make sense?
On 2018-01-30 13:33, ahmede wrote:
> Right Matthias, I am aware that an implementation for
> storeRegToStackSlot()/loadRegFromStackSlot() is necessary. But these
> functions receive the physical
2008 Oct 22
2
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some other physical register which may be holding a live value used somewhere else. How do I make regalloc aware so that it saves the value before storeRegToStackSlot and make it available again at the point of earlier use?
TIA,
Sanjiv
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2015 Mar 18
2
[LLVMdev] missing register spills?
Hi folks,
I'm running into this weird issue where the register spills appear to be missing for an "if" block for some reason. For example, the original if/else blocks:
---
if reg0
// storeRegToStackSlot for reg1
// do something
- missing a load for reg1?
else
// storeRegToStackSlot for reg1
// do something
// loadRegFromStackSlot for reg1
end
----
I tried looking in the LLVM
2018 Jan 30
3
Disable spilling sub-registers in LLVM
Hi Quentin,
Let me clarify if I understood this correctly.
If the accesses (writes and reads) to sub-registers are expressed always
as sub-registers of the super-register register class (e.g.,
SuperReg.sub1;), then the spilling decision is for the super register.
But, if the accesses are in terms of the register class of the
sub-registers directly (SubReg;), then the spilling decision will
2010 Aug 29
1
[LLVMdev] [Website] Error in the documentation on the website.
On the page "http://llvm.org/docs/CodeGenerator.html#regAlloc_howTo" under
the header "Register Allocation" and subheader "Mapping Virtual Registers to
Physical Registers" the api reference
"TargetRegisterInfo::storeRegToStackSlot(...)" and "
TargetRegisterInfo::loadRegFromStackSlot"
should be
"TargetInstrInfo::storeRegToStackSlot(...)"
2013 Mar 25
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mar 25, 2013, at 1:41 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> Hi Jakob,
>
> I believe Hal is trying to enable register scavenger to find two (or more) registers that can be used as temporaries.
>
> One problem I see with this approach is that, if you use register scavenger during PEI, you will have to pessimistically set aside two emergency spill slots before
2018 Jan 30
0
Disable spilling sub-registers in LLVM
I still think my answer applies that you have to modify storeRegToStackSlot()/loadRegFromStackSlot(). They decide how registers are spilled and reloaded. Nobody is stopping you from using super registers spills/reloads to implement spilling/reloading smaller registers there.
- Matthias
> On Jan 30, 2018, at 10:21 AM, ahmede <ahmede at ece.ubc.ca> wrote:
>
> Hi Quentin,
>
>
2008 Oct 23
0
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
On Oct 22, 2008, at 11:09 AM, Sanjiv.Gupta at microchip.com wrote:
> In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some
> other physical register which may be holding a live value used
> somewhere else. How do I make regalloc aware so that it saves the
> value before storeRegToStackSlot and make it available again at the
> point of earlier use?
>
2018 Jan 29
2
Disable spilling sub-registers in LLVM
Hi,
I wonder if there is a way in LLVM to disable spilling a register-class
while still enabling the super-registers of this register-class to be
spilled.
If not, how can we implement spilling for sub-registers when stack
load/stores can only operate on the super registers? Is there a way even
if it is suboptimal?
Thanks,
Ahmed
2008 Oct 28
1
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
On Thu, 2008-10-23 at 11:17 -0700, Evan Cheng wrote:
>
> On Oct 22, 2008, at 11:09 AM, Sanjiv.Gupta at microchip.com wrote:
>
> > In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some
> > other physical register which may be holding a live value used
> > somewhere else. How do I make regalloc aware so that it saves the
> > value before
2017 Feb 17
7
RFC: Setting MachineInstr flags through storeRegToStackSlot
## Problem description
One of the responsibilities of a target's implementation of
TargetFrameLowering::emitPrologue is to set the frame pointer (if needed).
Typically, the frame pointer will be stored to the stack just like the other
callee-saved registers, and emitPrologue must insert the instruction to change
its value after it was stored to the stack. Mips does this by looking at the
2010 Jul 20
2
[LLVMdev] Spilling multi-word virtual registers
Does anybody have any tips for generating spills/reloads for large
non-vector registers?
I'm working on a back end for a DSP architecture that has accumulator
registers that are too large to be spilled or reloaded with a single
instruction. All of their bits can be accessed in word-size chunks via
three sub-registers (low, high, and ext). So loading or storing one
requires three instructions:
2016 Oct 24
2
Instruction selection confusion at register - chooses vector register instead of scalar one
Hello.
I have extended the BPF back end with vector registers (inspiring from Mips MSA) -
something like this:
def MSA128D: RegisterClass<"Connex", [v128i16], 32,
(sequence "Wh%u", 0, 31)>;
I also added vector store and load instructions in the style of Mips MSA - see
2012 Nov 10
5
[LLVMdev] register scavenger
I'm confused as to the logic used in the register scavenger when it
cannot find a free register.
I would think that it would want to free up the emergency spill slot
immediately after it's use, because otherwise there is a chance of
needing to use the emergency slot again and not be able to.
Instead it tries to restore it only right before register it is freeing up.
Maybe I'm
2016 Oct 25
0
Instruction selection confusion at register - chooses vector register instead of scalar one
Spills created at the end of the block (I assume you mean what fast regalloc does at -O0) are created long after instruction selection. In that case it sounds like your implementation of storeRegToStackSlot/loadRegFromStackSlot is broken
-Matt
On Tue, Oct 25, 2016 at 7:30 AM +0800, "Alex Susu via llvm-dev" <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>>
2020 Sep 09
2
spill to register not stack?
Given an architecture with two classes of registers: A is general purpose and
has an "adequate" number of registers, and C which is special purpose and has
very few (e.g. one) register. There are cheap instructions that directly copy
from C to A and vice versa.
If we need another C register and they are all live, we need to spill one.
Currently as far as I can tell, the only way to
2018 Jan 30
2
Disable spilling sub-registers in LLVM
Hi Matthias,
No. I want the register allocator to spill the super-register (the large
one e.g., 64-bit) and not just the sub-register (e.g., the 32-bit that
is a piece of of the 64-bit register) because the stack loads/store
width is 64-bit in this example.
RegClass1 (sub-registers): sub_registers (32-bit) -->
can be natively used in arithmetic operations but no stack
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