I'm working off an older post LLVM 3.7 snapshot and noticed that KNL
1-byte mask spills+reloads are spilling too wide. The spiller reserves
1-byte for the stack slot, but the move instruction is moving 2-bytes
of data around. This obviously clobbers neighboring stack slots.
kmovw %k1, 767(%rsp) # [scrubbed]:[scrubbed]
# 1-byte Folded Spill
We only have the KMOVW instruction on KNL to load/store mask
registers, which is why we're moving 2-bytes of data. Seems like the
spilling code should be updated to compensate for the extra byte.
Is this a known problem in 3.7? Has a fix been submitted already?