Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] How to avoid register reuse in machine instructions?"
2011 Jan 19
0
[LLVMdev] How to avoid register reuse in machine instructions?
Hello,
> I'm guessing that the right way to do this would be to kill the operand
> registers after the given machine instruction rather than before it, but
> I don't see a way to mark it this way.
Right now the only way is to mark output reg as earlyclobber (see ARM
backend for examples).
Note that post-RA scheduler is not yet aware about earlyclobber
operands and thus can break
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
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
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
2005 Apr 19
0
mmx optimization
Hi,
I've been giving a look at the archives of the mailing list and I've
seen that you have rewritten a lot of functions using mmx to make them
faster.
I'm currently trying to optimize some code, but I'm have some problems,
because I work with 16 bit per component and not 8 like theora. I know
that it is off topic, but I'm posting to ask you a little help.
I've got
2020 May 04
2
"Earlyclobber" but for a subset of the inputs
Hi all,
I'm working on a target whose registers have equal-sized subregisters and
all of those subregisters can be named (or the other way round: registers
can be grouped into super registers).
So for instance we've got 16 registers W (as in wide) W0..W15 and 32
registers N (as in narrow) N0..N31. This way, W0 is made by grouping N0 and
N1, W1 is N2 and N3, W2 is N4 and N5, ..., W15 is
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))]>,
>>
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
2011 Apr 08
1
[LLVMdev] Instructions with register constraints
For any instruction, a list of constraints can be specified, like:
let Constraints = "$dst = $lhs" in
...
I checked the existing backends and I didn't notice any complex
constraints: basically "Constraints" keyword is used to force 1 operand
register to be the same as another one.
I am wondering if there is any way to express more complicated constraints
like for
2014 Jun 16
2
[LLVMdev] codeGen, instruction write one value to the input register.
Hi Guys,
In LLVM codegen,
a typical binary operation instruction is defined something like below:
" def _rr: NVPTXInst<(outs Int1Regs:$dst), (ins Int1Regs:$a, Int1Regs:$b),
"xor.pred \t$dst, $a, $b;",
[(set Int1Regs:$dst, (OpNode Int1Regs:$a, Int1Regs:$b))]>;
“
which takes two inputs and write the result to the $dst register.
Then how to define a binary
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
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
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 =
2020 Jun 26
2
How to implement load/store for vector predicate register
Hi,
I am planning to expanding the pseudo instructions in XXXTargetLowering::EmitInstrWithCustomInserter(), and use temporary virtual registers as operands.
If I use virtual registers, do I need to mark them as "early clobber"?
I saw that sometimes they marked virtual register as "early clobber" in EmitInstrWithCustomInserter() in MIPS backend.
What is the effect of marking a
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
>
2007 Aug 24
0
Wine release 0.9.44
This is release 0.9.44 of Wine, a free implementation of Windows on Unix.
What's new in this release:
- Better heuristics for making windows managed.
- Automatic detection of timezone parameters.
- Improvements to the builtin WordPad.
- Better signatures support in crypt32.
- Still more gdiplus functions.
- Lots of bug fixes.
Because of lags created by using mirrors, this message
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?