similar to: "Earlyclobber" but for a subset of the inputs

Displaying 20 results from an estimated 400 matches similar to: ""Earlyclobber" but for a subset of the inputs"

2018 Dec 05
2
Strange regalloc behaviour: one more available register causes much worse allocation
Preamble -------- While working on an IR-level optimisation completely unrelated to register allocation I happened to trigger some really strange register allocator behaviour causing a large regression in bzip2 in spec2006. I've been trying to fix that regression before getting the optimisation patch committed, because I don't want to regress spec2006, but I'm basically fumbling in
2020 May 05
2
"Earlyclobber" but for a subset of the inputs
Hi Quentin, > It sounds like you only need the earlyclobber description for the N, N > variant. > In other words, as long as you use different opcodes for widen-op NN and > widen-op WN, you model exactly what you want. > > What am I missing? > we are using different opcodes for widen-op NN and widen-op WN. My understanding is that not setting earlyclobber to the W, N
2018 Dec 05
3
Strange regalloc behaviour: one more available register causes much worse allocation
enableAdvancedRASplitCost() does the same thing as ConsiderLocalIntervalCost, but as a subtarget option instead of a command-line option, and as I’ve said it doesn’t help because it’s a non-local interval causing the eviction chain (RAGreedy::splitCanCauseEvictionChain only considers the local interval for a single block, and it’s unclear to me how to make it handle a non-local interval). John
2012 Jul 14
2
[LLVMdev] Issue with Machine Verifier and earlyclobber
Hello, I'm getting a machine verifier error after introducing the earlyclobber constraint to some instructions where the src and dest regs can't be the same. The offending instruction pattern is this one: let canFoldAsLoad = 1, isReMaterializable = 1, Constraints = "@earlyclobber $dst" in def LDDWRdPtrQ : Inst<(outs DREGS:$dst), (ins memri:$src),
2012 Jul 14
0
[LLVMdev] Issue with Machine Verifier and earlyclobber
On Jul 14, 2012, at 10:09 AM, Borja Ferrer <borja.ferav at gmail.com> wrote: > Hello, > > I'm getting a machine verifier error after introducing the earlyclobber constraint to some instructions where the src and dest regs can't be the same. The offending instruction pattern is this one: > > let canFoldAsLoad = 1, > isReMaterializable = 1, > Constraints =
2012 Jul 14
2
[LLVMdev] Issue with Machine Verifier and earlyclobber
Hello Jakob, I'm still getting the error, I can give you any other debug info you need. I haven't pasted the regalloc debug info here because it is quite huge, but if you tell me what specific details you need I will include them. Thanks for your help! 2012/7/14 Jakob Stoklund Olesen <stoklund at 2pi.dk> > > On Jul 14, 2012, at 10:09 AM, Borja Ferrer <borja.ferav at
2012 Jul 15
2
[LLVMdev] Issue with Machine Verifier and earlyclobber
On Jul 15, 2012, at 9:20 AM, Borja Ferrer <borja.ferav at gmail.com> wrote: > Jakob, one more hint, I've placed some asserts around the code you added and noticed that the InlineSpiller::insertReload() function is not being called. > > 2012/7/14 Borja Ferrer <borja.ferav at gmail.com> > Hello Jakob, > > I'm still getting the error, I can give you any other
2012 Jul 15
0
[LLVMdev] Issue with Machine Verifier and earlyclobber
Jakob, one more hint, I've placed some asserts around the code you added and noticed that the InlineSpiller::insertReload() function is not being called. 2012/7/14 Borja Ferrer <borja.ferav at gmail.com> > Hello Jakob, > > I'm still getting the error, I can give you any other debug info you need. > I haven't pasted the regalloc debug info here because it is quite
2012 Jul 16
1
[LLVMdev] Issue with Machine Verifier and earlyclobber
On Jul 15, 2012, at 4:50 PM, Borja Ferrer <borja.ferav at gmail.com> wrote: > I think I'm getting a bit closer to the problem. I've found that the call to InlineSpiller::foldMemoryOperand() inside InlineSpiller::spillAroundUses() is causing the problems. > As a test, I removed that call and with your yesterday's patch I'm not getting any errors at all, the code
2012 Jul 15
0
[LLVMdev] Issue with Machine Verifier and earlyclobber
I think I'm getting a bit closer to the problem. I've found that the call to InlineSpiller::foldMemoryOperand() inside InlineSpiller::spillAroundUses() is causing the problems. As a test, I removed that call and with your yesterday's patch I'm not getting any errors at all, the code generated is the same one as with the call. This is happening when
2009 Dec 16
2
[LLVMdev] Early-clobber constraint in TableGen
On Dec 15, 2009, at 5:08 PM, David Greene wrote: > On Tuesday 15 December 2009 18:01, Jim Grosbach wrote: > >> For a usage example, I've included in the patch the modification to >> use the constraint for the STREX ARM instruction. > > Your example is: > > constraints = "@early $success" > > Why not spell it as: > > constraints =
2017 May 28
2
Pseudo-instruction that overwrites its input register
Hi, I'd like to define a pseudo-instruction whose expansion will, as a side-effect, overwrite an input register's value: the pseudo-instruction ldw r1:r2, P to load 2 bytes from memory address P is to be expaneded to ld r1, P+ ld r2, P where "ld _, P+" is an instruction that loads a single byte from P, and post-increments P by one. How can I represent this behaviour in
2013 Jul 16
3
[LLVMdev] Operand constrain specification
Hi, How can I specify in a .td file that source and destination should not use the same register? Thanks. - Elena --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If
2009 Dec 16
0
[LLVMdev] Early-clobber constraint in TableGen
On Tuesday 15 December 2009 19:52, Jim Grosbach wrote: > Do you have specific examples in mind that would be expressible with > something more complicated that aren't handleable via an early-clobber > constraint? Not offhand, no. I'm mostly concerned about the readability of .td files. > Perhaps spelling it out more fully with "earlyclobber" rather than >
2014 Feb 19
2
[LLVMdev] How to implement register allocation constraints to guide allocator dispatching different registers for certain instruction?
Hi, To fix this bug(http://llvm.org/bugs/show_bug.cgi?id=18881), we need to add more register constraints that for STLXR , Ws and Wt should not be the same register. Because these unpredictable instructions are valid instructions in MC layer, we couldn't just simply treat them as unallocated encoding. I suppose to add some extra rules on register allocator to avoid it allocating register
2015 Nov 12
2
[Aarch64 00/11] Patches to enable Aarch64
One other minor thing: I notice that in the inline assembly the result (rd) is constrained as an earlyclobber operand. What was the reason for that?
2011 Jan 19
2
[LLVMdev] How to avoid register reuse in machine instructions?
Is there a way to force the register allocator to avoid reusing an operand register for a definition? For example, the following machine instruction reuses a register for the first operand and definition: %uI7<def> = eq at III %uI7<kill>, %uI4 I'd like: %uI8<def> = eq at III %uI7<kill>, %uI4 I'm guessing that the right way to do this would be to kill the
2014 Feb 19
2
[LLVMdev] How to implement register allocation constraints to guide allocator dispatching different registers for certain instruction?
Hi Kevin, I concur Tim’s advice, you should use the @earlyclobber. Cheers, -Quentin On Feb 19, 2014, at 3:27 AM, Tim Northover <t.p.northover at gmail.com> wrote: > Hi Kevin, > >> I suppose to add some extra rules on register allocator to avoid it >> allocating register causing any unpredictable behavior, but I don't have >> experience to this part. Can
2017 May 28
2
Pseudo-instruction that overwrites its input register
On Sun, 28 May 2017, David Chisnall wrote: >> let Constraints = "@earlyclobber $reg" in >> def LDWRdPtr : Pseudo<(outs DREGS:$reg), >> (ins PTRREGS:$ptrreg), >> "ldw\t$reg, $ptrreg", >> [(set i16:$reg, (load i16:$ptrreg))]>, >>
2009 Dec 16
2
[LLVMdev] Early-clobber constraint in TableGen
On Dec 15, 2009, at 6:26 PM, David Greene wrote: > On Tuesday 15 December 2009 19:52, Jim Grosbach wrote: > >> Do you have specific examples in mind that would be expressible with >> something more complicated that aren't handleable via an early- >> clobber >> constraint? > > Not offhand, no. I'm mostly concerned about the readability of .td >