Displaying 4 results from an estimated 4 matches for "upper22".
2010 Feb 22
5
[LLVMdev] Paired register allocation problem
...nstructions which operates on 64bit operands,
take pairs of 32bit registers. However in some of these instructions
registers are encoded as a pair number and in some as two single register
numbers for each pair.
Similar problem with immediates which not fit in 10bits - they are encoded
as separate upper22 bits and lower10 bits (64 bits long version of
instruction instead of 32 bits).
Thanks a lot for explanation/suggestions
Artur
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100222/cda06138/attachment.html&...
2010 Feb 22
0
[LLVMdev] Paired register allocation problem
...es on 64bit operands,
> take pairs of 32bit registers. However in some of these instructions
> registers are encoded as a pair number and in some as two single register
> numbers for each pair.
> Similar problem with immediates which not fit in 10bits - they are encoded
> as separate upper22 bits and lower10 bits (64 bits long version of
> instruction instead of 32 bits).
So, what's the problem here? All such weirdness should be handled
inside code emitter....
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University
2010 Feb 22
0
[LLVMdev] Paired register allocation problem
Hello, Artur
> I have defined registers, aliases and subregister set.
> The problem is that register allocator is using 32bit registers that are
> already used in a pair, for example:
> lw $r0, 16[$r12] // load word to r0
> ld $p0, 36[$r12] // load doubleword to p0
> shl $p0, $p0, $r0 // shift left p0 by r0 and store result in p0
> where p0 is a pair r0:r1
> Could
2010 Feb 22
2
[LLVMdev] Paired register allocation problem
Hi All,
My target has 32bit registers, but it has some 64bit instructions which are
using pairs of these 32bit registers.
I have defined registers, aliases and subregister set.
The problem is that register allocator is using 32bit registers that are
already used in a pair, for example:
lw $r0, 16[$r12] // load word to r0
ld $p0, 36[$r12] // load doubleword to p0
shl $p0, $p0, $r0 // shift