[aarch64-port-dev ] Help with SIMD for string_compare

Edward Nevill edward.nevill at gmail.com
Wed May 18 14:22:10 UTC 2016


Hi,

I am trying to implement string_compare for the UL & LU variants using the
SIMD zip1 instruction, so the loop looks something like (for LU)

loop:
   ldr v0.8b, [str1, cnt1]
   ldr v1.8h, [str2, cnt2]
   eor v0.16b, v0,16b, v1.16b
   < cbnz v0, differ >
   add cnt1, cnt1, #8
   adds cnt2, cnt2, #16
   blt loop

But I can find no easy way to do < cbnz v0, differ > in SIMD. The
alternative would be to do something like

   < vcmp v0.8h, v1.8h >
   bne differ

but I can find no instruction to do a bitwise vector comparison, only FCMP
which does a floating point comparison.

Am I missing something, or is there any way to do this?

Thanks,
Ed.


More information about the aarch64-port-dev mailing list