diff --git a/ghc/compiler/nativeGen/StixPrim.lhs b/ghc/compiler/nativeGen/StixPrim.lhs
index 6b992e3fe734c149779891cf4f232ac854299d09..2b28c64a5e5b06d03df341e74789e9d6befcde69 100644
--- a/ghc/compiler/nativeGen/StixPrim.lhs
+++ b/ghc/compiler/nativeGen/StixPrim.lhs
@@ -212,6 +212,30 @@ primCode [lhs] UnsafeFreezeByteArrayOp [rhs]
   = simpleCoercion PtrRep lhs rhs
 \end{code}
 
+Returning the size of (mutable) byte arrays is just
+an indexing operation.
+
+\begin{code}
+primCode [lhs] SizeofByteArrayOp [rhs]
+  = let
+	lhs' = amodeToStix lhs
+    	rhs' = amodeToStix rhs
+    	sz   = StIndex IntRep rhs' fixedHS
+    	assign = StAssign IntRep lhs' (StInd IntRep sz)
+    in
+    returnUs (\xs -> assign : xs)
+
+primCode [lhs] SizeofMutableByteArrayOp [rhs]
+  = let
+	lhs' = amodeToStix lhs
+    	rhs' = amodeToStix rhs
+    	sz   = StIndex IntRep rhs' fixedHS
+    	assign = StAssign IntRep lhs' (StInd IntRep sz)
+    in
+    returnUs (\xs -> assign : xs)
+
+\end{code}
+
 Most other array primitives translate to simple indexing.
 
 \begin{code}