[all-commits] [llvm/llvm-project] 3737a5: [Coroutines] Support for Custom ABIs (#111755)

Tyler Nowicki via All-commits all-commits at lists.llvm.org
Thu Oct 10 07:09:08 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3737a5321901574b3f4b2cf0d798faea5c4a2302
      https://github.com/llvm/llvm-project/commit/3737a5321901574b3f4b2cf0d798faea5c4a2302
  Author: Tyler Nowicki <tyler.nowicki at amd.com>
  Date:   2024-10-10 (Thu, 10 Oct 2024)

  Changed paths:
    M llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
    M llvm/include/llvm/IR/Intrinsics.td
    M llvm/include/llvm/Transforms/Coroutines/ABI.h
    M llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
    M llvm/include/llvm/Transforms/Coroutines/CoroSplit.h
    M llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
    M llvm/lib/Transforms/Coroutines/CoroSplit.cpp
    M llvm/lib/Transforms/Coroutines/Coroutines.cpp
    M llvm/unittests/Transforms/Coroutines/ExtraRematTest.cpp

  Log Message:
  -----------
  [Coroutines] Support for Custom ABIs (#111755)

This change extends the current method for creating ABI object to allow
users (plugin libraries) to create custom ABI objects for their needs.
This is accomplished by inheriting one of the common ABIs and overriding
one or more of the methods to create a custom ABI. To use a custom ABI
for a given coroutine the coro.begin.custom.abi intrinsic is used in
place of the coro.begin intrinsic. This takes an additional i32 arg that
specifies the index of an ABI generator for the custom ABI object in a
SmallVector passed to the CoroSplitPass ctor.

The detailed changes include:
* Add the llvm.coro.begin.custom intrinsic used to specify the index of
the custom ABI to use for the given coroutine.
* Add constructors to CoroSplit that take a list of generators that
create the custom ABI object.
* Extend the CreateNewABI function used by CoroSplit to return a
unique_ptr to an ABI object.
* Add has/getCustomABI methods to CoroBeginInst class.
* Add a unittest for a custom ABI.

See doc update here: https://github.com/llvm/llvm-project/pull/111781



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list