uvector-0.1: examples/simple/PrefixSum.hs
module PrefixSum
where
import Data.Array.Parallel.Unlifted
test :: UArr Int -> UArr Int
test = loopArr . loopU (\a x -> (a + x :*: Just a)) 0
{- Inner loop:
$wtrans_sV2 :: GHC.Prim.Int#
-> GHC.Prim.Int#
-> GHC.Prim.Int#
-> GHC.Prim.State# s_aIq
-> (# GHC.Prim.State# s_aIq, (GHC.Base.Int, GHC.Base.Int) #)
[Arity 4
Str: DmdType LLLL]
$wtrans_sV2 =
\ (ww_sUt :: GHC.Prim.Int#)
(ww1_sUx :: GHC.Prim.Int#)
(ww2_sUB :: GHC.Prim.Int#)
(w_sUD :: GHC.Prim.State# s_aIq) ->
case GHC.Prim.==# ww_sUt rb1_aU1 of wild12_aH7 {
GHC.Base.False ->
case GHC.Prim.writeIntArray# @ s_aIq marr#_aOv ww1_sUx ww2_sUB w_sUD
of s2#1_aRd { __DEFAULT ->
$wtrans_sV2
(GHC.Prim.+# ww_sUt 1)
(GHC.Prim.+# ww1_sUx 1)
(GHC.Prim.+#
ww2_sUB (GHC.Prim.indexIntArray# rb2_aU2 (GHC.Prim.+# rb_aKE ww_sUt)))
s2#1_aRd
};
GHC.Base.True -> (# w_sUD, ((GHC.Base.I# ww2_sUB), (GHC.Base.I# ww1_sUx)) #)
};
-}