1. Apr 12, 2024
  2. Apr 11, 2024
    • Nikolas Klauser's avatar
      [libc++][NFC] Reduce the memory footprint of __copy_cv a bit (#87718) · b63fe0d7
      Nikolas Klauser authored
      Instead of instantiating `__copy_cv` for every combination of `_From`
      and `_To` this only instantiates `__copy_cv` for every `_From` type,
      reducing the number of instantiations.
      b63fe0d7
    • Xu Zhang's avatar
      [libc][docs] Generate docs for signal.h & optimized is_implemented func (#88028) · 7ab7e7a5
      Xu Zhang authored
      
      Fixes #87835
      
      This patch added the documentation for the POSIX functions according to
      [n3096](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf)
      Section 7.14, and gives the *docgen.py* script a more elegant *is_implemented*
      function.
      7ab7e7a5
    • Simon Pilgrim's avatar
      [X86] LowerBITREVERSE - support SSE-only GFNI i32/i64 bitreverse · ffb5bea2
      Simon Pilgrim authored
      Support Tremont CPUs which don't have AVX but do have GFNI.
      
      Noticed while trying to workout how to clean up the costmodel for GFNI bitreverse
      ffb5bea2
    • Raghu Maddhipatla's avatar
      [Flang] [OpenMP] [MLIR] [Lowering] Add lowering support for IS_DEVICE_PTR and... · 298ea9bf
      Raghu Maddhipatla authored
       [Flang] [OpenMP] [MLIR] [Lowering] Add lowering support for IS_DEVICE_PTR and HAS_DEVICE_ADDR clauses on OMP TARGET directive.  (#88206)
      
      Added lowering support for IS_DEVICE_PTR and HAS_DEVICE_ADDR clauses for
      OMP TARGET directive and added related tests for these changes.
      
      IS_DEVICE_PTR and HAS_DEVICE_ADDR clauses apply to OMP TARGET directive
      OpenMP spec states
      
      The **is_device_ptr** clause indicates that its list items are device
      pointers.
      
      The **has_device_addr** clause indicates that its list items already
      have device addresses and therefore they may be directly accessed from a
      target device.
      
      Whereas USE_DEVICE_PTR and USE_DEVICE_ADDR clauses apply to OMP TARGET
      DATA directive and OpenMP spec for them states
      
      Each list item in the **use_device_ptr** clause results in a new list
      item that is a device pointer that refers to a device address
      
      Each list item in a **use_device_addr** clause that is present in the
      device data environment is treated as if it is implicitly mapped by a
      map clause on the construct with a map-type of alloc
      
      Fixed build error caused by Squash merge which needs rebase
      298ea9bf
    • Krystian Stasiowski's avatar
      [Clang][Sema] Implement approved resolution for CWG2858 (#88042) · 198ffb85
      Krystian Stasiowski authored
      The approved resolution for CWG2858 changes
      [expr.prim.id.qual] p2 sentence 2 to read:
      > A declarative _nested-name-specifier_ shall not have a
      _computed-type-specifier_.
      
      This patch implements the approved resolution. Since we don't consider
      _nested-name-specifiers_ in friend declarations to be declarative (yet),
      it currently isn't possible to write a test that would produce this
      diagnostic (`diagnoseQualifiedDeclaration` is never called if the
      `DeclContext` can't be computed). Nevertheless, tests were added which
      will produce the diagnostic once we start calling
      `diagnoseQualifiedDeclaration` for friend declarations.
      198ffb85
    • Jakub Kuderski's avatar
      [mlir][amdgpu] Remove shared memory optimization pass (#88225) · 44718311
      Jakub Kuderski authored
      This implementation has a number of issues and ultimately does not work
      on gfx9.
      * It does not reduce bank conflicts with wide memory accesses.
      * It does not correctly account for when LDS bank conflicts occur on
      amdgpu.
      * The implementation is too fragile to be used on real-world code. For
      example, the code bails out on any `memref.subview` in the root op, even
      when the subview is not a user of any of the `memref.alloc` ops.
      
      I do not see how these can be easily fixed, therefore I think it's
      better to delete this code.
      44718311
    • Simon Pilgrim's avatar
      [VectorCombine] foldShuffleOfCastops - ensure we add all new instructions onto the worklist · ff74236f
      Simon Pilgrim authored
      When creating cast(shuffle(x,y)) we were only adding the cast() to the worklist, not the new shuffle, preventing recursive combines.
      
      foldShuffleOfBinops is also failing to do this, but I still need to add test coverage for this.
      ff74236f
    • Simon Pilgrim's avatar
      [VectorCombine][X86] Add test coverage for #67803 · 61ea1bc2
      Simon Pilgrim authored
      We are still missing a fold for shuffle(bitcast(sext(x)),bitcast(sext(y))) -> bitcast(sext(shuffle(x,y))) due to foldShuffleOfCastops failing to add new instructions back onto the worklist
      61ea1bc2
    • kadir çetinkaya's avatar
    • Johannes Reifferscheid's avatar
      Fix complex power for large inputs. (#88387) · 77dd4357
      Johannes Reifferscheid authored
      For example, 1e30^1.2 currently overflows.
      
      Also forward fastmath flags.
      
      This ports XLA's logic and was verified with its test suite. Note that
      rsqrt and sqrt are still broken.
      77dd4357