These two ops are handled in a very similar way -- the only difference
in the number result bits produced.
I checked these transformation with Alive2:
- addi + sext: https://alive2.llvm.org/ce/z/3NSs9T
- addi + zext: https://alive2.llvm.org/ce/z/t7XHOT
- muli + sext: https://alive2.llvm.org/ce/z/-7sfW9
- muli + zext: https://alive2.llvm.org/ce/z/h4yntF
You mean : i16 here?