Displaying 20 results from an estimated 6000 matches similar to: "[LLVMdev] New register allocation hinting mechanism"
2012 Jul 13
0
[LLVMdev] How to specify that Src Reg and Dest Reg can't be the same in td?
Hi Wei-Ren,
I don't think you can model it with Constraints in td files. You may try
to put a regalloc hint in src and dst operands of the instructions you
are interested.
See getRawAllocationOrder(), ResolveRegAllocHint() and
UpdateRegAllocHint() hooks in TargetRegisterInfo. ARM has good examples
on how to implements them.
Ivan
On 13/07/2012 09:28, 陳韋任 (Wei-Ren Chen) wrote:
> Hi
2011 Feb 09
0
[LLVMdev] Lowering "memcpy" intrinsic function on ARM using LDMIA/STMIA
-fno-builtin is the flag you want.
deep
On Wed, Feb 9, 2011 at 10:18 PM, Корчагин Василий
<vasiliy.korchagin at gmail.com> wrote:
> 09.02.2011 18:57, Jason Kim пишет:
>> On Wed, Feb 9, 2011 at 5:02 AM, Vasiliy Korchagin
>> <vasiliy.korchagin at gmail.com> wrote:
>>> Hi,
>>>
>>> llvm emits code for "memcpy" on ARM as consecutive
2011 Feb 09
3
[LLVMdev] Lowering "memcpy" intrinsic function on ARM using LDMIA/STMIA
09.02.2011 18:57, Jason Kim пишет:
> On Wed, Feb 9, 2011 at 5:02 AM, Vasiliy Korchagin
> <vasiliy.korchagin at gmail.com> wrote:
>> Hi,
>>
>> llvm emits code for "memcpy" on ARM as consecutive ldr/str commands, and
>
> Hmm, this happens elsewhere as well (x86?). Perhaps what we need is a
> switch to disable memset/memcpy lowering?
>
Do you
2011 Feb 09
0
[LLVMdev] Lowering "memcpy" intrinsic function on ARM using LDMIA/STMIA
On Wed, Feb 9, 2011 at 5:02 AM, Vasiliy Korchagin
<vasiliy.korchagin at gmail.com> wrote:
> Hi,
>
> llvm emits code for "memcpy" on ARM as consecutive ldr/str commands, and
Hmm, this happens elsewhere as well (x86?). Perhaps what we need is a
switch to disable memset/memcpy lowering?
> further combines them into ldm/stm with special pass after register
>
2011 Feb 09
3
[LLVMdev] Lowering "memcpy" intrinsic function on ARM using LDMIA/STMIA
Hi,
llvm emits code for "memcpy" on ARM as consecutive ldr/str commands, and
further combines them into ldm/stm with special pass after register
allocation. But ldm/stm commands require registers to go in ascending
order, what is often not so after regalloc, therefore some str/ldr
commands. For example such code:
struct Foo {int a, b, c, d; }
void CopyStruct(struct Foo *a, struct
2011 Jun 23
2
[LLVMdev] Instr Description Problem of MCore Backend
Hi, all:
Now I'm working on writing a backend for Moto MCore, but I don't know how to
describe some instructions.
First, I've already written MCoreRegisterInfo.td like these:
class MCoreReg<bits<4> num, string name> : Register<name> {
let Namespace = "MCore";
field bits<4> Num = num;
}
def R0 : MCoreReg< 0, "R0">,
2016 Jun 02
2
PBQP register allocation and copy propagation
Hi Lang and Arnaud,
I've been testing out the PBQP allocator for Thumb-2 and have ran into a
problem I'd love to get your input on.
The problem is exemplfied in the codegen for the function @bar in the
attached IR file:
bar:
push {r4, lr}
sub sp, #12
(1) movw r2, :lower16:.L_MergedGlobals
(1) movt r2, :upper16:.L_MergedGlobals
ldm.w r2,
2010 Mar 19
2
[LLVMdev] Instruction with variable number of outputs
Hi,
After Bob fixed the two-address format of the ARM ldm/stm instructions, a problem remains. The load multiple instruction looks like:
// A list of registers separated by comma. Used by load/store multiple.
def reglist : Operand<i32> {
let PrintMethod = "printRegisterList";
}
def LDM : AXI4ld<(outs), (ins addrmode4:$addr, pred:$p,
reglist:$dsts,
2010 Mar 19
0
[LLVMdev] Instruction with variable number of outputs
On Mar 19, 2010, at 7:46 AM, Jakob Stoklund Olesen wrote:
> Hi,
>
> After Bob fixed the two-address format of the ARM ldm/stm instructions, a problem remains. The load multiple instruction looks like:
>
> // A list of registers separated by comma. Used by load/store multiple.
> def reglist : Operand<i32> {
> let PrintMethod = "printRegisterList";
> }
2013 Jun 19
1
[LLVMdev] Register coalescer and reg_sequence (virtual super-regs)
Was it the subreg lane masks / mapping that was added to address the missed
coalescing? This solution is nice, but I don't think it'll work for me. I
have 8-element vector registers that can be grouped into virtual super regs
for bulk save/restore, and as soon as I have more than 4 in a tuple, the
unsigned int used to hold the lane masks overflows and switches over to the
"bit 31 set
2010 Mar 19
2
[LLVMdev] Instruction with variable number of outputs
On Mar 19, 2010, at 10:28 AM, Chris Lattner wrote:
>
> On Mar 19, 2010, at 7:46 AM, Jakob Stoklund Olesen wrote:
>
>> Hi,
>>
>> After Bob fixed the two-address format of the ARM ldm/stm instructions, a problem remains. The load multiple instruction looks like:
>>
>> // A list of registers separated by comma. Used by load/store multiple.
>> def
2016 Jun 03
2
PBQP register allocation and copy propagation
Hi James,
I’ve tried to play in the past with the allocation order, which can definitely be tweaked and improved. The metric we use for spill cost being what it is (i.e. not targeted for PBQP, but that’s a different subject), I found it made real sense to use some other heuristics to sort nodes (on top of the spill cost) when there was a tie between them. Of course, that’s a heuristic and it can
2012 Oct 05
0
[LLVMdev] Distinguish variadic register defines/uses in MCInstrDesc?
Hallo,
I worked on how to handle the distinction between variadic defines and uses
and my current solution is this:
I introduce a new dag item in Instruction called VariadicOperandList, which by
default is undefined. It keeps a marker variable_* and all operands which are
placeholders for variable lists (like 'reglist' on ARM).
I think it's the cleanest solution to keep them in a
2006 Sep 18
0
[LLVMdev] how to declare that two registers must be different
> "The destination register shall not be the same as the operand
> register Rm. R15 shall not be used as an operand or as the
> destination register."
The ARM ARM has this "Operand restriction" on MUL:
Specifying the same register for <Rd> and <Rm> has UNPEDICTABLE results.
> Then, for the load and store multiple instructions, LDM and STM,
2006 Sep 18
4
[LLVMdev] how to declare that two registers must be different
Hi Chris,
> On Sun, 17 Sep 2006, [UTF-8] Rafael Esp?ndola wrote:
> > The ARM has a multiply instruction of the form Rd=Rm*Rs where Rd !=
> > Rm. How can I add this requirement to the instruction definition?
>
> ...
>
> I'd like to make the regalloc interfaces more powerful to be able to
> capture this sort of thing, but I'm not very familiar with ARM.
2012 Nov 15
1
[LLVMdev] problem trying to write an LLVM register-allocation pass
Thanks Lang, I'll try substPhysReg.
I did try your latest code, and although it made the assembler errors go
away, now some of my tests produce bad output when executed. I need to
look into that some more... (I did change my "usedPregSet" to be ALL
pregs used in the whole function, not just those in the current
instruction, so the problem should not be the erroneous
2020 Sep 04
2
Intel AMX programming model discussion.
On 9/4/20 3:37 AM, Luo, Yuanke wrote:
>
> Hi Hal,
>
> Thank you for the ideas that help us to improve the design, and sorry
> for replying late. There is something I am not able to figure out and
> there some special trait for tile RA.
>
You're quite welcome.
> 1.X86RegisterInfo::getRegAllocationHints can tell RA which physical
> register is preferred, but it
2012 Sep 26
2
[LLVMdev] Distinguish variadic register defines/uses in MCInstrDesc?
Am Mittwoch, 26. September 2012, 11:18:20 schrieb Jakob Stoklund Olesen:
> Hi Christoph,
>
> As you noticed, MCInstrDesc doesn't distinguish between variadic uses and
> defs. Since variadic instructions will always require some kind of special
> handling, it doesn't seem worthwhile to make the model more detailed.
I don't see what makes them so different from other
2020 Sep 04
2
Intel AMX programming model discussion.
Fix typo
From: Luo, Yuanke
Sent: Friday, September 4, 2020 9:47 PM
To: 'Hal Finkel' <hfinkel at anl.gov>; Topper, Craig <craig.topper at intel.com>; Kaylor, Andrew <andrew.kaylor at intel.com>; Philip Reames <listmail at philipreames.com>; llvm-dev at lists.llvm.org; florian_hahn at apple.com; Lu, Hongjiu <hongjiu.lu at intel.com>
Subject: RE: [llvm-dev]
2020 Aug 24
2
Intel AMX programming model discussion.
Hi, Yuanke,
Thanks for writing this up. Let me back up a bit because the scheme I
proposed last week doesn't work without further modification: within a
particular "configuration region" (i.e., the code in between the
LDTILECFG and the TILERELEASE (or next LDTILECFG)), each tile register
can only be used with one shape, and in addition, no register can have
its shape changed