1. Feb 25, 2020
  2. Feb 24, 2020
    • Louis Dionne's avatar
      [libc++] Mark the C++03 version of std::function as deprecated · c0087164
      Louis Dionne authored
      Summary: We want to eventually remove it.
      
      Reviewers: EricWF
      
      Subscribers: christof, jkorous, dexonsmith, libcxx-commits
      
      Tags: #libc
      
      Differential Revision: https://reviews.llvm.org/D74719
      c0087164
    • Louis Dionne's avatar
      [libc++] Adapt a few things around the implementation of P1135R6 · 80e73f22
      Louis Dionne authored
      - Add the new symbols to the ABI list on Darwin
      - Add XFAIL markup to the tests that require dylib support on older platforms
      - Add availability markup for back-deployment
      80e73f22
    • Olivier Giroux's avatar
      54fa9ecd
    • cchen's avatar
      [OpenMP] Refactor the analysis in checkMapClauseBaseExpression using StmtVisitor class. · d66d25f8
      cchen authored
      Summary: This step is the preparation of allowing lvalue in map/motion clause.
      
      Reviewers: ABataev, jdoerfert
      
      Reviewed By: ABataev
      
      Subscribers: guansong, cfe-commits
      
      Tags: #clang, #openmp
      
      Differential Revision: https://reviews.llvm.org/D74970
      d66d25f8
    • Xiangling Liao's avatar
      [AIX][Frontend] C++ ABI customizations for AIX boilerplate · 8bee52bd
      Xiangling Liao authored
      This PR enables "XL" C++ ABI in frontend AST to IR codegen. And it is driven by
      static init work. The current kind in Clang by default is Generic Itanium, which
      has different behavior on static init with IBM xlclang compiler on AIX.
      
      Differential Revision: https://reviews.llvm.org/D74015
      8bee52bd
    • Melanie Blower's avatar
    • Simon Pilgrim's avatar
      [CostModel][X86] We don't need a scale factor for SLM extract costs · b8243887
      Simon Pilgrim authored
      D74976 will handle larger vector types, but since SLM doesn't support AVX+ then we will always be extracting from 128-bit vectors so don't need to scale the cost.
      b8243887
    • Sjoerd Meijer's avatar
      [MIR][ARM] MachineOperand comments · 7efabe5c
      Sjoerd Meijer authored
      This adds infrastructure to print and parse MIR MachineOperand comments.
      The motivation for the ARM backend is to print condition code names instead of
      magic constants that are difficult to read (for human beings). For example,
      instead of this:
      
        dead renamable $r2, $cpsr = tEOR killed renamable $r2, renamable $r1, 14, $noreg
        t2Bcc %bb.4, 0, killed $cpsr
      
      we now print this:
      
        dead renamable $r2, $cpsr = tEOR killed renamable $r2, renamable $r1, 14 /* CC::always */, $noreg
        t2Bcc %bb.4, 0 /* CC:eq */, killed $cpsr
      
      This shows that MachineOperand comments are enclosed between /* and */. In this
      example, the EOR instruction is not conditionally executed (i.e. it is "always
      executed"), which is encoded by the 14 immediate machine operand. Thus, now
      this machine operand has /* CC::always */ as a comment. The 0 on the next
      conditional branch instruction represents the equal condition code, thus now
      this operand has /* CC:eq */ as a comment.
      
      As it is a comment, the MI lexer/parser completely ignores it. The benefit is
      that this keeps the change in the lexer extremely minimal and no target
      specific parsing needs to be done. The changes on the MIPrinter side are also
      minimal, as there is only one target hooks that is used to create the machine
      operand comments.
      
      Differential Revision: https://reviews.llvm.org/D74306
      7efabe5c
    • Kerry McLaughlin's avatar
      [AArch64][SVE] Add the SVE dupq_lane intrinsic · f87f23c8
      Kerry McLaughlin authored
      Summary:
      Implements the @llvm.aarch64.sve.dupq.lane intrinsic.
      
      As specified in the ACLE, the behaviour of:
        svdupq_lane_u64(data, index)
      
      ...is identical to:
        svtbl(data, svadd_x(svptrue_b64(),
                            svand_x(svptrue_b64(), svindex_u64(0, 1), 1),
                            index * 2))
      
      If the index is in the range [0,3], the operation is equivalent
      to a single DUP (.q) instruction.
      
      Reviewers: sdesmalen, c-rhodes, cameron.mcinally, efriedma, dancgr, rengolin
      
      Reviewed By: sdesmalen
      
      Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D74734
      f87f23c8
    • Sam Parker's avatar
      [RDA][ARM][LowOverheadLoops] Iteration count IT blocks · a67eb221
      Sam Parker authored
      Change the way that we remove the redundant iteration count code in
      the presence of IT blocks. collectLocalKilledOperands has been
      introduced to scan an instructions operands, collecting the killed
      instructions and then visiting them too. This is used to delete the
      code in the preheader which calculates the iteration count. We also
      track any IT blocks within the preheader and, if we remove all the
      instructions from the IT block, we also remove the IT instruction.
      isSafeToRemove is used to remove any redundant uses of the iteration
      count within the loop body.
      
      Differential Revision: https://reviews.llvm.org/D74975
      a67eb221
    • Michele Scandale's avatar
      Fix TryParsePtrOperatorSeq. · bd5b2207
      Michele Scandale authored
      The syntax rules for ptr-operator allow attributes after *, &,
      &&, therefore we should be able to parse the following:
      
      void fn() {
          void (*[[attr]] x)() = &fn;
          void (&[[attr]] y)() = fn;
          void (&&[[attr]] z)() = fn;
      }
      However the current logic in TryParsePtrOperatorSeq does not consider
      the presence of attributes leading to unexpected parsing errors.
      
      Moreover we should also consider _Atomic a possible qualifier that can
      appear after the sequence of attribute specifiers.
      bd5b2207
    • Mikhail Maltsev's avatar
      [ARM,MVE] Remove 64-bit variants of vbrsrq* intrinsics · 12fed51c
      Mikhail Maltsev authored
      Summary:
      According to the ACLE the vbrsrq* intrinsics don't accept vectors
      with 64-bit elements (and neither does the corresponding VBRSR
      instruction).
      
      Reviewers: simon_tatham, dmgreen, MarkMurrayARM, ostannard
      
      Reviewed By: simon_tatham
      
      Subscribers: kristof.beyls, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D75038
      12fed51c
    • David Green's avatar
      [ARM] FP16 bitcast test. NFC · f287bb8c
      David Green authored
      f287bb8c
    • Simon Pilgrim's avatar
      [CostModel][X86] Try to check against common prefixes before using target-specific cpu checks · eaa41e10
      Simon Pilgrim authored
      SLM/GLM is still a mess so not all of them have been updated yet.
      eaa41e10
    • Kirill Bobyrev's avatar
      a4370b2e
    • Benjamin Kramer's avatar
      [ORC] Remove spammy debug print · 8c893cac
      Benjamin Kramer authored
      8c893cac
    • Kerry McLaughlin's avatar
      [AArch64][SVE] Add intrinsics for SVE2 cryptographic instructions · f2ff1534
      Kerry McLaughlin authored
      Summary:
      Implements the following SVE2 intrinsics:
       - @llvm.aarch64.sve.aesd
       - @llvm.aarch64.sve.aesimc
       - @llvm.aarch64.sve.aese
       - @llvm.aarch64.sve.aesmc
       - @llvm.aarch64.sve.rax1
       - @llvm.aarch64.sve.sm4e
       - @llvm.aarch64.sve.sm4ekey
      
      Reviewers: sdesmalen, c-rhodes, dancgr, cameron.mcinally, efriedma, rengolin
      
      Reviewed By: sdesmalen
      
      Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D74833
      f2ff1534
    • Benjamin Kramer's avatar
      Silence compiler warnings · 3ac37eb9
      Benjamin Kramer authored
      mlir/lib/Parser/Parser.cpp:4484:15: warning: 'parseAssignmentList' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        ParseResult parseAssignmentList(SmallVectorImpl<OperandType> &lhs,
                    ^
      mlir/include/mlir/IR/OpImplementation.h:662:3: note: overridden virtual function is here
        parseAssignmentList(SmallVectorImpl<OperandType> &lhs,
        ^
      mlir/lib/Parser/Parser.cpp:4488:12: warning: unused variable 'type' [-Wunused-variable]
            Type type;
                 ^
      3ac37eb9
    • Benjamin Kramer's avatar
      Add a basic tiling pass for parallel loops · bc1947a6
      Benjamin Kramer authored
      This exploits the fact that the iterations of parallel loops are
      independent so tiling becomes just an index transformation. This pass
      only tiles the innermost loop of a loop nest.
      
      The ultimate goal is to allow vectorization of the tiled loops, but I
      don't think we're there yet with the current rewriting, as the tiled
      loops don't have a constant trip count.
      
      Differential Revision: https://reviews.llvm.org/D74954
      bc1947a6
    • Bevin Hansson's avatar
      [Intrinsic] Add fixed point saturating division intrinsics. · 6e561d1c
      Bevin Hansson authored
      Summary:
      This patch adds intrinsics and ISelDAG nodes for signed
      and unsigned fixed-point division:
      
      ```
      llvm.sdiv.fix.sat.*
      llvm.udiv.fix.sat.*
      ```
      
      These intrinsics perform scaled, saturating division
      on two integers or vectors of integers. They are
      required for the implementation of the Embedded-C
      fixed-point arithmetic in Clang.
      
      Reviewers: bjope, leonardchan, craig.topper
      
      Subscribers: hiraditya, jdoerfert, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71550
      6e561d1c
    • Calixte Denizet's avatar
      [profile] Don't dump counters when forking and don't reset when calling exec** functions · 8f46269f
      Calixte Denizet authored
      Summary:
      There is no need to write out gcdas when forking because we can just reset the counters in the parent process.
      Let say a counter is N before the fork, then fork and this counter is set to 0 in the child process.
      In the parent process, the counter is incremented by P and in the child process it's incremented by C.
      When dump is ran at exit, parent process will dump N+P for the given counter and the child process will dump 0+C, so when the gcdas are merged the resulting counter will be N+P+C.
      About exec** functions, since the current process is replaced by an another one there is no need to reset the counters but just write out the gcdas since the counters are definitely lost.
      To avoid to have lists in a bad state, we just lock them during the fork and the flush (if called explicitely) and lock them when an element is added.
      
      Reviewers: marco-c
      
      Reviewed By: marco-c
      
      Subscribers: hiraditya, cfe-commits, #sanitizers, llvm-commits, sylvestre.ledru
      
      Tags: #clang, #sanitizers, #llvm
      
      Differential Revision: https://reviews.llvm.org/D74953
      8f46269f
    • Pavel Labath's avatar
      Use new FailedWithMessage matcher in DWARFDebugLineTest.cpp · 9b23024c
      Pavel Labath authored
      Summary:
      This should produce slightly better error messages in case of failures.
      Only slightly, because this code was pretty careful about that to begin
      with -- I've seen code which does much worse.
      
      Reviewers: jhenderson, dblaikie
      
      Subscribers: llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D74899
      9b23024c