[llvm] [RISCV][GISel] Implement canLowerReturn. (PR #105465)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 20 23:15:47 PDT 2024


================
@@ -418,14 +416,37 @@ bool RISCVCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
         /*IsRet=*/true, Dispatcher);
     RISCVOutgoingValueHandler Handler(MIRBuilder, MF.getRegInfo(), Ret);
     if (!determineAndHandleAssignments(Handler, Assigner, SplitRetInfos,
-                                         MIRBuilder, CC, F.isVarArg()))
+                                       MIRBuilder, CC, F.isVarArg()))
       return false;
   }
 
   MIRBuilder.insertInstr(Ret);
   return true;
 }
 
+bool RISCVCallLowering::canLowerReturn(MachineFunction &MF,
+                                       CallingConv::ID CallConv,
+                                       SmallVectorImpl<BaseArgInfo> &Outs,
+                                       bool IsVarArg) const {
+  SmallVector<CCValAssign, 16> ArgLocs;
+  const auto &TLI = *getTLI<RISCVTargetLowering>();
+  CCState CCInfo(CallConv, IsVarArg, MF, ArgLocs,
+                 MF.getFunction().getContext());
+
+  RVVArgDispatcher Dispatcher{&MF, &TLI,
+                              ArrayRef(MF.getFunction().getReturnType())};
+
+  for (unsigned I = 0, E = Outs.size(); I < E; ++I) {
+    MVT VT = MVT::getVT(Outs[I].Ty);
+    RISCVABI::ABI ABI = MF.getSubtarget<RISCVSubtarget>().getTargetABI();
----------------
arsenm wrote:

Pull this out of the loop? 

https://github.com/llvm/llvm-project/pull/105465


More information about the llvm-commits mailing list