1. May 16, 2018
    • Sanjay Patel's avatar
      [InstCombine] add more tests for binop-shuffle; NFC · cc0fbdb6
      Sanjay Patel authored
      The splat pattern is part of PR37463:
      https://bugs.llvm.org/show_bug.cgi?id=37463
      
      llvm-svn: 332393
      cc0fbdb6
    • Nirav Dave's avatar
      [DAGCombine] Move load checks on store of loads into candidate · a87de7d8
      Nirav Dave authored
      search. NFCI.
      
      Migrate single-use and non-volatility, non-indexed requirements on
      stores of immediate store values to candidate collection pass from
      later stage.
      
      llvm-svn: 332392
      a87de7d8
    • Peter Collingbourne's avatar
      Nios2: Unbreak build. · 28d4ddab
      Peter Collingbourne authored
      llvm-svn: 332391
      28d4ddab
    • Matt Davis's avatar
      [llvm-mca] Introduce a pipeline Stage class and FetchStage. · 5d1cda1b
      Matt Davis authored
      Summary:
          This is just an idea, really two ideas.  I expect some push-back,
          but I realize that posting a diff is the most comprehensive way to express
          these concepts.
      
          This patch introduces a Stage class which represents the
          various stages of an instruction pipeline.  As a start, I have created a simple
          FetchStage that is based on existing logic for how MCA produces
          instructions, but now encapsulated in a Stage.  The idea should become more concrete
          once we introduce additional stages.  The idea being, that when a stage completes,
          the next stage in the pipeline will be executed.  Stages are chained together
          as a singly linked list to closely model a real pipeline. For now there is only one stage,
          so the stage-to-stage flow of instructions isn't immediately obvious.
      
          Eventually, Stage will also handle event notifications, but that functionality
          is not complete, and not destined for this patch.  Ideally, an interested party 
          can register for notifications from a particular stage.  Callbacks will be issued to
          these listeners at various points in the execution of the stage.  
          For now, eventing functionality remains similar to what it has been in mca::Backend. 
          We will be building-up the Stage class as we move on, such as adding debug output.
      
          This patch also removes the unique_ptr<Instruction> return value from
          InstrBuilder::createInstruction.  An Instruction pointer is still produced,
          but now it's up to the caller to decide how that item should be managed post-allocation
          (e.g., smart pointer).  This allows the Fetch stage to create instructions and
          manage the lifetime of those instructions as it wishes, and not have to be bound to any
          specific managed pointer type.  Other callers of createInstruction might have different 
          requirements, and thus can manage the pointer to fit their needs.  Another idea would be to push the
         ownership to the RCU. 
      
          Currently, the FetchStage will wrap the Instruction
          pointer in a shared_ptr.  This allows us to remove the Instruction container in
          Backend, which was probably going to disappear, or move, at some point anyways.
          Note that I did run these changes through valgrind, to make sure we are not leaking
          memory.  While the shared_ptr comes with some additional overhead it relieves us
          from having to manage a list of generated instructions, and/or make lookup calls
          to remove the instructions. 
      
          I realize that both the Stage class and the Instruction pointer management
          (mentioned directly above) are separate but related ideas, and probably should
          land as separate patches; I am happy to do that if either idea is decent.
          The main reason these two ideas are together is that
          Stage::execute() can mutate an InstRef. For the fetch stage, the InstRef is populated
          as the primary action of that stage (execute()).  I didn't want to change the Stage interface
          to support the idea of generating an instruction.  Ideally, instructions are to
          be pushed through the pipeline.  I didn't want to draw too much of a
          specialization just for the fetch stage.  Excuse the word-salad.
      
      Reviewers: andreadb, courbet, RKSimon
      
      Reviewed By: andreadb
      
      Subscribers: llvm-commits, mgorny, javed.absar, tschuett, gbedwell
      
      Differential Revision: https://reviews.llvm.org/D46741
      
      llvm-svn: 332390
      5d1cda1b
    • Chandler Carruth's avatar
      [x86][eflags] Fix PR37431 by teaching the EFLAGS copy lowering to · 5ecd81aa
      Chandler Carruth authored
      specially handle SETB_C* pseudo instructions.
      
      Summary:
      While the logic here is somewhat similar to the arithmetic lowering, it
      is different enough that it made sense to have its own function.
      I actually tried a bunch of different optimizations here and none worked
      well so I gave up and just always do the arithmetic based lowering.
      
      Looking at code from the PR test case, we actually pessimize a bunch of
      code when generating these. Because SETB_C* pseudo instructions clobber
      EFLAGS, we end up creating a bunch of copies of EFLAGS to feed multiple
      SETB_C* pseudos from a single set of EFLAGS. This in turn causes the
      lowering code to ruin all the clever code generation that SETB_C* was
      hoping to achieve. None of this is needed. Whenever we're generating
      multiple SETB_C* instructions from a single set of EFLAGS we should
      instead generate a single maximally wide one and extract subregs for all
      the different desired widths. That would result in substantially better
      code generation. But this patch doesn't attempt to address that.
      
      The test case from the PR is included as well as more directed testing
      of the specific lowering pattern used for these pseudos.
      
      Reviewers: craig.topper
      
      Subscribers: sanjoy, mcrosier, llvm-commits, hiraditya
      
      Differential Revision: https://reviews.llvm.org/D46799
      
      llvm-svn: 332389
      5ecd81aa
    • Benjamin Kramer's avatar
      Use perfect forwarding to deduplicate code in unit test. NFC. · ec8598ef
      Benjamin Kramer authored
      llvm-svn: 332388
      ec8598ef
    • Konstantin Zhuravlyov's avatar
      AMDGPU: Fix v_dot{4, 8}* instruction encoding · f13c9969
      Konstantin Zhuravlyov authored
      Differential Revision: https://reviews.llvm.org/D46848
      
      llvm-svn: 332387
      f13c9969
    • Martin Storsjo's avatar
      [llvm-rc] Add support for the optional CLASS statement for dialogs · e241ce6f
      Martin Storsjo authored
      Differential Revision: https://reviews.llvm.org/D46875
      
      llvm-svn: 332386
      e241ce6f
    • Michael Zolotukhin's avatar
      [MemorySSA] Don't sort IDF blocks. · 67cfbaac
      Michael Zolotukhin authored
      Summary:
      After r332167 we started to sort the IDF blocks inside IDF calculation, so
      there is no need to re-sort them on the user site. The test changes are due to
      a slightly different order we're using now (originally we used DFSInNumber and
      now the blocks are sorted by a pair (LevelFromRoot, DFSInNumber)).
      
      Reviewers: dberlin, mgrang
      
      Subscribers: Prazek, hiraditya, george.burgess.iv, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D46899
      
      llvm-svn: 332385
      67cfbaac
    • Sunil Srivastava's avatar
      Fixed some rtti-options tests. · 74f8d86f
      Sunil Srivastava authored
      Certain tests in rtti-options.cpp are not really testing anything because they are testing for the absence of -frtti option to the cc1 process. Since the cc1 process does not take -frtti option, these tests are passing tautologically.
      
      The RTTI mode is enabled by default in cc1, and -fno-rtti disables it. Therefore the correct way to check for enabling of RTTI is to check for the absence of -fno-rtti to cc1, and the correct way to check for disabling of RTTI is to check for the presence of -fno-rtti to cc1.
      
      This patch fixes those tests.
      
      Differential Revision: https://reviews.llvm.org/D46836
      
      llvm-svn: 332384
      74f8d86f
    • Krzysztof Parzyszek's avatar
      [Hexagon] Add driver options for subtarget features · df4fb5a8
      Krzysztof Parzyszek authored
      llvm-svn: 332383
      df4fb5a8
    • Yan Zhang's avatar
      add AR to acronyms of clang-tidy property check · 6a528854
      Yan Zhang authored
      Reviewers: hokein, benhamilton
      
      Reviewed By: benhamilton
      
      Subscribers: klimek, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D46895
      
      llvm-svn: 332382
      6a528854
    • Andrea Di Biagio's avatar
    • Alexey Bataev's avatar
      [OPENMP, NVPTX] Do not globalize variables with reference/pointer types. · 2a3320a9
      Alexey Bataev authored
      In generic data-sharing mode we do not need to globalize
      variables/parameters of reference/pointer types. They already are placed
      in the global memory.
      
      llvm-svn: 332380
      2a3320a9
    • Tom Stellard's avatar
      AMDGPU/GlobalISel: Implement select() for G_FCONSTANT · e182b28a
      Tom Stellard authored
      Summary: Also clean up G_CONSTANT selection.
      
      Reviewers: arsenm, nhaehnle
      
      Subscribers: kzhuravl, wdng, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D46170
      
      llvm-svn: 332379
      e182b28a
    • Sam McCall's avatar
      [clangd] Extract scoring/ranking logic, and shave yaks. · c5707b6c
      Sam McCall authored
      Summary:
      Code completion scoring was embedded in CodeComplete.cpp, which is bad:
       - awkward to test. The mechanisms (extracting info from index/sema) can be
         unit-tested well, the policy (scoring) should be quantitatively measured.
         Neither was easily possible, and debugging was hard.
         The intermediate signal struct makes this easier.
       - hard to reuse. This is a bug in workspaceSymbols: it just presents the
         results in the index order, which is not sorted in practice, it needs to rank
         them!
         Also, index implementations care about scoring (both query-dependent and
         independent) in order to truncate result lists appropriately.
      
      The main yak shaved here is the build() function that had 3 variants across
      unit tests is unified in TestTU.h (rather than adding a 4th variant).
      
      Reviewers: ilya-biryukov
      
      Subscribers: klimek, mgorny, ioeric, MaskRay, jkorous, mgrang, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D46524
      
      llvm-svn: 332378
      c5707b6c
    • Konstantin Zhuravlyov's avatar
    • Simon Pilgrim's avatar
      [X86] Split WriteCvtF2F into F32->F64 and F64->F32 scheduler classes · be9a2068
      Simon Pilgrim authored
      BtVer2 - Fixes schedules for (V)CVTPS2PD instructions
      
      A lot of the Intel models still have too many InstRW overrides for these new classes - this needs cleaning up but I wanted to get the classes in first
      
      llvm-svn: 332376
      be9a2068
    • Sanjay Patel's avatar
      [InstCombine] fix binop-of-shuffles to check uses · 3c35290c
      Sanjay Patel authored
      llvm-svn: 332375
      3c35290c
    • Han Shen's avatar
      [lld] Mitigate relocation overflow [part 1 of 2]. · b56030ee
      Han Shen authored
      This CL places .dynsym and .dynstr at the beginning of SHF_ALLOC
      sections. We do this to mitigate the possibility that huge .dynsym and
      .dynstr sections placed between ro-data and text sections cause
      relocation overflow.
      
      Differential Revision: https://reviews.llvm.org/D45788
      
      llvm-svn: 332374
      b56030ee
    • Sanjay Patel's avatar
      [InstCombine] add multi-use shuffle tests and regenerate checks; NFC · c5b4401c
      Sanjay Patel authored
      llvm-svn: 332373
      c5b4401c
    • Fangrui Song's avatar
      Remove \brief commands from doxygen comments. · c505e061
      Fangrui Song authored
      Summary: This is similar to D46290 D46320.
      
      Reviewers: ruiu, grimar
      
      Subscribers: mehdi_amini, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D46861
      
      llvm-svn: 332372
      c505e061
    • Nicola Zaghen's avatar
      [clang-tools-extra] Update uses of DEBUG macro to LLVM_DEBUG. · 0efd5248
      Nicola Zaghen authored
      The DEBUG() macro is very generic so it might clash with other projects.
      The renaming was done as follows:
      - git grep -l 'DEBUG' | xargs sed -i 's/\bDEBUG\s\?(/LLVM_DEBUG(/g'
      - git diff -U0 master | ../clang/tools/clang-format/clang-format-diff.py -i -p1 -style LLVM
      
      Differential Revision: https://reviews.llvm.org/D44976
      
      llvm-svn: 332371
      0efd5248
    • Nico Weber's avatar
      update two comments as suggested on https://reviews.llvm.org/D46843 · 6043fd21
      Nico Weber authored
      llvm-svn: 332370
      6043fd21
    • Krzysztof Parzyszek's avatar
      [Hexagon] Remove unused function from subtarget · db39bf40
      Krzysztof Parzyszek authored
      llvm-svn: 332369
      db39bf40
    • Nico Weber's avatar
      Rename three cxx files in unittests to cpp. · 8a953299
      Nico Weber authored
      LLVM uses cpp as its C++ file extension, these are the only three cxx file in
      the monorepo. These files apparently were called to escape a CMake check -- use
      the LLVM_OPTIONAL_SOURCES mechanism that's meant as an escape for this case
      instead.
      
      No intended behavior change.
      https://reviews.llvm.org/D46843
      
      llvm-svn: 332368
      8a953299
    • Geoff Berry's avatar
      [AArch64] Fix mir test case liveins info. · 32d07d59
      Geoff Berry authored
      The test case added in r332265 had incomplete livein information which
      was caught by the EXPENSIVE_CHECKS bot.  Fix the livein information and
      add -verify-machineinstrs to the test case.
      
      llvm-svn: 332367
      32d07d59
    • Eric Liu's avatar
      [clangd] Log error message instead write to errs(). NFC · 20defe18
      Eric Liu authored
      llvm-svn: 332366
      20defe18
    • Krzysztof Parzyszek's avatar
      8c389bd3
    • Simon Dardis's avatar
      [mips] Mark select instructions correctly · f40eb03c
      Simon Dardis authored
      Reviewers: atanasyan, abeserminji, smaksimovic
      
      Differential Revision: https://reviews.llvm.org/D46702
      
      llvm-svn: 332364
      f40eb03c
  2. May 15, 2018