3 Star 5 Fork 0

北京中科昊芯科技有限公司 / haawking-tools

 / 详情

Compile Float point programs

已完成
任务 拥有者
创建于  
2020-11-19 20:48

通过riscv-gnu-toolchain-58c9d86使能multi-lib之后,编译出来的库包括如下组合,

  • Candidate multilib: rv32i/ilp32;@march=rv32i@mabi=ilp32
  • Candidate multilib: rv32im/ilp32;@march=rv32im@mabi=ilp32
  • Candidate multilib: rv32iac/ilp32;@march=rv32iac@mabi=ilp32
  • Candidate multilib: rv32imac/ilp32;@march=rv32imac@mabi=ilp32
  • Candidate multilib: rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
  • Candidate multilib: rv64imac/lp64;@march=rv64imac@mabi=lp64
  • Candidate multilib: rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d

评论 (2)

JunningWu 创建了任务
JunningWu 关联仓库设置为JunningWu/haawking-tools
展开全部操作日志
float FPU_sin(float Radian){

	int k;
	float sin, a, b, x, pi = 3.141592653589793;

	a = Radian*(float)512.0/((float)2.0*pi);
	k = 0x1FF & ((int)a);
	b = a - (int)a;
	x = b * ((float)2.0*pi)/(float)512.0;
	sin = FPUsinTable[k] + x*(FPUcosTable[k] + x*(-0.5*FPUsinTable[k] - (float)0.166667*x*FPUcosTable[k]));
	return sin;
}

对于上面的代码,如果对于常量,如512.0等,强制类型转换,则可以调用fdiv.s指令,否则,会默认调用double库,也就是会先转成double,然后再计算,计算后再转会float。

可以在GCC的编译选项中增加-fsingle-precision-constant,则常量就会编译成float类型。
但是Haawking IDE中使用的时候,需要在常量后面增加f标志,如512.0f。

ChenHuaOnYourRight 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
Violation
C
1
https://gitee.com/haawking/haawking-tools.git
git@gitee.com:haawking/haawking-tools.git
haawking
haawking-tools
haawking-tools

搜索帮助