packages feed

apple-0.3.0.0: src/Asm/Aarch64/B.hs

module Asm.Aarch64.B ( bb ) where

import           Asm.Aarch64
import           Asm.BB
import           Data.List.Split (keepDelimsL, keepDelimsR, split, whenElt)

bb :: [AArch64 reg freg f2reg a] -> [BB AArch64 reg freg f2reg a ()]
bb = filter (not.emptyBB).fmap mkBB.concatMap (split (keepDelimsL$whenElt isL)).split (keepDelimsR$whenElt cf)
    where cf B{}=True; cf Bc{}=True; cf Cbnz{}=True; cf Tbnz{}=True; cf Tbz{}=True; cf C{}=True; cf RetL{}=True; cf _=False
          isL Label{}=True; isL _=False
          mkBB x = BB x ()
          emptyBB (BB [] _)=True; emptyBB _=False