packages feed

uvector-0.1: examples/simple/SegPrefixSum.hs

module SegPrefixSum
where

import Data.Array.Parallel.Unlifted

test :: SUArr Int -> SUArr Int
test =   fstS
       . loopArr
       . loopSU (\a x -> ((a + x::Int) :*: Just a)) 
		(\a i -> (a :*: (Nothing :: Maybe ()))) 0


{- Inner loop:

      $wtrans_s1aH :: GHC.Prim.Int#
		      -> GHC.Prim.Int#
		      -> GHC.Prim.Int#
		      -> GHC.Prim.Int#
		      -> GHC.Prim.Int#
		      -> GHC.Prim.State# s_aLt
		      -> (# GHC.Prim.State# s_aLt, (GHC.Base.Int, GHC.Base.Int) #)
      [Arity 6
       Str: DmdType LLLLLL]
      $wtrans_s1aH =
	\ (ww7_s19k :: GHC.Prim.Int#)
	  (ww8_s19o :: GHC.Prim.Int#)
	  (ww9_s19s :: GHC.Prim.Int#)
	  (ww10_s19w :: GHC.Prim.Int#)
	  (ww11_s19A :: GHC.Prim.Int#)
	  (w_s19C :: GHC.Prim.State# s_aLt) ->
	  case ww8_s19o of wild14_X1X {
	    __DEFAULT ->
	      case GHC.Prim.readIntArray# @ s_aLt marr#1_XQl ww9_s19s w_s19C
	      of wild2_aVH { (# s2#3_aVJ, r#_aVK #) ->
	      case GHC.Prim.readIntArray# @ s_aLt marr#_aPk ww9_s19s s2#3_aVJ
	      of wild21_XXy { (# s2#4_XXB, r#1_XXD #) ->
	      case GHC.Prim.writeIntArray#
		     @ s_aLt marr#2_XQt (GHC.Prim.+# r#_aVK r#1_XXD) ww11_s19A s2#4_XXB
	      of s2#5_aWC { __DEFAULT ->
	      case GHC.Prim.writeIntArray#
		     @ s_aLt marr#_aPk ww9_s19s (GHC.Prim.+# r#1_XXD 1) s2#5_aWC
	      of s2#6_XZ5 { __DEFAULT ->
	      $wtrans_s1aH
		(GHC.Prim.+# ww7_s19k 1)
		(GHC.Prim.-# wild14_X1X 1)
		ww9_s19s
		ww10_s19w
		(GHC.Prim.+#
		   ww11_s19A (GHC.Prim.indexIntArray# rb2_aOg (GHC.Prim.+# rb_aOd ww7_s19k)))
		s2#6_XZ5
	      }
	      }
	      }
	      };
	    0 ->
	      let {
		a_s10T [Just L] :: GHC.Prim.Int#
		[Str: DmdType]
		a_s10T = GHC.Prim.+# ww9_s19s 1
	      } in 
		case GHC.Prim.==# a_s10T ww1_s19O of wild3_aLw {
		  GHC.Base.False ->
		    case a_s10T of wild2_X3e {
		      __DEFAULT ->
			case GHC.Prim.readIntArray# @ s_aLt marr#1_XQl (GHC.Prim.-# wild2_X3e 1) w_s19C
			of wild21_aVH { (# s2#3_aVJ, r#_aVK #) ->
			case GHC.Prim.readIntArray# @ s_aLt marr#_aPk (GHC.Prim.-# wild2_X3e 1) s2#3_aVJ
			of wild22_XXY { (# s2#4_XY1, r#1_XY3 #) ->
			case GHC.Prim.writeIntArray#
			       @ s_aLt marr#1_XQl wild2_X3e (GHC.Prim.+# r#_aVK r#1_XY3) s2#4_XY1
			of s2#5_aWC { __DEFAULT ->
			case GHC.Prim.writeIntArray# @ s_aLt marr#_aPk wild2_X3e 0 s2#5_aWC
			of s2#6_XYN { __DEFAULT ->
			$wtrans_s1aH
			  ww7_s19k
			  (GHC.Prim.indexIntArray# ww2_s19P (GHC.Prim.+# ww_s19N wild2_X3e))
			  wild2_X3e
			  ww10_s19w
			  ww11_s19A
			  s2#6_XYN
			}
			}
			}
			};
		      0 ->
			case GHC.Prim.writeIntArray# @ s_aLt marr#1_XQl 0 0 w_s19C
			of s2#3_aWC { __DEFAULT ->
			case GHC.Prim.writeIntArray# @ s_aLt marr#_aPk 0 0 s2#3_aWC
			of s2#4_XYN { __DEFAULT ->
			$wtrans_s1aH
			  ww7_s19k
			  (GHC.Prim.indexIntArray# ww2_s19P ww_s19N)
			  0
			  ww10_s19w
			  ww11_s19A
			  s2#4_XYN
			}
			}
		    };
		  GHC.Base.True ->
		    (# w_s19C, ((GHC.Base.I# ww10_s19w), (GHC.Base.I# ww11_s19A)) #)
		}
	  };
    } in 

-}