The VEX prefix comes in two forms, 2 byte and 3 byte. The 2 byte version is missing some fields from the 3 byte version so can't encode all instructions. The missing fields are VEX.W, VEX.mmmmm, VEX.X, and VEX.B. VEX.X is only used by memory instructions. VEX.W isn't used on most instructions. For a commutable instructions like the register only form of VPADDD, if one input is xmm8-15 and the other is xmm0-7, we could take advantage of commuting to always put the xmm8-15 in the operand that uses VEX.R to avoid needing VEX.B. This would only work for instructions that use VEX.mmmmm = 0x1, but that's the more common encoding for that field.
Candidate patch https://reviews.llvm.org/D68550
Fixed in f65493a83e3bdb402fb1dfa92bcc25707e961147