[TIR] Update symbolic index term order in loop fusion #18406
      
        
          +49
        
        
          −13
        
        
          
        
      
    
  
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
This change just keep stride terms order the same with fused loop order in
fuseprimitive. In symbolic circumstances, previous form suffer from simplification issues and would make the expression tree much complex in following lowering steps.Take [M, N] tiling as an example, the previous binding form after
would be like (i_0_j_0_fused in
[0, ceildiv(M, 64) * ceildiv(N, 16)]instead of more simple version
This is because unfortunately we do not know
ceildiv(N, 16) * ceildiv(M, 64) == ceildiv(M, 64) * ceildiv(N, 16)in rule based simplifications. And then certain analysis (for example, region estimation) may fail to give concise estimations, due to complex dynamic expression trees.