Each of these ops is compatible with only one extension kind and
produces an extra result bit.
I checked these transformation in Alive2:
- subi + extsi: https://alive2.llvm.org/ce/z/ipmZZA
- divsi + extsi: https://alive2.llvm.org/ce/z/fAcqUv
- divui + extui: https://alive2.llvm.org/ce/z/QZJpFp
It would be helpful to indicate under what cases we need the extra bits. (max positive value - min negative value)