Is it okay to mix legacy SSE encoded instructions and VEX encoded ones in the same code path?

On current implementations, if (at least) the upper halves have been reset (VZEROUPPER or VZEROALL) there is no penalty for using legacy SSE instructions.

As detailed on page 128 in Agner Fog: optimizing subroutines in assembly, using legacy SSE instructions while (some) upper halves are in use carries a performance penalty. This penalty is incurred once when entering the state where YMM registers are split in the middle, and once again when leaving that state.

Mixing VEX-encoded 128-bit instructions and legacy SSE instructions is not a problem.