[RISCV] Fix mgather -> riscv.masked.strided.load combine not extending indices (...
commita2c93b34dfdf6b2e5d16a5068e92f30bbc5d0ba7
authorLuke Lau <luke@igalia.com>
Thu, 22 Feb 2024 03:50:27 +0000 (22 11:50 +0800)
committerllvmbot <60944935+llvmbot@users.noreply.github.com>
Tue, 19 Mar 2024 20:57:52 +0000 (19 13:57 -0700)
tree968c2d1bb97f7cabb0afc6cafb40eeb6bae24248
parenta9d4ed71707d36bc554bfe38408c74c285b11e6b
[RISCV] Fix mgather -> riscv.masked.strided.load combine not extending indices (#82506)

This fixes the miscompile reported in #82430 by telling
isSimpleVIDSequence to sign extend to XLen instead of the width of the
indices, since the "sequence" of indices generated by a strided load
will be at XLen.

This was the simplest way I could think of getting isSimpleVIDSequence
to treat the indexes as if they were zero extended to XLenVT.

Another way we could do this is by refactoring out the "get constant
integers" part from isSimpleVIDSequence and handle them as APInts so we
can separately zero extend it.

Fixes #82430

(cherry picked from commit 815644b4dd882ade2e5649d4f97c3dd6f7aea200)
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll