I am having trouble performing logical instructions on the ARMv8-a architecture.
for example, "and x13, x13, #0x0000CCCC0000CCCC
" or "and x13, x13, #0x0A0A0A0A0A0A0A0A
" results in an immediate out of range error, but "and x13, x13, #0x5555555555555555
" or "and x13, x13, #0xFFFFFFFFFFFFFFFD
" does not. In this way, sometimes a range error occurs during a 64-bit immediate and sometimes not.
I looked up the official documentation, According to https://developer.arm.com/documentation/den0024/a/An-Introduction-to-the-ARMv8-Instruction-Sets/The-ARMv8-instruction-sets, "Logical instructions generally accept a 32-bit or 64-bit constant, which has some constraints in its encoding." What are these "some constraints" and where can I see them? I cannot find that constraints.