1. Apr 01, 2022
    • Aaron Ballman's avatar
      Use functions with prototypes when appropriate; NFC · 0e890904
      Aaron Ballman authored
      A significant number of our tests in C accidentally use functions
      without prototypes. This patch converts the function signatures to have
      a prototype for the situations where the test is not specific to K&R C
      declarations. e.g.,
      
        void func();
      
      becomes
      
        void func(void);
      0e890904
    • Paul Kirth's avatar
      [misexpect] Re-implement MisExpect Diagnostics · 46774df3
      Paul Kirth authored
      Reimplements MisExpect diagnostics from D66324 to reconstruct its
      original checking methodology only using MD_prof branch_weights
      metadata.
      
      New checks rely on 2 invariants:
      
      1) For frontend instrumentation, MD_prof branch_weights will always be
         populated before llvm.expect intrinsics are lowered.
      
      2) for IR and sample profiling, llvm.expect intrinsics will always be
         lowered before branch_weights are populated from the IR profiles.
      
      These invariants allow the checking to assume how the existing branch
      weights are populated depending on the profiling method used, and emit
      the correct diagnostics. If these invariants are ever invalidated, the
      MisExpect related checks would need to be updated, potentially by
      re-introducing MD_misexpect metadata, and ensuring it always will be
      transformed the same way as branch_weights in other optimization passes.
      
      Frontend based profiling is now enabled without using LLVM Args, by
      introducing a new CodeGen option, and checking if the -Wmisexpect flag
      has been passed on the command line.
      
      Reviewed By: tejohnson
      
      Differential Revision: https://reviews.llvm.org/D115907
      46774df3
    • Joachim Protze's avatar
      [OpenMP][Tools] Fix handling of initial-task-end · 7641e42d
      Joachim Protze authored
      Latest OpenMP spec says parallel_data is NULL for initial/implicit-task-end.
      We nevertheless need to cleanup the ParallelData here, as there is no other
      callback for the end of the implicit parallel region. We can use the reference
      stored in the TaskData.
      
      Reviewed By: dreachem
      
      Differential Revision: https://reviews.llvm.org/D114005
      7641e42d
    • Thomas Symalla's avatar
      [AMDGPU] Add missing use check in SIOptimizeExecMasking pass. · 1a6aa8b1
      Thomas Symalla authored
      Whenever a v_cmp, s_and_saveexec instruction sequence shall be
      transformed to an equivalent s_mov, v_cmpx sequence, it needs
      to be detected if the v_cmp target register is used between
      the two instructions as the v_cmp result gets omitted by
      using the v_cmpx instruction, resulting in invalid code.
      
      Reviewed By: foad
      
      Differential Revision: https://reviews.llvm.org/D122797
      1a6aa8b1
    • Simon Pilgrim's avatar
      [X86] Remove redundant FIXME · 535211c3
      Simon Pilgrim authored
      lowerV64I8Shuffle has been extended a lot since this was added.
      535211c3
    • Simon Pilgrim's avatar
      [X86] lowerV64I8Shuffle - don't use lowerShuffleWithPERMV until we've tried simpler options · fac17299
      Simon Pilgrim authored
      Shuffle combining will still lower to this with better fast cross lane checks.
      
      Noticed while triaging Issue #54658
      fac17299
    • Okwan Kwon's avatar
      [mlir] Bubble up tensor.extract_slice above linalg operation · 65bdeddb
      Okwan Kwon authored
      Bubble up extract_slice above Linalg operation.
      
      A sequence of operations
      
          %0 = linalg.<op> ... arg0, arg1, ...
          %1 = tensor.extract_slice %0 ...
      
      can be replaced with
      
          %0 = tensor.extract_slice %arg0
          %1 = tensor.extract_slice %arg1
          %2 = linalg.<op> ... %0, %1, ...
      
      This results in the reduce computation of the linalg operation.
      
      The implementation uses the tiling utility functions. One difference
      from the tiling process is that we don't need to insert the checking
      code for the out-of-bound accesses. The use of the slice itself
      represents that the code writer is sure about the boundary condition.
      To avoid adding the boundary condtion check code, `omitPartialTileCheck`
      is introduced for the tiling utility functions.
      
      Differential Revision: https://reviews.llvm.org/D122437
      65bdeddb
    • Chris Bieneman's avatar
      [HLSL] Further improve to numthreads diagnostics · 19054163
      Chris Bieneman authored
      This adds diagnostics for conflicting attributes on the same
      declarataion, conflicting attributes on a forward and final
      declaration, and defines a more narrowly scoped HLSLEntry attribute
      target.
      
      Big shout out to @aaron.ballman for the great feedback and review on
      this!
      19054163
    • Abinav Puthan Purayil's avatar
    • Abinav Puthan Purayil's avatar
    • Aaron Ballman's avatar
      Fix the build after cd26190a · 22675492
      Aaron Ballman authored
      These variables were being used uninitialized and it caused a
      significant number of test failures on Windows.
      22675492
  2. Mar 31, 2022