This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Support passing scalable vector values through the stack.
ClosedPublic

Authored by HsiangKai on Dec 27 2021, 6:58 AM.

Details

Summary

After consuming all vector registers, the scalable vector values will be
passed indirectly. The pointer values will be saved in general
registers. If all general registers are used up, we will report an error to
notify users the compiler does not support passing scalable vector
values through the stack. In this patch, we remove the restriction. After
all general registers are used up, we use the stack to save the
pointers which point to the indirect passed scalable vector values.

Diff Detail

Event Timeline

HsiangKai created this revision.Dec 27 2021, 6:58 AM
HsiangKai requested review of this revision.Dec 27 2021, 6:58 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 27 2021, 6:58 AM
HsiangKai updated this revision to Diff 396306.Dec 27 2021, 7:23 AM

Update the test case.

craig.topper retitled this revision from [RISCV] Support passing scalable vectur values through the stack. to [RISCV] Support passing scalable vector values through the stack..Dec 27 2021, 9:37 AM
This revision is now accepted and ready to land.Dec 27 2021, 9:55 AM
This revision was landed with ongoing or failed builds.Dec 27 2021, 5:36 PM
This revision was automatically updated to reflect the committed changes.
llvm/test/CodeGen/RISCV/rvv/rvv-args-by-mem.ll