ARM / NEON汇编:测试值的正确方法

时间:2016-07-23 22:51:05

标签: assembly arm neon

我想比较ARM / NEON程序集中的一些值。

以下代码

if (d0 == 0) //the whole 64-bit
    r1 += 8;
else {
    if (d0[0] == 0) //the lower 8-bit
        r1 += 1;
    ...
}
....

对应于此:

vcmp.f64 d0, #0
vmrs APSR_nzcv, fpscr

addeq r1, r1, #8
beq .jumpover

vmov.u8 r0, d0[0]
cmp r0, #0
addeq r1, r1, #1
...

jumpover:
....

同样,以下代码

if (!(d0 == 0 && d1 == 0)) {//the whole 128-bit
    ...
}
....

对应于此:

vorr d2, d0, d1
vcmp.f64 d2, #0
vmrs APSR_nzcv, fpscr
beq .jumpover
...

jumpover:
....

有没有办法改善翻译?

0 个答案:

没有答案