1. Mar 28, 2024
  2. Mar 27, 2024
    • Nikolas Klauser's avatar
      [libc++][NFC] Simplify copy and move lowering to memmove a bit (#83574) · c388690a
      Nikolas Klauser authored
      We've introduced `__constexpr_memmove` a while ago, which simplified the
      implementation of the copy and move lowering a bit. This allows us to
      remove some of the boilerplate.
      c388690a
    • Yusra Syeda's avatar
      [SystemZ][z/OS] TXT records in the GOFF reader (#74526) · 009f88fc
      Yusra Syeda authored
      
      
      This PR adds handling for TXT records in the GOFF reader.
      
      ---------
      
      Authored-by: default avatarYusra Syeda <yusra.syeda@ibm.com>
      009f88fc
    • Terry Wilmarth's avatar
      [OpenMP] Close up permissions on /tmp files (#85469) · aa2c14de
      Terry Wilmarth authored
      The SHM or /tmp files that might be created during library registration
      don't need to have such open permissions, so this change fixes that.
      aa2c14de
    • Nick Desaulniers's avatar
      [libc][support][UInt] implement 128b math helpers (#86531) · 51f7b262
      Nick Desaulniers authored
      Flush out the remaining UInt<128> support and add test coverage.
      
      We could have used cpp::popcount in the implementation of
      UInt::has_single_bit, but
      has_single_bit has a perhaps useful early return.
      51f7b262
    • Brandon Wu's avatar
      [clang][RISCV] Enable RVV with function attribute __attribute__((target("arch=+v"))) (#83674) · 13b653ab
      Brandon Wu authored
      It is currently not possible to use "RVV type" and "RVV intrinsics" if
      the "zve32x" is not enabled globally. However in some cases we may want
      to use them only in some functions, for instance:
      ```
      #include <riscv_vector.h>
      
      __attribute__((target("+zve32x")))
      vint32m1_t rvv_add(vint32m1_t v1, vint32m1_t v2, size_t vl) {
        return __riscv_vadd(v1, v2, vl);
      }
      
      int other_add(int i1, int i2) {
        return i1 + i2;
      }
      ```
      , it is supposed to be compilable even the vector is not specified, e.g.
      `clang -target riscv64 -march=rv64gc -S test.c`.
      13b653ab
    • Wesley Wiser's avatar
      Fix stack layout for frames larger than 2gb (#84114) · 58de1e2c
      Wesley Wiser authored
      For very large stack frames, the offset from the stack pointer to a local can be more than 2^31 which overflows various `int` offsets in the frame lowering code.
      
      This patch updates the frame lowering code to calculate the offsets as 64-bit values and resolves the overflows, resulting in the correct codegen for very large frames.
      
      Fixes #48911
      58de1e2c
    • Brandon Wu's avatar
      [RISCV] RISCV vector calling convention (1/2) (#77560) · 91896607
      Brandon Wu authored
          [RISCV] RISCV vector calling convention (1/2)
      
          This is the vector calling convention based on
          https://github.com/riscv-non-isa/riscv-elf-psabi-doc,
          the idea is to split between "scalar" callee-saved registers
          and "vector" callee-saved registers. "scalar" ones remain the
          original strategy, however, "vector" ones are handled together
          with RVV objects.
      
          The stack layout would be:
      
            |--------------------------| <-- FP
            | callee-allocated save    |
            | area for register varargs|
            |--------------------------|
            | callee-saved registers   | <-- scalar callee-saved
            |        (scalar)          |
            |--------------------------|
            | RVV alignment padding    |
            |--------------------------|
            | callee-saved registers   | <-- vector callee-saved
            |        (vector)          |
            |--------------------------|
            | RVV objects              |
            |--------------------------|
            | padding before RVV       |
            |--------------------------|
            | scalar local variables   |
            |--------------------------| <-- BP
            | variable size objects    |
            |--------------------------| <-- SP
      
          Note: This patch doesn't contain "tuple" type, e.g. vint32m1x2.
                It will be handled in https://github.com/riscv-non-isa/riscv-elf-psabi-doc (2/2).
      
          Differential Revision: https://reviews.llvm.org/D154576
      91896607