The following ARM asm:
vmov.f64 d16, #0
Fails with the following error:
/tmp/ccZD4Iex.s:121: Error: immediate out of range -- `vmov.f64 d16,#0'
Compiled using arm-none-linux-gnueabi-g++ (Sourcery CodeBench Lite 2012.03-57) 4.6.3
How do I zero out the d16 register-double so I can use it for double precision VFP instructions?
VMOV can only accept a limited set of floating-point immediates, and, surprisingly, 0 is not one of them:
Any number that can be expressed as +/-n * 2-r, where n and r are integers, 16 <= n <= 31, 0 <= r <= 7.
You can do what BitBank suggested, or use an integer move, which will also zero out the register.
vmov.i64 d16, #0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With