FailedChanges

Summary

  1. [llvm-exegesis] Opcode stabilization / reclusterization (PR40715) Summary: Given an instruction `Opcode`, we can make benchmarks (measurements) of the instruction characteristics/performance. Then, to facilitate further analysis we group the benchmarks with *similar* characteristics into clusters. Now, this is all not entirely deterministic. Some instructions have variable characteristics, depending on their arguments. And thus, if we do several benchmarks of the same instruction `Opcode`, we may end up with *different* performance characteristics measurements. And when we then do clustering, these several benchmarks of the same instruction `Opcode` may end up being clustered into *different* clusters. This is not great for further analysis. We shall find every `Opcode` with benchmarks not in just one cluster, and move *all* the benchmarks of said `Opcode` into one new unstable cluster per `Opcode`. I have solved this by making `ClusterId` a bit field, adding a `IsUnstable` bit, and introducing `-analysis-display-unstable-clusters` switch to toggle between displaying stable-only clusters and unstable-only clusters. The reclusterization is deterministically stable, produces identical reports between runs. (Or at least that is what i'm seeing, maybe it isn't) Timings/comparisons: old (current trunk/head) {F8303582} ``` $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-old.html no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-old.html' ... no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-old.html' Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-old.html' (25 runs): 6624.73 msec task-clock # 0.999 CPUs utilized ( +- 0.53% ) 172 context-switches # 25.965 M/sec ( +- 29.89% ) 0 cpu-migrations # 0.042 M/sec ( +- 56.54% ) 31073 page-faults # 4690.754 M/sec ( +- 0.08% ) 26538711696 cycles # 4006230.292 GHz ( +- 0.53% ) (83.31%) 2017496807 stalled-cycles-frontend # 7.60% frontend cycles idle ( +- 0.93% ) (83.32%) 13403650062 stalled-cycles-backend # 50.51% backend cycles idle ( +- 0.33% ) (33.37%) 19770706799 instructions # 0.74 insn per cycle # 0.68 stalled cycles per insn ( +- 0.04% ) (50.04%) 4419821812 branches # 667207369.714 M/sec ( +- 0.03% ) (66.69%) 121741669 branch-misses # 2.75% of all branches ( +- 0.28% ) (83.34%) 6.6283 +- 0.0358 seconds time elapsed ( +- 0.54% ) ``` patch, with reclustering but without filtering (i.e. outputting all the stable *and* unstable clusters) {F8303586} ``` $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-all.html no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-all.html' ... no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-all.html' Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-all.html' (25 runs): 6475.29 msec task-clock # 0.999 CPUs utilized ( +- 0.31% ) 213 context-switches # 32.952 M/sec ( +- 23.81% ) 1 cpu-migrations # 0.130 M/sec ( +- 43.84% ) 31287 page-faults # 4832.057 M/sec ( +- 0.08% ) 25939086577 cycles # 4006160.279 GHz ( +- 0.31% ) (83.31%) 1958812858 stalled-cycles-frontend # 7.55% frontend cycles idle ( +- 0.68% ) (83.32%) 13218961512 stalled-cycles-backend # 50.96% backend cycles idle ( +- 0.29% ) (33.37%) 19752995402 instructions # 0.76 insn per cycle # 0.67 stalled cycles per insn ( +- 0.04% ) (50.04%) 4417079244 branches # 682195472.305 M/sec ( +- 0.03% ) (66.70%) 121510065 branch-misses # 2.75% of all branches ( +- 0.19% ) (83.34%) 6.4832 +- 0.0229 seconds time elapsed ( +- 0.35% ) ``` Funnily, *this* measurement shows that said reclustering actually improved performance. patch, with reclustering, only the stable clusters {F8303594} ``` $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-stable.html no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-stable.html' ... no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-stable.html' Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-stable.html' (25 runs): 6387.71 msec task-clock # 0.999 CPUs utilized ( +- 0.13% ) 133 context-switches # 20.792 M/sec ( +- 23.39% ) 0 cpu-migrations # 0.063 M/sec ( +- 61.24% ) 31318 page-faults # 4903.256 M/sec ( +- 0.08% ) 25591984967 cycles # 4006786.266 GHz ( +- 0.13% ) (83.31%) 1881234904 stalled-cycles-frontend # 7.35% frontend cycles idle ( +- 0.25% ) (83.33%) 13209749965 stalled-cycles-backend # 51.62% backend cycles idle ( +- 0.16% ) (33.36%) 19767554347 instructions # 0.77 insn per cycle # 0.67 stalled cycles per insn ( +- 0.04% ) (50.03%) 4417480305 branches # 691618858.046 M/sec ( +- 0.03% ) (66.68%) 118676358 branch-misses # 2.69% of all branches ( +- 0.07% ) (83.33%) 6.3954 +- 0.0118 seconds time elapsed ( +- 0.18% ) ``` Performance improved even further?! Makes sense i guess, less clusters to print. patch, with reclustering, only the unstable clusters {F8303601} ``` $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-unstable.html -analysis-display-unstable-clusters no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-unstable.html' ... no exegesis target for x86_64-unknown-linux-gnu, using default Parsed 43970 benchmark points Printing sched class consistency analysis results to file '/tmp/clusters-new-unstable.html' Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-unstable.html -analysis-display-unstable-clusters' (25 runs): 6124.96 msec task-clock # 1.000 CPUs utilized ( +- 0.20% ) 194 context-switches # 31.709 M/sec ( +- 20.46% ) 0 cpu-migrations # 0.039 M/sec ( +- 49.77% ) 31413 page-faults # 5129.261 M/sec ( +- 0.06% ) 24536794267 cycles # 4006425.858 GHz ( +- 0.19% ) (83.31%) 1676085087 stalled-cycles-frontend # 6.83% frontend cycles idle ( +- 0.46% ) (83.32%) 13035595603 stalled-cycles-backend # 53.13% backend cycles idle ( +- 0.16% ) (33.36%) 18260877653 instructions # 0.74 insn per cycle # 0.71 stalled cycles per insn ( +- 0.05% ) (50.03%) 4112411983 branches # 671484364.603 M/sec ( +- 0.03% ) (66.68%) 114066929 branch-misses # 2.77% of all branches ( +- 0.11% ) (83.32%) 6.1278 +- 0.0121 seconds time elapsed ( +- 0.20% ) ``` This tells us that the actual `-analysis-inconsistencies-output-file=` outputting only takes ~0.4 sec for 43970 benchmark points (3 whole sweeps) (Also, wow this is fast, it used to take several minutes originally) Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=40715 | PR40715 ]]. Reviewers: courbet, gchatelet Reviewed By: courbet Subscribers: tschuett, jdoerfert, llvm-commits, RKSimon Tags: #llvm Differential Revision: https://reviews.llvm.org/D58355
  2. [RegAllocGreedy] Take last chance recoloring into account in split and assign Summary: This is a follow-up to r353988 where tryEvict was extended to take last chance recoloring into account. Now we do the same thing for trySplit and tryAssign. Now we always pass a "FixedRegisters" argument to canEvictInterference and tryEvict so it doesn't need to have a default value anymore. The need for this was found long ago in an out-of-tree target. Unfortunately I don't have a reproducer for an in-tree target. Reviewers: qcolombet, rudkx Reviewed By: qcolombet, rudkx Subscribers: rudkx, MatzeB, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58376
  3. [NFC] add/modify wrapper function for findRegisterDefOperand().
  4. [DTU] Refine the document of mutation APIs [NFC] (PR40528) Summary: It was pointed out in [[ https://bugs.llvm.org/show_bug.cgi?id=40528 | Bug 40528 ]] that it is not clear whether insert/deleteEdge can be used to perform multiple updates and [[ https://reviews.llvm.org/D57316#1388344 | a comment in D57316 ]] reveals that the difference between several ways to update the DominatorTree is confusing. This patch tries to address issues above. Reviewers: mkazantsev, kuhar, asbirlea, chandlerc, brzycki Reviewed By: mkazantsev, kuhar, brzycki Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57881
  5. [X86] Remove FeatureSlowIncDec from Sandy Bridge and later Intel Core CPUs Summary: Inc and Dec were at one point slow on Intel CPUs due to their tendency to cause partial flag stalls on P6 derived CPU cores. This is because these instructions are defined to preserve the carry flag. This partial flag stall issue persisted until Sandy Bridge when flag merging was changed to be handled as a data dependency instead of as a stall until retirement. Sandy Bridge and later CPUs rename the C flag separately from OSPAZ so there is no flag merge needed on INC/DEC to preserve the C flag. Given these improvements I don't know why INC/DEC was ever considered slow on Sandy Bridge. If anything they should have been disabled on the earlier CPUs instead. Note after this patch, INC/DEC are still considered slow on Silvermont, Goldmont, Knights Landing and our generic "x86-64" CPU. Reviewers: spatel, RKSimon, chandlerc Reviewed By: chandlerc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D58412
  6. Limit new PM tests to X86 registered targets.
  7. Temporarily Revert "[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)" As this has broken the lto bootstrap build for 3 days and is showing a significant regression on the Dither_benchmark results (from the LLVM benchmark suite) -- specifically, on the BENCHMARK_FLOYD_DITHER_128, BENCHMARK_FLOYD_DITHER_256, and BENCHMARK_FLOYD_DITHER_512; the others are unchanged. These have regressed by about 28% on Skylake, 34% on Haswell, and over 40% on Sandybridge. This reverts commit r353923.
  8. [Dominators] Simplify and optimize path compression used in link-eval forest. Summary: * NodeToInfo[*] have been allocated so the addresses are stable. We can store them instead of NodePtr to save NumToNode lookups. * Nodes are traversed twice. Using `Visited` to check the traversal number is expensive and obscure. Just split the two traversals into two loops explicitly. * The check `VInInfo.DFSNum < LastLinked` is redundant as it is implied by `VInInfo->Parent < LastLinked` * VLabelInfo PLabelInfo are used to save a NodeToInfo lookup in the second traversal. Also add some comments explaining eval(). This shows a ~4.5% improvement (9.8444s -> 9.3996s) on perf stat -r 10 taskset -c 0 opt -passes=$(printf '%.0srequire<domtree>,invalidate<domtree>,' {1..1000})'require<domtree>' -disable-output sqlite-autoconf-3270100/sqlite3.bc Reviewers: kuhar, sanjoy, asbirlea Reviewed By: kuhar Subscribers: brzycki, NutshellySima, kristina, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58327
  9. Remove test on incompatible mpis target.
  10. [NewPM] Add other sanitizers at O0 This allows for MSan and TSan to be used without optimizations required. Differential Revision: https://reviews.llvm.org/D58424
  11. [RISCV] Implement pseudo instructions for load/store from a symbol address. Summary: Those pseudo-instructions are making load/store instructions able to load/store from/to a symbol, and its always using PC-relative addressing to generating a symbol address. Reviewers: asb, apazos, rogfer01, jrtc27 Differential Revision: https://reviews.llvm.org/D50496
  12. [Dominators] Delete UpdateLevelsAfterInsertion in edge insertion of depth-based search for release builds Summary: After insertion of (From, To), v is affected iff depth(NCD)+1 < depth(v) && path P from To to v exists where every w on P s.t. depth(v) <= depth(w) All affected vertices change their idom to NCD. If a vertex u has changed its depth, it must be a descendant of an affected vertex v. Its depth must have been updated by UpdateLevel() called by setIDom() of the first affected ancestor. So UpdateLevelsAfterInsertion and its bookkeeping variable VisitedNotAffectedQueue are redundant. Run them only in debug builds as a sanity check. Reviewers: kuhar Reviewed By: kuhar Subscribers: kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58369
  13. [PowerPC] exploit P9 instruction maddld. Differential Revision: https://reviews.llvm.org/D58364
  14. [WebAssembly] Generalize section ordering constraints Summary: Changes from using a total ordering of known sections to using a dependency graph approach. This allows our tools to accept and process binaries that are compliant with the spec and tool conventions that would have been previously rejected. It also means our own tools can do less work to enforce an artificially imposed ordering. Using a general mechanism means fewer special cases and exceptions in the ordering logic. Reviewers: aheejin, dschuff Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58312
  15. [WebAssembly] Refactor atomic operation definitions (NFC) Summary: - Make `ATOMIC_I`, `ATOMIC_NRI`, `AtomicLoad`, `AtomicStore` classes and make other operations inherit from them - Factor the common opcode prefix '0xfe' out from the opcodes into the common class - Reorder instructions in the order of increasing opcodes Reviewers: tlively Subscribers: dschuff, sbc100, jgravelle-google, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58338
  16. [InstCombine] regenerate test checks; NFC
  17. [WebAssembly] Fix load/store name detection for atomic instructions Summary: Fixed a bug in the routine in AsmParser that determines whether the current instruction is a load or a store. Atomic instructions' prefixes are not `atomic_` but `atomic.`, and all atomic instructions are also memory instructions. Also fixed the printing format of atomic instructions to match other memory instructions and added encoding tests for atomic instructions. Reviewers: aardappel, tlively Subscribers: dschuff, sbc100, jgravelle-google, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58337
  18. CMake: Fix stand-alone clang builds since r353268 Summary: Handle the case where LLVM_MAIN_SRC_DIR is not set and also use LLVM_CMAKE_DIR for locating installed cmake files rather than LLVM_CMAKE_PATH. Reviewers: phosek, andrewrk, smeenai Reviewed By: phosek, andrewrk, smeenai Subscribers: mgorny, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D58204
  19. [WebAssembly] Fixed disassembler not knowing about OPERAND_EVENT Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58414
Revision 354441 by lebedevri:
[llvm-exegesis] Opcode stabilization / reclusterization (PR40715)

Summary:
Given an instruction `Opcode`, we can make benchmarks (measurements) of the
instruction characteristics/performance. Then, to facilitate further analysis
we group the benchmarks with *similar* characteristics into clusters.
Now, this is all not entirely deterministic. Some instructions have variable
characteristics, depending on their arguments. And thus, if we do several
benchmarks of the same instruction `Opcode`, we may end up with *different*
performance characteristics measurements. And when we then do clustering,
these several benchmarks of the same instruction `Opcode` may end up being
clustered into *different* clusters. This is not great for further analysis.

We shall find every `Opcode` with benchmarks not in just one cluster, and move
*all* the benchmarks of said `Opcode` into one new unstable cluster per `Opcode`.

I have solved this by making `ClusterId` a bit field, adding a `IsUnstable` bit,
and introducing `-analysis-display-unstable-clusters` switch to toggle between
displaying stable-only clusters and unstable-only clusters.

The reclusterization is deterministically stable, produces identical reports
between runs. (Or at least that is what i'm seeing, maybe it isn't)

Timings/comparisons:
old (current trunk/head) {F8303582}
```
$ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-old.html
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-old.html'
...
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-old.html'

Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-old.html' (25 runs):

           6624.73 msec task-clock                #    0.999 CPUs utilized            ( +-  0.53% )
               172      context-switches          #   25.965 M/sec                    ( +- 29.89% )
                 0      cpu-migrations            #    0.042 M/sec                    ( +- 56.54% )
             31073      page-faults               # 4690.754 M/sec                    ( +-  0.08% )
       26538711696      cycles                    # 4006230.292 GHz                   ( +-  0.53% )  (83.31%)
        2017496807      stalled-cycles-frontend   #    7.60% frontend cycles idle     ( +-  0.93% )  (83.32%)
       13403650062      stalled-cycles-backend    #   50.51% backend cycles idle      ( +-  0.33% )  (33.37%)
       19770706799      instructions              #    0.74  insn per cycle
                                                  #    0.68  stalled cycles per insn  ( +-  0.04% )  (50.04%)
        4419821812      branches                  # 667207369.714 M/sec               ( +-  0.03% )  (66.69%)
         121741669      branch-misses             #    2.75% of all branches          ( +-  0.28% )  (83.34%)

            6.6283 +- 0.0358 seconds time elapsed  ( +-  0.54% )
```

patch, with reclustering but without filtering (i.e. outputting all the stable *and* unstable clusters) {F8303586}
```
$ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-all.html
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-all.html'
...
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-all.html'

Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-all.html' (25 runs):

           6475.29 msec task-clock                #    0.999 CPUs utilized            ( +-  0.31% )
               213      context-switches          #   32.952 M/sec                    ( +- 23.81% )
                 1      cpu-migrations            #    0.130 M/sec                    ( +- 43.84% )
             31287      page-faults               # 4832.057 M/sec                    ( +-  0.08% )
       25939086577      cycles                    # 4006160.279 GHz                   ( +-  0.31% )  (83.31%)
        1958812858      stalled-cycles-frontend   #    7.55% frontend cycles idle     ( +-  0.68% )  (83.32%)
       13218961512      stalled-cycles-backend    #   50.96% backend cycles idle      ( +-  0.29% )  (33.37%)
       19752995402      instructions              #    0.76  insn per cycle
                                                  #    0.67  stalled cycles per insn  ( +-  0.04% )  (50.04%)
        4417079244      branches                  # 682195472.305 M/sec               ( +-  0.03% )  (66.70%)
         121510065      branch-misses             #    2.75% of all branches          ( +-  0.19% )  (83.34%)

            6.4832 +- 0.0229 seconds time elapsed  ( +-  0.35% )
```
Funnily, *this* measurement shows that said reclustering actually improved performance.

patch, with reclustering, only the stable clusters {F8303594}
```
$ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-stable.html
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-stable.html'
...
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-stable.html'

Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-stable.html' (25 runs):

           6387.71 msec task-clock                #    0.999 CPUs utilized            ( +-  0.13% )
               133      context-switches          #   20.792 M/sec                    ( +- 23.39% )
                 0      cpu-migrations            #    0.063 M/sec                    ( +- 61.24% )
             31318      page-faults               # 4903.256 M/sec                    ( +-  0.08% )
       25591984967      cycles                    # 4006786.266 GHz                   ( +-  0.13% )  (83.31%)
        1881234904      stalled-cycles-frontend   #    7.35% frontend cycles idle     ( +-  0.25% )  (83.33%)
       13209749965      stalled-cycles-backend    #   51.62% backend cycles idle      ( +-  0.16% )  (33.36%)
       19767554347      instructions              #    0.77  insn per cycle
                                                  #    0.67  stalled cycles per insn  ( +-  0.04% )  (50.03%)
        4417480305      branches                  # 691618858.046 M/sec               ( +-  0.03% )  (66.68%)
         118676358      branch-misses             #    2.69% of all branches          ( +-  0.07% )  (83.33%)

            6.3954 +- 0.0118 seconds time elapsed  ( +-  0.18% )
```
Performance improved even further?! Makes sense i guess, less clusters to print.

patch, with reclustering, only the unstable clusters {F8303601}
```
$ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-unstable.html -analysis-display-unstable-clusters
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-unstable.html'
...
no exegesis target for x86_64-unknown-linux-gnu, using default
Parsed 43970 benchmark points
Printing sched class consistency analysis results to file '/tmp/clusters-new-unstable.html'

Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=0.5 -benchmarks-file=/home/lebedevri/PileDriver-Sched/benchmarks-inverse_throughput.yaml -analysis-inconsistencies-output-file=/tmp/clusters-new-unstable.html -analysis-display-unstable-clusters' (25 runs):

           6124.96 msec task-clock                #    1.000 CPUs utilized            ( +-  0.20% )
               194      context-switches          #   31.709 M/sec                    ( +- 20.46% )
                 0      cpu-migrations            #    0.039 M/sec                    ( +- 49.77% )
             31413      page-faults               # 5129.261 M/sec                    ( +-  0.06% )
       24536794267      cycles                    # 4006425.858 GHz                   ( +-  0.19% )  (83.31%)
        1676085087      stalled-cycles-frontend   #    6.83% frontend cycles idle     ( +-  0.46% )  (83.32%)
       13035595603      stalled-cycles-backend    #   53.13% backend cycles idle      ( +-  0.16% )  (33.36%)
       18260877653      instructions              #    0.74  insn per cycle
                                                  #    0.71  stalled cycles per insn  ( +-  0.05% )  (50.03%)
        4112411983      branches                  # 671484364.603 M/sec               ( +-  0.03% )  (66.68%)
         114066929      branch-misses             #    2.77% of all branches          ( +-  0.11% )  (83.32%)

            6.1278 +- 0.0121 seconds time elapsed  ( +-  0.20% )
```
This tells us that the actual `-analysis-inconsistencies-output-file=` outputting only takes ~0.4 sec for 43970 benchmark points (3 whole sweeps)
(Also, wow this is fast, it used to take several minutes originally)

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=40715 | PR40715 ]].

Reviewers: courbet, gchatelet

Reviewed By: courbet

Subscribers: tschuett, jdoerfert, llvm-commits, RKSimon

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58355
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/CommandGuide/llvm-exegesis.rst (diff)llvm.src/docs/CommandGuide/llvm-exegesis.rst
The file was added/llvm/trunk/test/tools/llvm-exegesis/X86/analysis-cluster-stabilization.testllvm.src/test/tools/llvm-exegesis/X86/analysis-cluster-stabilization.test
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Analysis.cpp (diff)llvm.src/tools/llvm-exegesis/lib/Analysis.cpp
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Analysis.h (diff)llvm.src/tools/llvm-exegesis/lib/Analysis.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/BenchmarkResult.h (diff)llvm.src/tools/llvm-exegesis/lib/BenchmarkResult.h
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Clustering.cpp (diff)llvm.src/tools/llvm-exegesis/lib/Clustering.cpp
The file was modified/llvm/trunk/tools/llvm-exegesis/lib/Clustering.h (diff)llvm.src/tools/llvm-exegesis/lib/Clustering.h
The file was modified/llvm/trunk/tools/llvm-exegesis/llvm-exegesis.cpp (diff)llvm.src/tools/llvm-exegesis/llvm-exegesis.cpp
Revision 354439 by uabelho:
[RegAllocGreedy] Take last chance recoloring into account in split and assign

Summary:
This is a follow-up to r353988 where tryEvict was extended to take last
chance recoloring into account. Now we do the same thing for trySplit and
tryAssign.

Now we always pass a "FixedRegisters" argument to canEvictInterference and
tryEvict so it doesn't need to have a default value anymore.

The need for this was found long ago in an out-of-tree target.
Unfortunately I don't have a reproducer for an in-tree target.

Reviewers: qcolombet, rudkx

Reviewed By: qcolombet, rudkx

Subscribers: rudkx, MatzeB, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58376
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp (diff)llvm.src/lib/CodeGen/RegAllocGreedy.cpp
Revision 354438 by shchenz:
[NFC] add/modify wrapper function for findRegisterDefOperand().
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineInstr.h (diff)llvm.src/include/llvm/CodeGen/MachineInstr.h
The file was modified/llvm/trunk/lib/CodeGen/LiveVariables.cpp (diff)llvm.src/lib/CodeGen/LiveVariables.cpp
The file was modified/llvm/trunk/lib/CodeGen/MachineInstr.cpp (diff)llvm.src/lib/CodeGen/MachineInstr.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp (diff)llvm.src/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
Revision 354437 by sima:
[DTU] Refine the document of mutation APIs [NFC] (PR40528)

Summary:
It was pointed out in [[ https://bugs.llvm.org/show_bug.cgi?id=40528 | Bug 40528 ]] that it is not clear whether insert/deleteEdge can be used to perform multiple updates and [[ https://reviews.llvm.org/D57316#1388344 | a comment in D57316 ]] reveals that the difference between several ways to update the DominatorTree is confusing.

This patch tries to address issues above.

Reviewers: mkazantsev, kuhar, asbirlea, chandlerc, brzycki

Reviewed By: mkazantsev, kuhar, brzycki

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57881
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/DomTreeUpdater.h (diff)llvm.src/include/llvm/Analysis/DomTreeUpdater.h
Revision 354436 by ctopper:
[X86] Remove FeatureSlowIncDec from Sandy Bridge and later Intel Core CPUs

Summary:
Inc and Dec were at one point slow on Intel CPUs due to their tendency to cause partial flag stalls on P6 derived CPU cores. This is because these instructions are defined to preserve the carry flag. This partial flag stall issue persisted until Sandy Bridge when flag merging was changed to be handled as a data dependency instead of as a stall until retirement. Sandy Bridge and later CPUs rename the C flag separately from OSPAZ so there is no flag merge needed on INC/DEC to preserve the C flag.

Given these improvements I don't know why INC/DEC was ever considered slow on Sandy Bridge. If anything they should have been disabled on the earlier CPUs instead.

Note after this patch, INC/DEC are still considered slow on Silvermont, Goldmont, Knights Landing and our generic "x86-64" CPU.

Reviewers: spatel, RKSimon, chandlerc

Reviewed By: chandlerc

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D58412
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86.td (diff)llvm.src/lib/Target/X86/X86.td
The file was modified/llvm/trunk/test/CodeGen/X86/mul-constant-result.ll (diff)llvm.src/test/CodeGen/X86/mul-constant-result.ll
The file was modified/llvm/trunk/test/CodeGen/X86/rdrand.ll (diff)llvm.src/test/CodeGen/X86/rdrand.ll
Revision 354435 by leonardchan:
Limit new PM tests to X86 registered targets.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/Driver/msan.c (diff)clang.src/test/Driver/msan.c
The file was modified/cfe/trunk/test/Driver/tsan.c (diff)clang.src/test/Driver/tsan.c
Revision 354434 by echristo:
Temporarily Revert "[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)"

As this has broken the lto bootstrap build for 3 days and is
showing a significant regression on the Dither_benchmark results (from
the LLVM benchmark suite) -- specifically, on the
BENCHMARK_FLOYD_DITHER_128, BENCHMARK_FLOYD_DITHER_256, and
BENCHMARK_FLOYD_DITHER_512; the others are unchanged.  These have
regressed by about 28% on Skylake, 34% on Haswell, and over 40% on
Sandybridge.

This reverts commit r353923.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp (diff)llvm.src/lib/Target/X86/X86TargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.h (diff)llvm.src/lib/Target/X86/X86TargetTransformInfo.h
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/addsub.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/addsub.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/alternate-fp.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/alternate-fp.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/alternate-int.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/alternate-int.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_7zip.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/crash_7zip.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_bullet.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/crash_bullet.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_bullet3.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/crash_bullet3.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/crash_sim4b1.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/crash_sim4b1.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/fptosi.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/fptosi.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/fptoui.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/fptoui.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/insertvalue.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/insertvalue.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/phi.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/phi.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/reorder_phi.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/reorder_phi.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/resched.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/resched.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/rgb_phi.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/rgb_phi.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/saxpy.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/saxpy.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/schedule-bundle.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/schedule-bundle.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/sext.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/sext.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/shift-lshr.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/shift-lshr.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/shift-shl.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/shift-shl.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/sitofp.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/sitofp.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/uitofp.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/uitofp.ll
The file was removed/llvm/trunk/test/Transforms/SLPVectorizer/X86/vec-reg-64bit.llllvm.src/test/Transforms/SLPVectorizer/X86/vec-reg-64bit.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/vect_copyable_in_binops.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/vect_copyable_in_binops.ll
The file was modified/llvm/trunk/test/Transforms/SLPVectorizer/X86/zext.ll (diff)llvm.src/test/Transforms/SLPVectorizer/X86/zext.ll
Revision 354433 by maskray:
[Dominators] Simplify and optimize path compression used in link-eval forest.

Summary:
* NodeToInfo[*] have been allocated so the addresses are stable. We can store them instead of NodePtr to save NumToNode lookups.
* Nodes are traversed twice. Using `Visited` to check the traversal number is expensive and obscure. Just split the two traversals into two loops explicitly.
* The check `VInInfo.DFSNum < LastLinked` is redundant as it is implied by `VInInfo->Parent < LastLinked`
* VLabelInfo PLabelInfo are used to save a NodeToInfo lookup in the second traversal.

Also add some comments explaining eval().

This shows a ~4.5% improvement (9.8444s -> 9.3996s) on

    perf stat -r 10 taskset -c 0 opt -passes=$(printf '%.0srequire<domtree>,invalidate<domtree>,' {1..1000})'require<domtree>' -disable-output sqlite-autoconf-3270100/sqlite3.bc

Reviewers: kuhar, sanjoy, asbirlea

Reviewed By: kuhar

Subscribers: brzycki, NutshellySima, kristina, jdoerfert, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58327
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/GenericDomTreeConstruction.h (diff)llvm.src/include/llvm/Support/GenericDomTreeConstruction.h
Revision 354432 by leonardchan:
Remove test on incompatible mpis target.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/Driver/msan.c (diff)clang.src/test/Driver/msan.c
Revision 354431 by leonardchan:
[NewPM] Add other sanitizers at O0

This allows for MSan and TSan to be used without optimizations required.

Differential Revision: https://reviews.llvm.org/D58424
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/BackendUtil.cpp (diff)clang.src/lib/CodeGen/BackendUtil.cpp
The file was modified/cfe/trunk/test/Driver/msan.c (diff)clang.src/test/Driver/msan.c
The file was modified/cfe/trunk/test/Driver/tsan.c (diff)clang.src/test/Driver/tsan.c
Revision 354430 by kito:
[RISCV] Implement pseudo instructions for load/store from a symbol address.

Summary:
Those pseudo-instructions are making load/store instructions able to
load/store from/to a symbol, and its always using PC-relative addressing
to generating a symbol address.

Reviewers: asb, apazos, rogfer01, jrtc27

Differential Revision: https://reviews.llvm.org/D50496
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp (diff)llvm.src/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVInstrFormats.td (diff)llvm.src/lib/Target/RISCV/RISCVInstrFormats.td
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVInstrInfo.td (diff)llvm.src/lib/Target/RISCV/RISCVInstrInfo.td
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVInstrInfoD.td (diff)llvm.src/lib/Target/RISCV/RISCVInstrInfoD.td
The file was modified/llvm/trunk/lib/Target/RISCV/RISCVInstrInfoF.td (diff)llvm.src/lib/Target/RISCV/RISCVInstrInfoF.td
The file was modified/llvm/trunk/test/MC/RISCV/rv32d-invalid.s (diff)llvm.src/test/MC/RISCV/rv32d-invalid.s
The file was modified/llvm/trunk/test/MC/RISCV/rv32f-invalid.s (diff)llvm.src/test/MC/RISCV/rv32f-invalid.s
The file was modified/llvm/trunk/test/MC/RISCV/rv32i-invalid.s (diff)llvm.src/test/MC/RISCV/rv32i-invalid.s
The file was added/llvm/trunk/test/MC/RISCV/rv64i-pseudos.sllvm.src/test/MC/RISCV/rv64i-pseudos.s
The file was added/llvm/trunk/test/MC/RISCV/rvd-pseudos.sllvm.src/test/MC/RISCV/rvd-pseudos.s
The file was added/llvm/trunk/test/MC/RISCV/rvf-pseudos.sllvm.src/test/MC/RISCV/rvf-pseudos.s
The file was modified/llvm/trunk/test/MC/RISCV/rvi-pseudos-invalid.s (diff)llvm.src/test/MC/RISCV/rvi-pseudos-invalid.s
The file was modified/llvm/trunk/test/MC/RISCV/rvi-pseudos.s (diff)llvm.src/test/MC/RISCV/rvi-pseudos.s
Revision 354429 by maskray:
[Dominators] Delete UpdateLevelsAfterInsertion in edge insertion of depth-based search for release builds

Summary:
After insertion of (From, To), v is affected iff
depth(NCD)+1 < depth(v) && path P from To to v exists where every w on P s.t. depth(v) <= depth(w)

All affected vertices change their idom to NCD.

If a vertex u has changed its depth, it must be a descendant of an
affected vertex v. Its depth must have been updated by UpdateLevel()
called by setIDom() of the first affected ancestor.

So UpdateLevelsAfterInsertion and its bookkeeping variable VisitedNotAffectedQueue are redundant.
Run them only in debug builds as a sanity check.

Reviewers: kuhar

Reviewed By: kuhar

Subscribers: kristina, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58369
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/GenericDomTreeConstruction.h (diff)llvm.src/include/llvm/Support/GenericDomTreeConstruction.h
Revision 354427 by shchenz:
[PowerPC] exploit P9 instruction maddld.
Differential Revision: https://reviews.llvm.org/D58364
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/P9InstrResources.td (diff)llvm.src/lib/Target/PowerPC/P9InstrResources.td
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCInstr64Bit.td (diff)llvm.src/lib/Target/PowerPC/PPCInstr64Bit.td
The file was added/llvm/trunk/test/CodeGen/PowerPC/maddld.llllvm.src/test/CodeGen/PowerPC/maddld.ll
Revision 354426 by tlively:
[WebAssembly] Generalize section ordering constraints

Summary:
Changes from using a total ordering of known sections to using a
dependency graph approach. This allows our tools to accept and process
binaries that are compliant with the spec and tool conventions that
would have been previously rejected. It also means our own tools can
do less work to enforce an artificially imposed ordering. Using a
general mechanism means fewer special cases and exceptions in the
ordering logic.

Reviewers: aheejin, dschuff

Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, jdoerfert, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58312
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Object/Wasm.h (diff)llvm.src/include/llvm/Object/Wasm.h
The file was modified/llvm/trunk/lib/Object/WasmObjectFile.cpp (diff)llvm.src/lib/Object/WasmObjectFile.cpp
The file was added/llvm/trunk/test/Object/wasm-relocs-and-producers.yamlllvm.src/test/Object/wasm-relocs-and-producers.yaml
Revision 354421 by aheejin:
[WebAssembly] Refactor atomic operation definitions (NFC)

Summary:
- Make `ATOMIC_I`, `ATOMIC_NRI`, `AtomicLoad`, `AtomicStore` classes and
  make other operations inherit from them
- Factor the common opcode prefix '0xfe' out from the opcodes into the
  common class
- Reorder instructions in the order of increasing opcodes

Reviewers: tlively

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, jfb, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58338
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td (diff)llvm.src/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td
Revision 354420 by spatel:
[InstCombine] regenerate test checks; NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll (diff)llvm.src/test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll
Revision 354419 by aheejin:
[WebAssembly] Fix load/store name detection for atomic instructions

Summary:
Fixed a bug in the routine in AsmParser that determines whether the
current instruction is a load or a store. Atomic instructions' prefixes
are not `atomic_` but `atomic.`, and all atomic instructions are also
memory instructions. Also fixed the printing format of atomic
instructions to match other memory instructions and added encoding tests
for atomic instructions.

Reviewers: aardappel, tlively

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, jfb, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58337
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp (diff)llvm.src/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
The file was modified/llvm/trunk/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td (diff)llvm.src/lib/Target/WebAssembly/WebAssemblyInstrAtomics.td
The file was added/llvm/trunk/test/MC/WebAssembly/atomics-encodings.sllvm.src/test/MC/WebAssembly/atomics-encodings.s
Revision 354417 by tstellar:
CMake: Fix stand-alone clang builds since r353268

Summary:
Handle the case where LLVM_MAIN_SRC_DIR is not set and also use
LLVM_CMAKE_DIR for locating installed cmake files rather than
LLVM_CMAKE_PATH.

Reviewers: phosek, andrewrk, smeenai

Reviewed By: phosek, andrewrk, smeenai

Subscribers: mgorny, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D58204
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/CMakeLists.txt (diff)clang.src/CMakeLists.txt
The file was modified/llvm/trunk/cmake/modules/AddLLVM.cmake (diff)llvm.src/cmake/modules/AddLLVM.cmake
Revision 354416 by aardappel:
[WebAssembly] Fixed disassembler not knowing about OPERAND_EVENT

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58414
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp (diff)llvm.src/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
The file was modified/llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt (diff)llvm.src/test/MC/Disassembler/WebAssembly/wasm.txt