How would you swap the bit pattern of a floating point within a BinaryFloatingPoint extension?

I want to create an extension for BinaryFloatingPoint to convert between an array of bytes to a floating point number, with an endianness flag. If the flag matches with the system's endianness, I'd return the value as returned by buffer.load(as: X.self), but I need to byte swap it in case the endiannesses don't match.

I'm trying to go by swapping the bytes from the sign, exponent and significand bit patterns but it's giving me a wrong result.

With FixedWidthInteger, I would just call byteSwapped and if I was doing an extension for each floating point type, swapping the bitPattern would be enough.

I don't know if this is something feasible in an efficient way but I want to exhaust this option before moving to individual conformances.

Thank you in advance for any support.