On modern x86 hardware, integer instructions that act on float values in xmm registers (and vice versa) require a somewhat expensive change of execution domain. That the register names are the same is irrelevant: everything will be renamed into what the CPU works with internally (which is separate integer and floating point domains).
Mixing integer mmx and x87 is even worse, with the crazy emms junk. Not worth it.
The penalty is at most ~1 cycle of latency -- in practice I find it gets completely absorbed by the OOE engine. I've never measured any significant penalty in any code for mixing float and int SSE operations on any x86 microarchitecture.
Floating point bitwise operations exist too: xorps, andps, and so on.
Mixing integer mmx and x87 is even worse, with the crazy emms junk. Not worth it.