The previous version didn't work if the jump table base address didn't fit in 32 bit, since it was encoded as an immediate offset.
And in case the jump table is encoded as 32 bit label differences, we need to load and add them to the table base first.
This solves the first half of the issues mentioned in PR34720.
Also fix some of the errors pointed out by -verify-machineinstrs, by using GR32_NOSPRegClass.