Skip to content

Commit 5608ef3

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 3045357 commit 5608ef3

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
@@ -242,7 +242,9 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
242242

243243
getActionDefinitionsBuilder(G_ICMP)
244244
.legalFor({{sXLen, sXLen}, {sXLen, p0}})
245-
.widenScalarToNextPow2(1)
245+
.legalIf(all(typeIsLegalBoolVec(0, BoolVecTys, ST),
246+
typeIsLegalIntOrFPVec(1, IntOrFPVecTys, ST)))
247+
.widenScalarOrEltToNextPow2OrMinSize(1, 8)
246248
.clampScalar(1, sXLen, sXLen)
247249
.clampScalar(0, sXLen, sXLen);
248250

0 commit comments

Comments
 (0)