1. Apr 07, 2023
    • Fabian Mora's avatar
      Implement Pass and Dialect plugins for mlir-opt · d4c873b0
      Fabian Mora authored
      Implementation of Pass and Dialect Plugins that mirrors LLVM Pass Plugin  implementation from the new pass manager.
      
      Currently the implementation only supports using the pass-pipeline option for adding passes. This restriction is imposed by the `PassPipelineCLParser` variable in mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:114 that loads the parse options statically before parsing the cmd line args.
      
      ```
      mlir-opt stanalone-plugin.mlir --load-dialect-plugin=lib/libStandalonePlugin.so --pass-pipeline="builtin.module(standalone-switch-bar-foo)"
      ```
      
      Reviewed By: rriddle
      
      Differential Revision: https://reviews.llvm.org/D147053
      d4c873b0
    • Craig Topper's avatar
      [RISCV] Use PseudoInstExpansion for PseudoReadVLENB and PseudoReadVL. NFC · 77313ddf
      Craig Topper authored
      This lets tablegen generated the code and avoids a string lookup
      of the CSR name at runtime.
      77313ddf
    • Lang Hames's avatar
      [ORC][ORC-RT][ELF] Move selection of eh-frame registration APIs into orc-rt. · cd3f2749
      Lang Hames authored
      ORC's ELF platform support prefers the newer libunwind registration functions
      (__unw_add_dynamic_eh_frame_section, __unw_remove_dynamic_eh_frame_section) when
      they're available, and falls back to the older registration functions
      (__register_frame, __deregister_frame) when they're not.
      
      Until now the choice of registration functions has been made on the controller
      side in ELFNixPlatform: The platform JITDylib was searched for the registration
      functions and aliases set depending on which ones were found. This patch drops
      that selection logic from ELFNixPlatform and instead uses weak imports of the
      registration functions in elfnix_platform.cpp to identify which ones are
      available and choose which ones to use.
      
      This has a few small benefits:
      (1) The registration functions don't need to be defined in the same JITDylib as
      the ORC runtime -- it's sufficient for them to be defined in a JITDylib that the
      ORC runtime's JITDylib links against.
      
      (2) THe elfnix_platfrom code is more readable, as we don't have to dig into
      ELFNixPlatform.cpp on the controller side to discover the definition of the
      registration aliases.
      
      (3) We may save a separate round-trip to look up the registration APIs (the
      lookup will be folded into the ordinary external symbol lookup when linking the
      runtime).
      cd3f2749
    • Nico Weber's avatar
      915b7454
    • Mahesh Ravishankar's avatar
      [mlir][LLVM] Add an attribute to control use of bare-pointer calling convention. · 162f7572
      Mahesh Ravishankar authored
      Currently the use of bare pointer calling convention is controlled
      globally through use of an option in the `LLVMTypeConverter`. To allow
      more fine-grained control use an attribute on a function to drive the
      calling convention to use.
      
      Reviewed By: ftynse
      
      Differential Revision: https://reviews.llvm.org/D147494
      162f7572
    • Alexey Bataev's avatar
      [SLP]Fix delete of the extractelement with users. · cf62adbb
      Alexey Bataev authored
      Made the condition for the erasing of the gathered extractelements
      stricter, remove it only if it has single vectorized use, otherwise
      leave it for instcombiner/instsimplify analysis.
      cf62adbb
    • Philip Reames's avatar
      0437f88b
    • Nico Weber's avatar
      [gn] port f3d9abf1 (use X86GenFoldTables.inc) · 70c576b5
      Nico Weber authored
      70c576b5
  2. Apr 06, 2023