[PATCH] D158852: [SDAG] Add computeKnownBits support for ISD::SPLAT_VECTOR_PARTS
Luke Lau via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 28 03:23:36 PDT 2023
luke added inline comments.
================
Comment at: llvm/test/CodeGen/RISCV/rvv/vror-sdnode.ll:2063
-; CHECK-RV32-NEXT: vsetvli a0, zero, e64, m8, ta, ma
-; CHECK-RV32-NEXT: vmv.v.i v16, 1
-; CHECK-RV32-NEXT: vrsub.vi v16, v16, 0
----------------
craig.topper wrote:
> There's a missed constant fold of sub of two constant splat_vector parts here. computeKnownBits is hiding it because we constant fold it inside computeKnownBits, but we should handle it in FoldConstantArithmetic
Yeah, this was the first thing I tried. I found that there's a lot of logic that needs shared, and there's some other binop cases that aren't fully handled e.g. a bitcast of a splat_vector, or where one operand is bitcasted and the other isn't. Will give it a revisit.
Some other places I saw where I think we might need to handle splat_vector_parts:
SelectionDAG::isSplatValue
isConstantSplatVector/isConstantSplatVectorAllOnes/isConstantSplatVectorAllZeros/isConstOrConstSplat in SelectionDAGNodes.h
SelectionDAG::getValidShiftAmountConstant and friends
isConstantOrConstantVector in DAGCombiner
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D158852/new/
https://reviews.llvm.org/D158852
More information about the llvm-commits
mailing list