Add the AVR instruction tablegen definitions.
I think you should also set isCodeGenOnly as well
These custom shift nodes look strange. It looks like the shift amount is passed in an implicit register, but you aren't adding glue to the node for the copy into it
I would recommend putting things like the instruction bits and implicit uses and defs generally in a new class to avoid huge numbers of let blocks
Should the pattern inputs just be i8 instead of the register class?
Can you add an xfailed test for this
This instruction should be defined differently:
def CPIRdK : FRdK<0b0011, (outs), (ins GPR8:$src, i8imm:$k), "cpi\t$src, $k", [(AVRcmp GPR8:$src, imm:$k), (implicit SREG)]>;