ARM64: Switch Expansion Using Jump Table
Fixes #3332
To validate various addressing in #4896, I just enable this.
Previously, we only allow a load operation to JIT data (`ldr` or
`IF_LARGELDC`).
For switch expansion, jump table is also recorded into JIT data.
In this case, we only get the address of jump table head, and
load the right entry after computing offset. So, basically `adr` or
`IF_LARGEADR` is used to not only load label within code but also refer to
the location of JIT data.
The typical code sequence for switch expansion is like this:
```
adr x8, [@RWD00] // load address of jump table head
ldr w8, [x8, x0, LSL #2] // load jump entry from table addr + x0 * 4
adr x9, [G_M56320_IG02] // load address of current baisc block
add x8, x8, x9 // Add them to compute the final target
br x8 // Indirectly jump to the target
```