★ Gcc编译器

  GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套GNU编译器套装以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。GCC原名为GNU C语言编译器,因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java以及Ada与其他语言。GCC4.4开始默认支持龙芯2F架构,GCC4.6开始默认支持龙芯3A架构,龙芯也对外发布优化后的非社区版本。
  编译组自2013年7月以来,对龙芯操作系统所使用的gcc4.4.7编译器进行了调优,调优目标是SPEC CPU2000、coremark和Linux内核等,主要手段是通过调整编译器后端的目标指令集,综合使用窥孔、指令拆分、寄存器分配约束、指令调度等优化来生成在龙芯处理器上性能更好的指令序列。主要的优化方法包含:

  1. 原来Fedora/CentOS系统中安装的gcc默认在O32下使用mips1指令集,在N64下使用mips3指令集,现在使用具有更优性能的mips64选项编译上述两个系统,已经通过测试,新的CentOS已经发布;
  2. 在N32、N64 ABI下,对函数序跋中的成对64位访存指令,在其地址满足16字节对齐的约束下,进行窥孔优化,使用龙芯464处理器核提供的128位访存指令来完成相同功能;
  3. 对程序中出现的64位数组指针计算,采用特殊的指令拆分来使用龙芯464处理器核提供的64位三操作数乘法,从而消除hi/lo相关操作以及移位拼接;
  4. 修改gcc的寄存器分配覆盖集描述,从覆盖集中去掉hi/lo寄存器,避免程序寄存器压力过大时,分配hi/lo作为通用寄存器的暂存寄存器而引发的流水线停顿;
  5. 优化-march=loongson3a的流水线描述,使得长延迟操作如load/mult/div/mod等尽量提早发射,减少流水线因数据相关造成的停顿;
  6. 修正gcc编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器;
  • 成员介绍

  项目负责人,相关事宜请联系 #loongson.cn (以@替换#)。

  • 主要项目介绍

  社区Gcc编译器源码项目 http://cgit.loongnix.org

★ Gcc编译器新闻

- 1. 发布gs464核版本gcc-4.4.7、gcc-4.8.3 32位和64位交叉编译器。
- 2. 发布ls232核版本gcc-4.3.0 32位交叉编译器。
  • GCC编译器在loongson3a/b o32 abi 下不使用浮点奇数号寄存器patch发布 [2015-09-22]
- 1. 该patch使用与gcc-4.0.x--gcc-4.8.x。patch
- 2. gcc-5.xx.使用-mno-odd-spreg选项。
- 3. gcc-4.9.x.可移植gcc-5.xx中的patch,并使用-mno-odd-spreg选项。或使用该patch。
  • Fedora13 优化编译工具链发布 [2015-07-17]
- 更新gcc-4.4.7(用yum install loongson-toolchain安装,并设置export PATH=/opt/toolchain/bin:$PATH)
- gcc-4.4.7 添加-march=loongson3a支持
- gcc-4.4.7 添加gs<sl>q[c1]指令支持
- gcc-4.4.7 添加gs<sl><dwb>[u]指令支持
- binutils 修正loongson2f obj无法和loongson3a obj链接问题
- glibc 添加flush denormalized number to zero 优化
  • gcc4.8.3测试版发布 [2015-03-12]
  • gcc4.4.7发布 [2014-09-09]

★ GCC龙芯本地编译器下载

★ GCC交叉编译器下载

★ 文档

★ 支持

本页面最后修改于2016年9月21日 (星期三) 17:48。

© 2017 by 龙芯开源社区 • Powered by MediaWiki