Giter VIP home page Giter VIP logo

loops.jl's Introduction

loops.jl's People

Contributors

vchuravy avatar

Stargazers

Will Tebbutt avatar Elias Carvalho avatar Ujjwal Panda avatar Dennis Ogiermann avatar Jerry Ling avatar Chris Elrod avatar Peter avatar

Watchers

 avatar Chris Elrod avatar Dennis Ogiermann avatar  avatar

loops.jl's Issues

Invariant conditions and invariant statements in conditional branches

function f(cond)
     for ...
         If cond
              cond & true # Could maybe be moved, but tricky since we need to reconstruct the branch.
         else if I > 5
             cond & true # Can't be moved
      end
end

It may be easier to do if cond as a separate loop-unswitch pass. And for now just punt on this in the context of LICM.

Memory operations

Memory operations are only eligible to be hoisted if they are proven to not alias any memory written to within the loops.

This may also require per argument memory effects.

cc: @aviatesk

Multiple loops / loop nests

The biggest known-unkown is how to work with multiple loops in one function.

extract_loopinfo finds all loops at all levels, but for LICM we also need the nesting order so that we can work on the innermost loop first.

Secondly we need to maintain the correctness of LoopInfo itself under CFG manipulations.

So maybe we need to separate LoopInfo and Loop as two separate structs, the former representing the loop nests within the function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.