
#7902: Add support for byte endianness swapping exposed as a primops ------------------------------------------+--------------------------------- Reporter: tab | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Resolution: | Keywords: bswap endianness Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase: codeGen/should_run/cgrun072 | Blockedby: Blocking: | Related: ------------------------------------------+--------------------------------- Comment(by tab): Attached is an incremental patch to fix the 32bit x86 build. I've verified the 32 bits works and that 64 bits still build and work too. along with the patch, there's a change of byteSwap64 primops from GenPrimOp to Monadic type. I don't think it change anything, but i believe the latter is the correct one in this case. It's inspired by #7976, and i've verified that there's no overlap going on in registers: * my (limited) understanding of codeGen seem iselExpr64 would create a new register pair all the time. * Empirically generating arbitrary haskell code and checking the disassembled code. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7902#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler