Skip operation on the lower byte in int16 logical left shift when
shift amount is greater than 8.
Skip operation on the higher byte in int16 logical & arithmetic
right shift when shift amount is greater than 8.
Paths
| Differential D115594
[AVR] Optimize int16 shift operation for shift amount greater than 8 ClosedPublic Authored by benshi001 on Dec 11 2021, 11:59 PM.
Details Summary Skip operation on the lower byte in int16 logical left shift when Skip operation on the higher byte in int16 logical & arithmetic
Diff Detail
Event TimelineComment Actions Is there a reason why you introduced 3 new pseudo instructions? It seems to me that the existing 16-bit shift instructions (LSLWN, LSRWN, ASRWN) should already be able to support this. Comment Actions Ok, I think I see why you did it the way you did. Which makes sense given the current architecture. I suspect shift lowering might be simpler when it is all done in the "expand pseudo instructions" pass instead of splitting it early in ISelLowering. But most of the logic is already in ISelLowering so it makes sense to keep it there, at least for now. This revision is now accepted and ready to land.Jan 3 2022, 7:41 PM This revision was landed with ongoing or failed builds.Jan 4 2022, 3:49 AM Closed by commit rG99e7bf46c9e3: [AVR] Optimize int16 shift operation for shift amount greater than 8 (authored by benshi001). · Explain Why This revision was automatically updated to reflect the committed changes. benshi001 removed a child revision: D115618: [AVR] Optimize int16 airthmetic right shift for shift amount 7/14/15.Jan 4 2022, 11:43 PM
Revision Contents
Diff 397255 llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp
llvm/lib/Target/AVR/AVRISelLowering.h
llvm/lib/Target/AVR/AVRISelLowering.cpp
llvm/lib/Target/AVR/AVRInstrInfo.td
llvm/test/CodeGen/AVR/shift.ll
|