[PATCH] D64686: GlobalISel: Add overload of handleAssignments with CCState

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 12 19:07:50 PDT 2019


arsenm created this revision.
arsenm added reviewers: rovka, aemerson, aditya_nandakumar, dsanders, paquette.
Herald added subscribers: Petar.Avramovic, volkan, tpr, wdng.

AMDGPU needs to allocate special argument registers separately from
the user function argument list, so needs direct control over the
CCState.

      

The ArgLocs argument is only really necessary because CCState doesn't
allow access to it.


https://reviews.llvm.org/D64686

Files:
  include/llvm/CodeGen/GlobalISel/CallLowering.h
  lib/CodeGen/GlobalISel/CallLowering.cpp


Index: lib/CodeGen/GlobalISel/CallLowering.cpp
===================================================================
--- lib/CodeGen/GlobalISel/CallLowering.cpp
+++ lib/CodeGen/GlobalISel/CallLowering.cpp
@@ -163,10 +163,19 @@
                                      ValueHandler &Handler) const {
   MachineFunction &MF = MIRBuilder.getMF();
   const Function &F = MF.getFunction();
-  const DataLayout &DL = F.getParent()->getDataLayout();
-
   SmallVector<CCValAssign, 16> ArgLocs;
   CCState CCInfo(F.getCallingConv(), F.isVarArg(), MF, ArgLocs, F.getContext());
+  return handleAssignments(CCInfo, ArgLocs, MIRBuilder, Args, Handler);
+}
+
+bool CallLowering::handleAssignments(CCState &CCInfo,
+                                     SmallVectorImpl<CCValAssign> &ArgLocs,
+                                     MachineIRBuilder &MIRBuilder,
+                                     ArrayRef<ArgInfo> Args,
+                                     ValueHandler &Handler) const {
+  MachineFunction &MF = MIRBuilder.getMF();
+  const Function &F = MF.getFunction();
+  const DataLayout &DL = F.getParent()->getDataLayout();
 
   unsigned NumArgs = Args.size();
   for (unsigned i = 0; i != NumArgs; ++i) {
Index: include/llvm/CodeGen/GlobalISel/CallLowering.h
===================================================================
--- include/llvm/CodeGen/GlobalISel/CallLowering.h
+++ include/llvm/CodeGen/GlobalISel/CallLowering.h
@@ -27,6 +27,7 @@
 
 namespace llvm {
 
+class CCState;
 class DataLayout;
 class Function;
 class MachineIRBuilder;
@@ -163,7 +164,10 @@
   /// \return True if everything has succeeded, false otherwise.
   bool handleAssignments(MachineIRBuilder &MIRBuilder, ArrayRef<ArgInfo> Args,
                          ValueHandler &Handler) const;
-
+  bool handleAssignments(CCState &CCState,
+                         SmallVectorImpl<CCValAssign> &ArgLocs,
+                         MachineIRBuilder &MIRBuilder, ArrayRef<ArgInfo> Args,
+                         ValueHandler &Handler) const;
 public:
   CallLowering(const TargetLowering *TLI) : TLI(TLI) {}
   virtual ~CallLowering() = default;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64686.209664.patch
Type: text/x-patch
Size: 2113 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190713/7bfadc5b/attachment.bin>


More information about the llvm-commits mailing list