Created by: joshua-warburton
Several AArch64 memory related instructions have various bits designated as "soft bits." This means that the spec suggests a value of 1 for them, but it is allowed for the bits to vary from that.
Previously these bits were represented as operands, but that caused stray values to show up in the IR. This change introduces a way to represent soft bits in codec.txt which tells the decoder to ignore them and the encoder to set them to be 1.
This change also updates the encoding macros to remove the unnecessary operands and updates the appropriate tests. The decode tests have been modified to allow the re-encoding to differ from the original encoding. This is because the soft bits can be values not strictly dictated by the spec but as we will always re-encode to spec, the re-encoding will be different to the initial encoding.
Fixes: #4532 (closed)