Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] more mips16 puzzles"
2013 Jan 08
0
[LLVMdev] mips16 hard float puzzle
On Mon, Jan 7, 2013 at 4:16 PM, reed kotler <rkotler at mips.com> wrote:
> On 01/04/2013 07:45 PM, Eli Friedman wrote:
>>
>> On Fri, Jan 4, 2013 at 6:28 PM, reed kotler <rkotler at mips.com> wrote:
>>>
>>> On 01/04/2013 06:08 PM, Eli Friedman wrote:
>>>>
>>>> On Fri, Jan 4, 2013 at 4:08 PM, reed kotler <rkotler at mips.com>
2013 Jan 08
2
[LLVMdev] mips16 hard float puzzle
On 01/04/2013 07:45 PM, Eli Friedman wrote:
> On Fri, Jan 4, 2013 at 6:28 PM, reed kotler <rkotler at mips.com> wrote:
>> On 01/04/2013 06:08 PM, Eli Friedman wrote:
>>> On Fri, Jan 4, 2013 at 4:08 PM, reed kotler <rkotler at mips.com> wrote:
>>>> I'm working on mips16 hard float which at a first approximation is just
>>>> soft
2013 Jan 05
2
[LLVMdev] mips16 hard float puzzle
I'm working on mips16 hard float which at a first approximation is just
soft float but calls different library routines. Those different library
routines are just an implementation (in mips32 mode) of soft float using
mips32 hardware instructions. This part is already done. (mips16 mode
has no floating point instructions).
The next level of this that I am working on now is the ability to
2013 Jan 05
0
[LLVMdev] mips16 hard float puzzle
On Fri, Jan 4, 2013 at 6:28 PM, reed kotler <rkotler at mips.com> wrote:
> On 01/04/2013 06:08 PM, Eli Friedman wrote:
>>
>> On Fri, Jan 4, 2013 at 4:08 PM, reed kotler <rkotler at mips.com> wrote:
>>>
>>> I'm working on mips16 hard float which at a first approximation is just
>>> soft
>>> float but calls different library
2013 Jan 05
4
[LLVMdev] mips16 hard float puzzle
On 01/04/2013 06:08 PM, Eli Friedman wrote:
> On Fri, Jan 4, 2013 at 4:08 PM, reed kotler <rkotler at mips.com> wrote:
>> I'm working on mips16 hard float which at a first approximation is just soft
>> float but calls different library routines. Those different library routines
>> are just an implementation (in mips32 mode) of soft float using mips32
>>
2012 Sep 21
2
[LLVMdev] mips16 puzzle
Actually, SP is already not in the mips 16 register class but there is
some C++ code that is common to mips32, mips64 and mips16 that is
wanting to use SP. It's kind of awkward but does work except in this
case of load/store haflword and byte to stack objects.
Maybe I'm shooting myself in the foot there. I don't know that code too
well so maybe I need to look into it.
There are
2012 Sep 21
0
[LLVMdev] mips16 puzzle
Reed,
It's not clear to me that you need to do anything special here. If you define your MIPS16 register class as not containing SP, then any MIPS16 instructions that get selected and want to read from SP should get a COPY inserted from SP to a MIPS16 vreg. The coalescer should, ideally, get rid of extraneous copies for you.
--Owen
On Sep 20, 2012, at 10:48 PM, Reed Kotler <rkotler at
2013 Jan 05
0
[LLVMdev] mips16 hard float puzzle
On Fri, Jan 4, 2013 at 4:08 PM, reed kotler <rkotler at mips.com> wrote:
> I'm working on mips16 hard float which at a first approximation is just soft
> float but calls different library routines. Those different library routines
> are just an implementation (in mips32 mode) of soft float using mips32
> hardware instructions. This part is already done. (mips16 mode has no
2012 Jan 24
3
[LLVMdev] mips16
I'm working on the mips16.
Mips16 is a mode of the Mips32 (or Mips64) processor. For the most part,
it is a compressed form of the MIPS32 instruction set, though not all
instructions are supported. Most of the same opcodes and formats are
present though sometimes with some restriction. (The micro mips
architecture is a true 16 bit compressed form of MIps32 though also with
some
2012 Sep 24
0
[LLVMdev] mips16 puzzle
On Sep 20, 2012, at 11:44 PM, Reed Kotler <rkotler at mips.com> wrote:
> Actually, SP is already not in the mips 16 register class but there is some C++ code that is common to mips32, mips64 and mips16 that is wanting to use SP. It's kind of awkward but does work except in this case of load/store haflword and byte to stack objects.
>
ARM has a similar problem. The InstrInfo
2012 Sep 21
2
[LLVMdev] mips16 puzzle
Trying to think of a clever way to do something....
On Mips 16, the SP (stack pointer) is not a directly accessible register
in most instructions.
There is a way to move to and from mips 16 registers (subset of mips32)
and mips32 registers.
For the load/store word instructions, there are forms which implicitly
take SP.
However, for store/load byte and store/load halfword, there is no such
2012 Jan 20
4
[LLVMdev] various mips16 and micro mips issues
We are starting to look at the mips16 and micro mips ports.
There are various design issues that people may have some good input on.
Especially in how to structure the TD files and other optimizer issues.
Mips16 is sort of like thumb and Micro Mips like thumb2 as far as I
understand.
Mips16 or Micro Mips can live inside of either MIPS32 or MIPS64.
In gcc, it's possible using attributes to
2012 Jan 25
0
[LLVMdev] mips16
On Jan 24, 2012, at 1:46 AM, Reed Kotler wrote:
> Mips16 is a mode of the Mips32 (or Mips64) processor. For the most part,
> it is a compressed form of the MIPS32 instruction set, though not all
> instructions are supported. Most of the same opcodes and formats are
> present though sometimes with some restriction. (The micro mips
> architecture is a true 16 bit compressed form
2012 Jan 20
0
[LLVMdev] various mips16 and micro mips issues
On Fri, Jan 20, 2012 at 1:59 PM, reed kotler <rkotler at mips.com> wrote:
> We are starting to look at the mips16 and micro mips ports.
>
> There are various design issues that people may have some good input on.
> Especially in how to structure the TD files and other optimizer issues.
>
> Mips16 is sort of like thumb and Micro Mips like thumb2 as far as I
> understand.
2012 Sep 29
1
[LLVMdev] mips16 puzzle
Turned out to be a rather simple fix.
Just copied SP to a virtual register in the beginning of the function.
Then added an extra operand to the DAGs with stack reference load/store,
with the extra operand equal to this virtual register if the Parent of
the address is a LOAD/STORE of an 8 or 16 bit quantity.
It worked fine. When needed SP got copied to a mips 16 register and when
the SP alias
2012 Sep 26
0
[LLVMdev] mips16 puzzle
Ok. That's a somewhat different problem, then. Devil will be in the details of what you want to do. A few options. First is to always have a standard frame pointer register available and reference off of that. Caveat: dynamic stack realignment and vararrays muck with that more than a bit. Second is what gcc is doing and reserve a register just for this in addition to the frame register.
2012 Sep 26
5
[LLVMdev] mips16 puzzle
We already divided out our classes as you did for ARM.
The problem here is that we have a store/load byte/halfword to/from a
Frame object.
We know at that time that it's not going to be possible to store it
using SP because there is only such instructions for store/load of a word.
What we would want to do is to move SP into a Mips 16 register and then
do a indexed load/store off of that
2013 Jan 08
2
[LLVMdev] mips16 hard float puzzle
For example:
/home/rkotler/llvm/install/bin/llc -mcpu=mips16 hf16_2.ll -march=mipsel
-relocation-model=pic -o hf16_2.s -O3 -mips16-hard-float -soft-float
On 01/04/2013 07:45 PM, Eli Friedman wrote:
> On Fri, Jan 4, 2013 at 6:28 PM, reed kotler <rkotler at mips.com> wrote:
>> On 01/04/2013 06:08 PM, Eli Friedman wrote:
>>> On Fri, Jan 4, 2013 at 4:08 PM, reed kotler
2013 Mar 27
2
[LLVMdev] LLVM pass question
What I am thinking of now is to just register the MIPS116 and MIPS32
DAGToDAGISel passes and then within run on machine function, I can just
return if the current mode indicates that mips16 is needed for example,
so the run on machine function for Mips32 would return immediately.
On 03/27/2013 10:05 AM, Reed Kotler wrote:
> I guess another way to do this is to just register both passes for
2013 Jan 22
2
[LLVMdev] mips16 whitepaper
On 01/21/2013 03:28 PM, Sean Silva wrote:
> Please add this to <http://llvm.org/docs/CompilerWriterInfo.html>
> (docs/CompilerWriterInfo.rst)
>
> -- Sean Silva
I will. I owe a very long mips16 write up , especially for floating
point when I'm done.
It's very complicated the way they implemented hard float in gcc and it
is not documented.
It took me some thinking and