Zeroing-masking is not permitted in this case. See the code comment for
how this is being dealt with.
 [      ]*[a-f0-9]+:    62 f2 7d cf 92 04 08    vgatherdps \(%eax,%zmm1(,1)?\),%zmm0\{%k7\}\{z\}/\(bad\)
 [      ]*[a-f0-9]+:    62 f2 7d 48 92 04 08    vgatherdps \(%eax,%zmm1(,1)?\),%zmm0/\(bad\)
 [      ]*[a-f0-9]+:    62 f1 7c cf c2 c0 00    vcmpeqps %zmm0,%zmm0,%k0\{%k7\}\{z\}/\(bad\)
+[      ]*[a-f0-9]+:    62 f1 7c cf 29 00       vmovaps %zmm0,\(%eax\)\{%k7\}\{z\}/\(bad\)
 #pass
 
 
        # vcmpeqps %zmm0, %zmm0, %k0{%k7} with EVEX.z set
        .insn EVEX.0f 0xc2, $0, %zmm0, %zmm0, %k0{%k7}{z}
+
+       # vmovaps %zmm0, (%eax){%k7} with EVEX.z set
+       .insn EVEX.0f 0x29, %zmm0, (%eax){%k7}{z}
 
 
   if (ins->vex.evex)
     {
+
+      /* Zeroing-masking is invalid for memory destinations. Set the flag
+        uniformly, as the consumer will inspect it only for the destination
+        operand.  */
+      if (ins->vex.zeroing)
+       ins->illegal_masking = true;
+
       switch (bytemode)
        {
        case dw_mode: