Add the AVR instruction tablegen definitions.
Details
Diff Detail
Event Timeline
lib/Target/AVR/AVRInstrFormats.td | ||
---|---|---|
57 | I think you should also set isCodeGenOnly as well | |
lib/Target/AVR/AVRInstrInfo.td | ||
59 | 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 | |
1822 | 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 | |
1891 | Should the pattern inputs just be i8 instead of the register class? | |
1962 | Can you add an xfailed test for this |
lib/Target/AVR/AVRInstrInfo.td | ||
---|---|---|
59 | AVR only has shift-by-1 kind of operations so they don't get a shift amount specified through a register |
Factor out common psuedo instruction properties
Now we have different classes of pseudo instructions, reducing
duplication of code.
@arsenm Fixed up your points, the pseudo class one was especially nice.
Ready for another round of review.
lib/Target/AVR/AVRInstrInfo.td | ||
---|---|---|
873 | 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)]>; |
lib/Target/AVR/AVRInstrInfo.td | ||
---|---|---|
873 | Good catch - thanks Roel. |
I think you should also set isCodeGenOnly as well