This was worked around in pseudo instruction expanson pass using scavengeGPR8 or pushing/popping registers, but there is a much simpler solution: specify the correct register class for these instructions.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
40 ms | x64 debian > LLVM.MC/AVR::inst-lpm.s |
Event Timeline
llvm/lib/Target/AVR/AVRInstrInfo.td | ||
---|---|---|
1697 | I am not sure this is a good solution. Actually I can not write assmebly LPM R30, Z. Why no only use register calss LPM8 / DREGSLPM only for pseudo instructions ? |
Comment Actions
Hmm, I realize that this is not the best approach. I will make a new patch. You are correct that some instructions had the wrong register class operand.
I am not sure this is a good solution. Actually I can not write assmebly LPM R30, Z. Why no only use register calss LPM8 / DREGSLPM only for pseudo instructions ?