summaryrefslogtreecommitdiff
path: root/compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/CmmToAsm/Wasm/FromCmm.hs')
-rw-r--r--compiler/GHC/CmmToAsm/Wasm/FromCmm.hs25
1 files changed, 21 insertions, 4 deletions
diff --git a/compiler/GHC/CmmToAsm/Wasm/FromCmm.hs b/compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
index d41b95feba..4e138ba263 100644
--- a/compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
+++ b/compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
@@ -1238,8 +1238,13 @@ lower_CallishMachOp lbl (MO_Memcmp {}) rs xs =
CmmMayReturn
rs
xs
-lower_CallishMachOp lbl (MO_PopCnt {}) rs xs =
- lower_CMO_Un_Prim lbl WasmPopcnt rs xs
+lower_CallishMachOp lbl (MO_PopCnt w0) rs xs =
+ lower_CmmUnsafeForeignCall
+ lbl
+ (Left $ fromString $ "hs_popcnt" <> show (widthInBits w0))
+ CmmMayReturn
+ rs
+ xs
lower_CallishMachOp lbl (MO_Pdep w0) rs xs =
lower_CmmUnsafeForeignCall
lbl
@@ -1254,8 +1259,20 @@ lower_CallishMachOp lbl (MO_Pext w0) rs xs =
CmmMayReturn
rs
xs
-lower_CallishMachOp lbl (MO_Clz {}) rs xs = lower_CMO_Un_Prim lbl WasmClz rs xs
-lower_CallishMachOp lbl (MO_Ctz {}) rs xs = lower_CMO_Un_Prim lbl WasmCtz rs xs
+lower_CallishMachOp lbl (MO_Clz w0) rs xs =
+ lower_CmmUnsafeForeignCall
+ lbl
+ (Left $ fromString $ "hs_clz" <> show (widthInBits w0))
+ CmmMayReturn
+ rs
+ xs
+lower_CallishMachOp lbl (MO_Ctz w0) rs xs =
+ lower_CmmUnsafeForeignCall
+ lbl
+ (Left $ fromString $ "hs_ctz" <> show (widthInBits w0))
+ CmmMayReturn
+ rs
+ xs
lower_CallishMachOp lbl (MO_BSwap w0) rs xs =
lower_CmmUnsafeForeignCall
lbl