The custom lowering introduced in rL352592 creates build_vector nodes
with negative i32 operands, but these operands did not meet the value
range constraints necessary to match build_vector nodes. This CL fixes
the issue by removing the unnecessary constraints.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 27573 Build 27572: arc lint + arc unit
Event Timeline
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
---|---|---|
34 | It's not incorrect, per se, but the alternative fix would be to change the custom build_vector lowering logic to mask all the build_vector operands it produces to make them unsigned, matching the expectation here. It seemed simpler to save a few cycles and just remove this predicate. |
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
---|---|---|
34 | Sorry I don't understand. What I meant was to change the definition of ImmI8 and ImmI16 from unsigned to signed immediates. In that case why do we need to make operands unsigned? |
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
---|---|---|
34 | Oh I understand. I like that idea. |
Is this unnecessary or incorrect because it assumes an unsigned integer? Looks like there are ways to specify signed immediate too: example1 example2