This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] RISCV vector calling convention (2/2)
Needs ReviewPublic

Authored by 4vtomat on Aug 15 2023, 10:03 PM.

Details

Summary

This patch handles vector type and tuple type arguments
calling convention. Vector type arguments can be passed
directly by register or by reference, however tuple type
arguments are split into multiple vector type arguments,
all of these arguments should be either passed by references
or passed by registers.

Diff Detail

Event Timeline

4vtomat created this revision.Aug 15 2023, 10:03 PM
Herald added a project: Restricted Project. · View Herald TranscriptAug 15 2023, 10:03 PM
4vtomat requested review of this revision.Aug 15 2023, 10:03 PM
Herald added a project: Restricted Project. · View Herald TranscriptAug 15 2023, 10:03 PM
4vtomat edited the summary of this revision. (Show Details)Aug 18 2023, 1:25 AM
4vtomat updated this revision to Diff 555304.Sep 1 2023, 1:47 AM

Finish handling vector arguments in backend.

Herald added a project: Restricted Project. · View Herald TranscriptSep 1 2023, 1:47 AM
4vtomat edited the summary of this revision. (Show Details)Sep 1 2023, 1:48 AM

RVVArgDispatcher is the class used to compute and maximize the register usage by using the vector argument information placed in std::vector<RVVArgInfo>, it's both used by frontend and backend.
Currently I'm not sure where is the better file to place this class, so I just place it in RISCVTargetParser.h.

4vtomat updated this revision to Diff 555307.Sep 1 2023, 1:55 AM
4vtomat edited the summary of this revision. (Show Details)

Update commit message.