Skip to content

Commit 99031ee

Browse files
[RISCV][GISEL] Legalize G_ICMP for scalable vector types
The result of a vector G_ICMP is a vector with an s1 element type. The input vectors can be integer, floating-point, or boolean element type.
1 parent d794ce1 commit 99031ee

File tree

4 files changed

+831
-9
lines changed

4 files changed

+831
-9
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,9 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
235235

236236
getActionDefinitionsBuilder(G_ICMP)
237237
.legalFor({{sXLen, sXLen}, {sXLen, p0}})
238-
.widenScalarToNextPow2(1)
238+
.legalIf(all(typeIsLegalBoolVec(0, BoolVecTys, ST),
239+
typeIsLegalIntOrFPVec(1, IntOrFPVecTys, ST)))
240+
.widenScalarOrEltToNextPow2OrMinSize(1, 8)
239241
.clampScalar(1, sXLen, sXLen)
240242
.clampScalar(0, sXLen, sXLen);
241243

0 commit comments

Comments
 (0)