Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.
1098 Discussions

What is behavior of LD + OP instruction with register source and EVEX.b = 1?


I'm confused about whether EVEX.b = 1 is allowed (and ignored) for instructions such as

VPMINUD reg, reg, reg

I cite this case because the gnu assembler testsuite has a case with this instruction but b = 1.  objdump disassembles the instruction without respect to the value of b.

If the third operand is memory, then it can have {b32/64} attached and the value of b is significant.  But with a register, there is no exception or rounding inherent in the operation, so the value of b shouldn't matter.

Table 4-12, the fourth line, suggests that b = 1 is a #UD, but it isn't clear whether this applies to VPMINUD or not.  It refers to Table 4-6, which is instructions not affected by embedded broadcast.  But this distinction only makes sense with a memory operand.

In the applicable section, Exceptions Class E4, I couldn't find anything about a #UD when b = 1 and modr/m mod = 11b.

Could you tell me whether the instruction is valid or not, and point to where in the doc this is made clear (or perhaps the doc needs to be improved).  Thanks.


0 Kudos
0 Replies