In order to convert to mulwide.s32, we compute the 2nd operand as MulWide.32 $r, (1 << 31).
(1 << 31) is interpreted as a negative number, and is not equivalent to the original instruction.
The code int64_t r = (int64_t)a << 31; incorrectly compiled to mul.wide.s32 %rd7, %r1, -2147483648;
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Now that we're not just checking whether the constant fits in 5 bits, the constraint needs a new name.
IntConst_0_30 ?