diff --git a/patches/word-compat-0.0.4.patch b/patches/word-compat-0.0.4.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8c089188611bf4d7a177f98ba258caf44867f16a
--- /dev/null
+++ b/patches/word-compat-0.0.4.patch
@@ -0,0 +1,86 @@
+diff --git a/src/GHC/Prim/Compat.hs b/src/GHC/Prim/Compat.hs
+index ba14473..bb6cff0 100644
+--- a/src/GHC/Prim/Compat.hs
++++ b/src/GHC/Prim/Compat.hs
+@@ -28,6 +28,9 @@ import GHC.Prim (
+     writeWord8OffAddr#,writeWord16OffAddr#,writeWord32OffAddr#,writeWord64OffAddr#)
+ #endif
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++import GHC.Prim (Word64#)
++#endif
+ 
+ #if MIN_VERSION_ghc_prim(0,8,0)
+ 
+@@ -43,7 +46,11 @@ indexWord32Array# :: ByteArray# -> Int# -> Word#
+ indexWord32Array# arr i = word32ToWord# (Prim.indexWord32Array# arr i)
+ {-# INLINE indexWord32Array# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++indexWord64Array# :: ByteArray# -> Int# -> Word64#
++#else
+ indexWord64Array# :: ByteArray# -> Int# -> Word#
++#endif
+ indexWord64Array# = Prim.indexWord64Array#
+ {-# INLINE indexWord64Array# #-}
+ 
+@@ -65,7 +72,11 @@ readWord32Array# arr ix st =
+    in (# st', word32ToWord# v #)
+ {-# INLINE readWord32Array# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++readWord64Array# :: MutableByteArray# d -> Int# -> State# d -> (# State# d, Word64# #)
++#else
+ readWord64Array# :: MutableByteArray# d -> Int# -> State# d -> (# State# d, Word# #)
++#endif
+ readWord64Array# = Prim.readWord64Array#
+ {-# INLINE readWord64Array# #-}
+ 
+@@ -81,7 +92,11 @@ writeWord32Array# :: MutableByteArray# d -> Int# -> Word# -> State# d -> State#
+ writeWord32Array# arr ix v st = Prim.writeWord32Array# arr ix (wordToWord32# v) st
+ {-# INLINE writeWord32Array# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++writeWord64Array# :: MutableByteArray# d -> Int# -> Word64# -> State# d -> State# d
++#else
+ writeWord64Array# :: MutableByteArray# d -> Int# -> Word# -> State# d -> State# d
++#endif
+ writeWord64Array# = Prim.writeWord64Array#
+ {-# INLINE writeWord64Array# #-}
+ 
+@@ -97,7 +112,11 @@ indexWord32OffAddr# :: Addr# -> Int# -> Word#
+ indexWord32OffAddr# addr off = word32ToWord# (Prim.indexWord32OffAddr# addr off)
+ {-# INLINE indexWord32OffAddr# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++indexWord64OffAddr# :: Addr# -> Int# -> Word64#
++#else
+ indexWord64OffAddr# :: Addr# -> Int# -> Word#
++#endif
+ indexWord64OffAddr# addr off = Prim.indexWord64OffAddr# addr off
+ {-# INLINE indexWord64OffAddr# #-}
+ 
+@@ -119,7 +138,11 @@ readWord32OffAddr# addr off st =
+    in (# st', word32ToWord# v #)
+ {-# INLINE readWord32OffAddr# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++readWord64OffAddr# :: Addr# -> Int# -> State# d -> (# State# d, Word64# #)
++#else
+ readWord64OffAddr# :: Addr# -> Int# -> State# d -> (# State# d, Word# #)
++#endif
+ readWord64OffAddr# = Prim.readWord64OffAddr#
+ {-# INLINE readWord64OffAddr# #-}
+ 
+@@ -138,7 +161,11 @@ writeWord32OffAddr# addr off v st =
+   Prim.writeWord32OffAddr# addr off (wordToWord32# v) st
+ {-# INLINE writeWord32OffAddr# #-}
+ 
++#if MIN_VERSION_ghc_prim(0,9,0)
++writeWord64OffAddr# :: Addr# -> Int# -> Word64# -> State# d -> State# d
++#else
+ writeWord64OffAddr# :: Addr# -> Int# -> Word# -> State# d -> State# d
++#endif
+ writeWord64OffAddr# = Prim.writeWord64OffAddr#
+ {-# INLINE writeWord64OffAddr# #-}
+