module Futhark.Pass.Simplify ( simplify, simplifySOACS, simplifySeq, simplifyMC, simplifyGPU, simplifyGPUMem, simplifySeqMem, simplifyMCMem, ) where import Futhark.IR.GPU.Simplify qualified as GPU import Futhark.IR.GPUMem qualified as GPUMem import Futhark.IR.MC qualified as MC import Futhark.IR.MCMem qualified as MCMem import Futhark.IR.SOACS.Simplify qualified as SOACS import Futhark.IR.Seq qualified as Seq import Futhark.IR.SeqMem qualified as SeqMem import Futhark.IR.Syntax import Futhark.Pass simplify :: (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify :: forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify = forall fromrep torep. String -> String -> (Prog fromrep -> PassM (Prog torep)) -> Pass fromrep torep Pass String "simplify" String "Perform simple enabling optimisations." simplifySOACS :: Pass SOACS.SOACS SOACS.SOACS simplifySOACS :: Pass SOACS SOACS simplifySOACS = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog SOACS -> PassM (Prog SOACS) SOACS.simplifySOACS simplifyGPU :: Pass GPU.GPU GPU.GPU simplifyGPU :: Pass GPU GPU simplifyGPU = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog GPU -> PassM (Prog GPU) GPU.simplifyGPU simplifySeq :: Pass Seq.Seq Seq.Seq simplifySeq :: Pass Seq Seq simplifySeq = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog Seq -> PassM (Prog Seq) Seq.simplifyProg simplifyMC :: Pass MC.MC MC.MC simplifyMC :: Pass MC MC simplifyMC = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog MC -> PassM (Prog MC) MC.simplifyProg simplifyGPUMem :: Pass GPUMem.GPUMem GPUMem.GPUMem simplifyGPUMem :: Pass GPUMem GPUMem simplifyGPUMem = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog GPUMem -> PassM (Prog GPUMem) GPUMem.simplifyProg simplifySeqMem :: Pass SeqMem.SeqMem SeqMem.SeqMem simplifySeqMem :: Pass SeqMem SeqMem simplifySeqMem = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog SeqMem -> PassM (Prog SeqMem) SeqMem.simplifyProg simplifyMCMem :: Pass MCMem.MCMem MCMem.MCMem simplifyMCMem :: Pass MCMem MCMem simplifyMCMem = forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog MCMem -> PassM (Prog MCMem) MCMem.simplifyProg