From efa71acb85bf691535befdfd18b5ea3171b918d1 Mon Sep 17 00:00:00 2001 From: Jasmine Tang Date: Wed, 6 Aug 2025 13:51:53 -0700 Subject: [PATCH] Added ROLW/RORW + SLLW/SRAW/SRLW for canCreateUndefOrPoisonForTargetNode Co-authored-by: RKSimon --- llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index adbfbeb4669e7..d86ec003459d3 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -21477,6 +21477,14 @@ bool RISCVTargetLowering::canCreateUndefOrPoisonForTargetNode( // TODO: Add more target nodes. switch (Op.getOpcode()) { + case RISCVISD::SLLW: + case RISCVISD::SRAW: + case RISCVISD::SRLW: + case RISCVISD::RORW: + case RISCVISD::ROLW: + // Only the lower 5 bits of RHS are read, guaranteeing the rotate/shift + // amount is bounds. + return false; case RISCVISD::SELECT_CC: // Integer select_cc cannot create poison. // TODO: What are the FP poison semantics?