FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Imagination Technologies が提供するmips用GCC

Imagination TechnologiesMIPS用のGCCを配布しているので、早速ダウンロードしてみた。

MIPS Compilers | Imagination Community

Ubuntuの上で展開すると、mips-mti-elf-xxxの形式でバイナリとライブラリが用意されていた。

mips-mti-elf-gcc の --help=target をしてみると、なんとRelease6がサポートされている!

$ mips-mti-elf-gcc --help=target
...
  Known MIPS ISA levels (for use with the -mips option):
    1 2 3 32 32r2 32r3 32r5 32r6 4 64 64r2 64r3 64r5 64r6

早速Release-6でCoremarkをコンパイルしようとしてみたが、memsetが無いと言われてリンクができない。これは経験上-O2オプションにすることで回避できるのだが、こんどはリンクするライブラリとバイナリ互換性が合わないようだ。。。

※ 上記のmemsetの問題は、-fno-tree-loop-distribute-patterns オプションを用いると解決できるようだ。 (15/02/22)

うーん、とりあえず、暫くは単体でコンパイルするしかなさそうな感じがしている。

※ おまけ。あ、、、れ、、、 MIPSr6の命令が出てほしいのだけれど...

$ cat loop.c
int count (int n)
{
    int i, ret = 0;
    for (i = 0; i < n; i++) {
        ret += i;
    }
    return ret;
}


$ mips-mti-elf-gcc -mips32r6 -mabi=32 -O3 -c loop.c
$ mips-mti-elf-objdump -d loop.o

loop.o:     file format elf32-tradbigmips


Disassembly of section .text:

00000000 :
   0:   1880ffff        blez    a0,0 
   4:   00001021        move    v0,zero
   8:   00001821        move    v1,zero
   c:   00431021        addu    v0,v0,v1

00000010 <.L7>:
  10:   24630001        addiu   v1,v1,1
  14:   1464ffff        bne     v1,a0,14 <.L7+0x4>
  18:   00431021        addu    v0,v0,v1
  1c:   03e00009        jr      ra
  20:   00431023        subu    v0,v0,v1

00000024 <.L8>:
  24:   03e00009        jr      ra
  28:   00000000        nop