Ignoring the assembler's nice trick of giving you multiple assembly instructions for a single opcode, I've found two opcodes which are mutually exclusive.
They are: STS (16 bit) and LD Z+q (LDD Z).
Their opcodes are as follows.
STS (16 bit): 1010 1kkk dddd kkkk
LD Z+q (LDD Z): 10q0 qq0d dddd 0qqq
Obviously, these two instructions don't exist on the same chip. There are two STS instructions. One titled STS the other STS (16 bit) in the instruction set datasheet. Problem is, how do I know which chips have which version if they're given the same name?
Obviously larger parts are going to have the 32 bit opcode version of STS, but I looked at the datasheet for an ATTiny and it just says 'STS'. Point is, I don't think the datasheet instruction set for individual parts will allow me to differentiate the part.
How can I determine this without assembling test code for every single chip?