Skip to content

Commit

Permalink
[RISCV][GISel] Support G_CTTZ/CTLZ with Zbb.
Browse files Browse the repository at this point in the history
  • Loading branch information
topperc committed Nov 23, 2023
1 parent 9645267 commit 0a9c6be
Show file tree
Hide file tree
Showing 5 changed files with 1,865 additions and 1,469 deletions.
18 changes: 13 additions & 5 deletions llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,19 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
else
BSWAPActions.maxScalar(0, sXLen).lower();

getActionDefinitionsBuilder(
{G_CTLZ, G_CTLZ_ZERO_UNDEF, G_CTTZ, G_CTTZ_ZERO_UNDEF})
.maxScalar(0, sXLen)
.scalarSameSizeAs(1, 0)
.lower();
auto &CountZerosActions = getActionDefinitionsBuilder({G_CTLZ, G_CTTZ});
auto &CountZerosUndefActions =
getActionDefinitionsBuilder({G_CTLZ_ZERO_UNDEF, G_CTTZ_ZERO_UNDEF});
if (ST.hasStdExtZbb()) {
CountZerosActions.legalFor({{s32, s32}, {sXLen, sXLen}})
.clampScalar(0, s32, sXLen)
.widenScalarToNextPow2(0)
.scalarSameSizeAs(1, 0);
} else {
CountZerosActions.maxScalar(0, sXLen).scalarSameSizeAs(1, 0).lower();
CountZerosUndefActions.maxScalar(0, sXLen).scalarSameSizeAs(1, 0);
}
CountZerosUndefActions.lower();

auto &CTPOPActions = getActionDefinitionsBuilder(G_CTPOP);
if (ST.hasStdExtZbb()) {
Expand Down

0 comments on commit 0a9c6be

Please sign in to comment.