Skip to content

Commit 235465e

Browse files
authored
[RISCV][GISel] Legalize G_{U|S}{ADD|SUB}SAT (#92935)
This patch adds support for G_UADDSAT/G_SADDSAT/G_USUBSAT/G_SSUBSAT by lowering it into add/sub with selects. When zbb is available, min/max/minu/maxu will be selected.
1 parent 2034f2f commit 235465e

File tree

3 files changed

+766
-0
lines changed

3 files changed

+766
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
130130

131131
getActionDefinitionsBuilder({G_SADDO, G_SSUBO}).minScalar(0, sXLen).lower();
132132

133+
// TODO: Use Vector Single-Width Saturating Instructions for vector types.
134+
getActionDefinitionsBuilder({G_UADDSAT, G_SADDSAT, G_USUBSAT, G_SSUBSAT})
135+
.lower();
136+
133137
auto &ShiftActions = getActionDefinitionsBuilder({G_ASHR, G_LSHR, G_SHL});
134138
if (ST.is64Bit())
135139
ShiftActions.customFor({{s32, s32}});

0 commit comments

Comments
 (0)