Since there is no official document regarding the Aarch64 instruction encoding available (at least I couldn't find any) I'm studying the binutils code instead.
I don't understand how the following code in aarch64_logical_immediate_p works:
if (is32)
{
/* Allow all zeros or all ones in top 32-bits, so that
constant expressions like ~1 are permitted. */
if (value >> 32 != 0 && value >> 32 != 0xffffffff)
return 0xffffffff;
Why are we returning a true value here? (and why such a strange choice?) And that without even setting the aarch64_insn *encoding - this seems like a bug to me or I'm misunderstanding the code.