Skip to content
Snippets Groups Projects
  • Adam Nemet's avatar
    e280490a
    Add loop pragma for Loop Distribution · e280490a
    Adam Nemet authored
    Summary:
    This is similar to other loop pragmas like 'vectorize'.  Currently it
    only has state values: distribute(enable) and distribute(disable).  When
    one of these is specified the corresponding loop metadata is generated:
    
      !{!"llvm.loop.distribute.enable", i1 true/false}
    
    As a result, loop distribution will be attempted on the loop even if
    Loop Distribution in not enabled globally.  Analogously, with 'disable'
    distribution can be turned off for an individual loop even when the pass
    is otherwise enabled.
    
    There are some slight differences compared to the existing loop pragmas.
    
    1. There is no 'assume_safety' variant which makes its handling slightly
    different from 'vectorize'/'interleave'.
    
    2. Unlike the existing loop pragmas, it does not have a corresponding
    numeric pragma like 'vectorize' -> 'vectorize_width'.  So for the
    consistency checks in CheckForIncompatibleAttributes we don't need to
    check it against other pragmas.  We just need to check for duplicates of
    the same pragma.
    
    Reviewers: rsmith, dexonsmith, aaron.ballman
    
    Subscribers: bob.wilson, cfe-commits, hfinkel
    
    Differential Revision: http://reviews.llvm.org/D19403
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272656 91177308-0d34-0410-b5e6-96231b3b80d8
    e280490a
    History
    Add loop pragma for Loop Distribution
    Adam Nemet authored
    Summary:
    This is similar to other loop pragmas like 'vectorize'.  Currently it
    only has state values: distribute(enable) and distribute(disable).  When
    one of these is specified the corresponding loop metadata is generated:
    
      !{!"llvm.loop.distribute.enable", i1 true/false}
    
    As a result, loop distribution will be attempted on the loop even if
    Loop Distribution in not enabled globally.  Analogously, with 'disable'
    distribution can be turned off for an individual loop even when the pass
    is otherwise enabled.
    
    There are some slight differences compared to the existing loop pragmas.
    
    1. There is no 'assume_safety' variant which makes its handling slightly
    different from 'vectorize'/'interleave'.
    
    2. Unlike the existing loop pragmas, it does not have a corresponding
    numeric pragma like 'vectorize' -> 'vectorize_width'.  So for the
    consistency checks in CheckForIncompatibleAttributes we don't need to
    check it against other pragmas.  We just need to check for duplicates of
    the same pragma.
    
    Reviewers: rsmith, dexonsmith, aaron.ballman
    
    Subscribers: bob.wilson, cfe-commits, hfinkel
    
    Differential Revision: http://reviews.llvm.org/D19403
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272656 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.