clarify rules for .Z suffix and mask registers. See issue 57952.

Keith Randall 2023-01-26 22:14:01 -08:00
parent 99f566f0ed
commit 87ecfa1a41

@ -80,11 +80,12 @@ This is effectively "no masking".
`K1-K7` registers can be used to override default opmask. `K1-K7` registers can be used to override default opmask.
`K` register should be placed right before destination operand. `K` register should be placed right before destination operand.
Zeroing-masking can be activated with `Z` opcode suffix. Zeroing-masking can be activated with `Z` opcode suffix. Zeroing-masking requires that a mask register other than K0 be specified.
For example, `VADDPD.Z (AX), Z30, K3, Z10` uses zeroing-masking and explicit `K` register. For example, `VADDPD.Z (AX), Z30, K3, Z10` uses zeroing-masking and explicit `K` register.
- If `Z` opcode suffix is removed, it's merging-masking. - If `Z` opcode suffix is removed, it's merging-masking with `K3` mask.
- If `K3` operand is removed, `K0` operand is implied. - If `K3` operand is removed, it generates an assembler error.
- If both `Z` opcode suffix and `K3` operand are removed, it is merging-masking with `K0` mask.
It's compile-time error to use `K0` register for `{k1}` operands (consult [manuals](https://software.intel.com/en-us/articles/intel-sdm) for details). It's compile-time error to use `K0` register for `{k1}` operands (consult [manuals](https://software.intel.com/en-us/articles/intel-sdm) for details).