diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2018-03-21 17:02:21 -0400 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2018-03-21 17:02:21 -0400 |
commit | 4a47fd33d2f16070d4fe8bd32a104587608061cd (patch) | |
tree | 204afacf3bf4177de01b8f2778f4154c26bf578b /compiler/nativeGen/SPARC/CodeGen/Gen64.hs | |
parent | c663b715b6201d460e8bf2b6fb26e61c700384e0 (diff) | |
parent | 0aa7d8796a95298e906ea81fe4a52590d75c2e47 (diff) | |
download | haskell-wip/T14068.tar.gz |
Merge branch 'wip/T14951' into wip/T14068wip/T14068
Diffstat (limited to 'compiler/nativeGen/SPARC/CodeGen/Gen64.hs')
-rw-r--r-- | compiler/nativeGen/SPARC/CodeGen/Gen64.hs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/nativeGen/SPARC/CodeGen/Gen64.hs b/compiler/nativeGen/SPARC/CodeGen/Gen64.hs index 8549fa07ee..6fa7482f9b 100644 --- a/compiler/nativeGen/SPARC/CodeGen/Gen64.hs +++ b/compiler/nativeGen/SPARC/CodeGen/Gen64.hs @@ -193,6 +193,24 @@ iselExpr64 (CmmMachOp (MO_UU_Conv _ W64) [expr]) return $ ChildCode64 code r_dst_lo +-- only W32 supported for now +iselExpr64 (CmmMachOp (MO_SS_Conv W32 W64) [expr]) + = do + r_dst_lo <- getNewRegNat II32 + let r_dst_hi = getHiVRegFromLo r_dst_lo + + -- compute expr and load it into r_dst_lo + (a_reg, a_code) <- getSomeReg expr + + dflags <- getDynFlags + let platform = targetPlatform dflags + code = a_code + `appOL` toOL + [ SRA a_reg (RIImm (ImmInt 31)) r_dst_hi + , mkRegRegMoveInstr platform a_reg r_dst_lo ] + + return $ ChildCode64 code r_dst_lo + iselExpr64 expr = pprPanic "iselExpr64(sparc)" (ppr expr) |