Skip to content

Commit 7cfa4c4

Browse files
[RISCV][GISEL] Fix legalization for G_MERGE/UNMERGE_VALUES (llvm#75619)
The legalFor check did not work as expected. Use legalIf instead. Also do some simplification by removing IdxZeroTy and IdxOneTy.
1 parent cca4d6c commit 7cfa4c4

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

llvm/lib/Target/RISCV/GISel/RISCVLegalizerInfo.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,12 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
8585

8686
// Merge/Unmerge
8787
for (unsigned Op : {G_MERGE_VALUES, G_UNMERGE_VALUES}) {
88-
unsigned BigTyIdx = (Op == G_MERGE_VALUES) ? 0 : 1;
89-
unsigned LitTyIdx = (Op == G_MERGE_VALUES) ? 1 : 0;
9088
auto &MergeUnmergeActions = getActionDefinitionsBuilder(Op);
89+
unsigned BigTyIdx = Op == G_MERGE_VALUES ? 0 : 1;
90+
unsigned LitTyIdx = Op == G_MERGE_VALUES ? 1 : 0;
9191
if (XLen == 32 && ST.hasStdExtD()) {
92-
LLT IdxZeroTy = (Op == G_MERGE_VALUES) ? s64 : s32;
93-
LLT IdxOneTy = (Op == G_MERGE_VALUES) ? s32 : s64;
94-
MergeUnmergeActions.legalFor({{IdxZeroTy, IdxOneTy}});
92+
MergeUnmergeActions.legalIf(
93+
all(typeIs(BigTyIdx, s64), typeIs(LitTyIdx, s32)));
9594
}
9695
MergeUnmergeActions.widenScalarToNextPow2(LitTyIdx, XLen)
9796
.widenScalarToNextPow2(BigTyIdx, XLen)

0 commit comments

Comments
 (0)