This matches the Intel documentation which shows them available by importing immintrin.h. x86intrin.h also includes immintrin.h so anyone including x86intrin.h will still get them.
This is different than gcc, but I don't think we were a perfect match there already. I'm unclear what gcc's policy is about how they choose which to add things to.
I see that you are removing this popcntintrin.h inclusion without adding it to immintrin.h. Is that because you are relying on the inclusion from smmintrin.h?
If so, won't that cause a problem on Windows with -mpopcnt for targets that don't include smmintrin.h?