为了添加两个整数,我写:
int sum;
asm volatile("add %0, x3, x4" : "=r"(sum) : :);
我怎样才能用两个浮动来做到这一点?
我试过:
float sum;
asm volatile("fadd %0, s3, s4" : "=r"(sum) : :);
但这给了我一个错误:
错误:操作数 1 应该是 SIMD 向量寄存器 - `fadd x0,s3,s4'
有任何想法吗?
由于寄存器在 AArch64 中可以有多个名称(v0、b0、h0、s0、d0 都引用同一个寄存器),因此有必要向打印字符串添加输出修饰符:
关于上帝之锤 https://godbolt.org/z/djWRDV
float foo()
{
float sum;
asm volatile("fadd %s0, s3, s4" : "=w"(sum) : :);
return sum;
}
double dsum()
{
double sum;
asm volatile("fadd %d0, d3, d4" : "=w"(sum) : :);
return sum;
}
将产生:
foo:
fadd s0, s3, s4 // sum
ret
dsum:
fadd d0, d3, d4 // sum
ret
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)