AVX doubles the width of the vector registers. ymm0 to ymm15 are 256 bits wide, and the xmm registers of the SSE file are their low halves: writing xmm3 with an SSE instruction changes the lower half of ymm3 and leaves the upper half alone, while the AVX forms of the same instructions, which are written with a v in front (vaddps, vmovdqu), say how much of the register they mean. A 128 bit AVX instruction writes the lower half and clears the upper half; a 256 bit one, written with ymm operands, writes both. That is why AVX code that mixes the two forms often ends with vzeroupper, which clears every upper half so that the next SSE instruction does not pay for them.
AVX instructions take a separate destination: vaddps ymm0, ymm1, ymm2 adds ymm1 and ymm2 and writes ymm0, leaving both sources as they were. Most of them work on the two 128 bit halves independently, which is why a shuffle such as vpshufb cannot move a byte from one half to the other; the few that cross, such as vperm2f128, vpermd and vinsertf128, say so in their names.
The emulator runs AVX, AVX2, FMA, BMI and the rest of the instructions a compiler emits with -mavx2, but not the 512 bit AVX-512 registers.