packages feed

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

module Asm.X86.B ( bb ) where

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

bb :: [X86 reg freg f2reg a] -> [BB X86 reg freg f2reg a ()]
bb = filter (not.emptyBB).fmap mkBB.concatMap (split (keepDelimsL$whenElt isL)).split (keepDelimsR$whenElt cf)
    where cf J{}=True; cf Jl{}=True; cf Jg{}=True; cf Jge{}=True; cf Jle{}=True; cf Jne{}=True; cf C{}=True; cf RetL{}=True; cf _=False
          isL Label{}=True; isL _=False
          mkBB x = BB x ()
          emptyBB (BB [] _) = True
          emptyBB _         = False