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 = String -> String -> (Prog rep -> PassM (Prog rep)) -> Pass rep rep 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 = (Prog SOACS -> PassM (Prog SOACS)) -> Pass SOACS SOACS 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 = (Prog GPU -> PassM (Prog GPU)) -> Pass GPU GPU 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 = (Prog Seq -> PassM (Prog Seq)) -> Pass Seq Seq 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 = (Prog MC -> PassM (Prog MC)) -> Pass MC MC 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 = (Prog GPUMem -> PassM (Prog GPUMem)) -> Pass GPUMem GPUMem 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 = (Prog SeqMem -> PassM (Prog SeqMem)) -> Pass SeqMem SeqMem 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 = (Prog MCMem -> PassM (Prog MCMem)) -> Pass MCMem MCMem forall rep. (Prog rep -> PassM (Prog rep)) -> Pass rep rep simplify Prog MCMem -> PassM (Prog MCMem) MCMem.simplifyProg