Add minimal support to lower return, and introduce an OutgoingValueHandler and an OutgoingValueAssigner for returns.
Supports return values with integer, pointer and aggregate types.
(Update of D69808 - avoiding commandeering that revision)
Paths
| Differential D117318
[RISCV][GlobalISel] Add lowerReturn for calling conv ClosedPublic Authored by nitinjohnraj on Jan 14 2022, 7:26 AM.
Details Summary Add minimal support to lower return, and introduce an OutgoingValueHandler and an OutgoingValueAssigner for returns. Supports return values with integer, pointer and aggregate types. (Update of D69808 - avoiding commandeering that revision)
Diff Detail
Event TimelineHerald added subscribers: VincentWu, luke957, achieveartificialintelligence and 25 others. · View Herald TranscriptJan 14 2022, 7:26 AM
Comment Actions Don't reinvent existing generic functions; instead introduce an OutgoingValueAssigner to allow us to call determineAndHandleAssignments. lewis-revill added a parent revision: D118233: [MachineVerifier] Report allocatable classes for physical register copies. This revision is now accepted and ready to land.Jan 26 2022, 4:28 PM lewis-revill retitled this revision from [WIP][RISCV][GlobalISel] Add lowerReturn for calling conv to [RISCV][GlobalISel] Add lowerReturn for calling conv.Feb 9 2022, 3:14 AM Comment Actions LGTM
nitinjohnraj removed a parent revision: D118766: [CodeGen] Use the non-pointer LLT equivalent to check regclass type.May 22 2023, 7:36 AM Comment Actions This has been stagnant for a while, and there were a few open comments, so could I reaffirm the approval of this patch?
nitinjohnraj marked 2 inline comments as not done. This revision is now accepted and ready to land.May 22 2023, 1:17 PM This revision was landed with ongoing or failed builds.May 23 2023, 11:29 AM Closed by commit rG991ecfb83daf: [RISCV][GlobalISel] Add lowerReturn for calling conv (authored by nitinjohnraj). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 403203 llvm/lib/Target/RISCV/RISCVCallLowering.h
llvm/lib/Target/RISCV/RISCVCallLowering.cppllvm/lib/Target/RISCV/RISCVISelLowering.h
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/GlobalISel/calllowering-ret.ll
llvm/test/CodeGen/RISCV/GlobalISel/irtranslator-calllowering.ll
llvm/test/CodeGen/RISCV/GlobalISel/irtranslator/ret.ll
|
This looks like you're copying the broken form of splitToValueTypes from x86. I think trying to handle all of the argument marshalling in simple looking callbacks like this is unworkable. If you call the generic splitToValueTypes in CallLowering, it should try to handle everything for you