The imm operand of some instructions are not defined accurately in td.
This is a small patch to correct these definitions.
No, asm only. But if you know of a user for them and/or have the time to add them, we should match the ones GCC provided (https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gcc/Basic-PowerPC-Built-in-Functions-Available-on-ISA-3_002e0.html#Basic-PowerPC-Built-in-Functions-Available-on-ISA-3_002e0):
long long __builtin_darn (void); long long __builtin_darn_raw (void); int __builtin_darn_32 (void);
Changed in ISA 3.1 to 3 bits. Bit 8 was reserved before and a value larger than 0b11 had no meaning, so specifying it as 3 bits should be fine.
I agree. The instruction format only allows 2 bits in the encoding here. The extra values added in ISA3.0 do not appear to have been used anywhere as doing so would have caused errors.