summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
...
* [Docs] Fix LLVM_YAML_IS_DOCUMENT_LIST_VECTORJonas Devlieghere2018-07-231-1/+1
| | | | | | | The docs incorrectly said to repeat std::vector inside LLVM_YAML_IS_DOCUMENT_LIST_VECTOR. llvm-svn: 337695
* [llvm-mca][docs] Add documentation for the statistic outputs from mca. NFCMatt Davis2018-07-211-3/+125
| | | | | | | | | | | | | | Summary: The original text was lifted from the MCA README. I re-ran the dot-product example and updated the output seen in the docs. I also added a few paragraphs discussing the instruction issued and retired histograms, as well as discussing the register file stats. Reviewers: andreadb, RKSimon, courbet, gbedwell, filcab Reviewed By: andreadb Subscribers: tschuett Differential Revision: https://reviews.llvm.org/D49614 llvm-svn: 337648
* [FileCheck] Provide an option for FileCheck to dump original input to stderr ↵George Karpenkov2018-07-201-0/+4
| | | | | | | | | | | | | | | | on failure The option can be either set using environment variable (e.g. env FILECHECK_DUMP_INPUT_ON_FAILURE=1 ninja check-fuzzer) or with a FileCheck flag. This can be extremely useful for debugging, cf. https://groups.google.com/forum/#!topic/llvm-dev/kLrzg8OM_h8 for discussion. Differential Revision: https://reviews.llvm.org/D49328 llvm-svn: 337609
* Revert "[docs] Add support for Markdown documentation in Sphinx"Michael J. Spencer2018-07-203-165/+1
| | | | | | The buildbots have an old version of Sphinx (need at least 1.3). Revert until they are upgraded. llvm-svn: 337513
* [docs] Add support for Markdown documentation in SphinxMichael J. Spencer2018-07-193-1/+165
| | | | | | Differential Revision: https://reviews.llvm.org/D44910 llvm-svn: 337509
* [llvm-mca][docs] Add Timeline and How MCA works.Matt Davis2018-07-191-3/+223
| | | | | | | | | | For the most part, these changes were from the RFC. I made a few minor word/structure changes, but nothing significant. I also regenerated the example output, and adjusted the text accordingly. Differential Revision: https://reviews.llvm.org/D49527 llvm-svn: 337496
* [libFuzzer] Update documentation regarding MSan.Matt Morehouse2018-07-191-5/+3
| | | | | | | | | | | | | | Summary: -fsanitize=fuzzer,memory now works out-of-the-box. Reviewers: kcc Reviewed By: kcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D49441 llvm-svn: 337476
* [Docs] Testing Debug Info Preservation in OptimizationsAnastasis Grammenos2018-07-191-2/+179
| | | | | | Differential Revision: https://reviews.llvm.org/D49053 llvm-svn: 337457
* [UnJ] Document unroll and jam pass and loop metadataDavid Green2018-07-192-0/+76
| | | | | | | | | Add some quick words for unroll and jam to the list of passes and add unroll_and_jam metadata to the language ref. Differential Revision: https://reviews.llvm.org/D49349 llvm-svn: 337448
* [docs] Update GoldPlugin documentationTeresa Johnson2018-07-181-17/+30
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Updated and reorganized. Made the following additions: 1) How to see if ld.gold is installed, and whether it is the current default. 2) How to install ld.gold as the default or alternatively use -fuse-ld=gold. 3) Move the part about installing the newly built ld-new as the default to the prior section and how to use --enable-gold=default to do it automatically on install. 4) Add a note about ld.bfd supporting plugins but indicate that it is not tested by the LLVM project and gold is the recommended linker for use with the gold plugin. Fixes PR32760. Reviewers: davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D49490 llvm-svn: 337404
* [x86/SLH] Add the design document for Speculative Load Hardening,Chandler Carruth2018-07-182-0/+1099
| | | | | | | | | | | | | | | | | | | | | | | | | | a Spectre v1 mitigation. This was initially posted w/ the patch implementing this, got some basic review there. Also, it is generated from a the Google doc that I shared as part of the Speculative Load Hardening RFC and which has seen pretty widespread review at this point. However, as the patches are landing in LLVM, I wanted to land the docs as well. But it seemed like a bad idea to have them in the same commit in case of reverts or other things. So the docs are split out here. Thanks for all the review so far, and further review and improvements to the documentation here welcome. Please feel free to keep hammering on the code review or Google document. Note that this is a markdown document which Sphinx doesn't yet process. But we can add support for that after and this should get picked up (and I'm preparing patches for that). Also, this gets the document itself into a nice shared place where we can iterate on it. Differential Revision: https://reviews.llvm.org/D49433 llvm-svn: 337391
* MC: Implement support for new .addrsig and .addrsig_sym directives.Peter Collingbourne2018-07-171-0/+30
| | | | | | | | | Part of the address-significance tables proposal: http://lists.llvm.org/pipermail/llvm-dev/2018-May/123514.html Differential Revision: https://reviews.llvm.org/D47744 llvm-svn: 337328
* [LangRef] Clarify semantics of load metadata.Eli Friedman2018-07-171-9/+12
| | | | | | | | | | | | | | | | We need to explicitly state what happens when an invariant promised by load metadata is violated at runtime, since it's come up repeatedly. It's possible we want to specify that the result of the load is poison in some cases, rather than undefined behavior, if the constraint is violated. That would allow preserving the metadata when the load is hoisted, but doesn't allow propagating metadata based on control flow. We currently do transforms based on control flow for nonnull metadata (in PromoteMemToReg). Differential Revision: https://reviews.llvm.org/D47854 llvm-svn: 337325
* [LangRef] nnan and ninf produce poison.Eli Friedman2018-07-171-4/+4
| | | | | | | | | Clarify that violating nnan and ninf can lead to undefined behavior. This allows more aggressive optimizations based on those assumptions. Differential Revision: https://reviews.llvm.org/D47963 llvm-svn: 337323
* [LangRef] Clarify which fast-math flags affect fcmp.Eli Friedman2018-07-171-1/+1
| | | | | | | nsz has no effect due to the way fcmp is defined; +0 and -0 compare equal anyway. reassoc could have the obvious effect. llvm-svn: 337322
* [llvm-mca][docs] Revert mca internals docs.Matt Davis2018-07-171-98/+3
| | | | | | | | | We're going to work on this in a separate review focusing more on documenting the View and probably removing some of the less-interesting/less-useful pieces. This reverts r337219,337225 llvm-svn: 337295
* [llvm-mca][docs] Add notes about cycle and resource callbacks. NFC.Matt Davis2018-07-161-0/+8
| | | | llvm-svn: 337225
* [Intrinsics] define funnel shift IR intrinsics + DAG builder supportSanjay Patel2018-07-161-0/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed here: http://lists.llvm.org/pipermail/llvm-dev/2018-May/123292.html http://lists.llvm.org/pipermail/llvm-dev/2018-July/124400.html We want to add rotate intrinsics because the IR expansion of that pattern is 4+ instructions, and we can lose pieces of the pattern before it gets to the backend. Generalizing the operation by allowing 2 different input values (plus the 3rd shift/rotate amount) gives us a "funnel shift" operation which may also be a single hardware instruction. Initially, I thought we needed to define new DAG nodes for these ops, and I spent time working on that (much larger patch), but then I concluded that we don't need it. At least as a first step, we have all of the backend support necessary to match these ops...because it was required. And shepherding these through the IR optimizer is the primary concern, so the IR intrinsics are likely all that we'll ever need. There was also a question about converting the intrinsics to the existing ROTL/ROTR DAG nodes (along with improving the oversized shift documentation). Again, I don't think that's strictly necessary (as the test results here prove). That can be an efficiency improvement as a small follow-up patch. So all we're left with is documentation, definition of the IR intrinsics, and DAG builder support. Differential Revision: https://reviews.llvm.org/D49242 llvm-svn: 337221
* [llvm-mca][docs] Initial description of mca internals. NFCMatt Davis2018-07-161-3/+90
| | | | | | | | | | | | This patch introduces a brief description of the components of MCA. The main focus is on Views. This is a work in progress, and more descriptions will be introduced later. I want to flesh-out the Views section more and provide a detailed description of eventing in MCA. Eventually a brief code example of a View should accompany the description. Also, we should consider moving the MCA internals guide elsewhere at some point. llvm-svn: 337219
* [cfi-verify] Abort on unsupported targetsJoel Galenson2018-07-161-1/+3
| | | | | | | | As suggested in the review for r337007, this makes cfi-verify abort on unsupported targets instead of producing incorrect results. It also updates the design document to reflect this. Differential Revision: https://reviews.llvm.org/D49304 llvm-svn: 337181
* [docs] Update usage directive for llvm-cov report -show-functionsVedant Kumar2018-07-131-2/+2
| | | | llvm-svn: 337062
* [FileCheck] Implement -v and -vv for tracing matchesJoel E. Denny2018-07-131-0/+10
| | | | | | | | | | | | | | | | | | -v prints all directive pattern matches. -vv additionally prints info that might be noise to users but that can be helpful to FileCheck developers. To maximize code reuse and to make diagnostics more consistent, this patch also adjusts and extends some of the existing diagnostics. CHECK-NOT failures now report variables uses. Many more diagnostics now report the check prefix and kind of directive. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D47114 llvm-svn: 336967
* [FileCheck] Don't permit overlapping CHECK-DAGJoel E. Denny2018-07-111-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That is, make CHECK-DAG skip matches that overlap the matches of any preceding consecutive CHECK-DAG directives. This change makes CHECK-DAG more consistent with other directives, and there is evidence it makes CHECK-DAG more intuitive and less error-prone. See the RFC discussion starting at: http://lists.llvm.org/pipermail/llvm-dev/2018-May/123010.html Moreover, this behavior enables CHECK-DAG groups for unordered, non-unique strings or patterns. For example, it is useful for verifying output or logs from a parallel program, such as the OpenMP runtime. This patch also implements the command-line option -allow-deprecated-dag-overlap, which reverts CHECK-DAG to the old overlapping behavior. This option should not be used in new tests. It is meant only for the existing tests that are broken by this change and that need time to update. See the following bugzilla issue for tracking of such tests: https://bugs.llvm.org/show_bug.cgi?id=37532 Patches to add -allow-deprecated-dag-overlap to those tests will follow immediately. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D47106 llvm-svn: 336847
* Revert "[docs] As of binutils 2.21.51.0.2, ld.bfd supports plugins too, ↵Teresa Johnson2018-07-111-9/+11
| | | | | | | | | | | | | represent this in docs" This reverts commit r306102. This change was made without any review, and has a couple of issues. First, AFAIK we do not test the combination of the LLVM gold plugin with ld.bfd. Second, the change removed documentation for how to build gold and replaced it with instructions for building ld.bfd. llvm-svn: 336841
* Revert r336830: [FileCheck] Don't permit overlapping CHECK-DAGJoel E. Denny2018-07-111-26/+0
| | | | | | | Companion patches are failing to commit, and this patch alone breaks many tests. llvm-svn: 336833
* [FileCheck] Don't permit overlapping CHECK-DAGJoel E. Denny2018-07-111-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That is, make CHECK-DAG skip matches that overlap the matches of any preceding consecutive CHECK-DAG directives. This change makes CHECK-DAG more consistent with other directives, and there is evidence it makes CHECK-DAG more intuitive and less error-prone. See the RFC discussion starting at: http://lists.llvm.org/pipermail/llvm-dev/2018-May/123010.html Moreover, this behavior enables CHECK-DAG groups for unordered, non-unique strings or patterns. For example, it is useful for verifying output or logs from a parallel program, such as the OpenMP runtime. This patch also implements the command-line option -allow-deprecated-dag-overlap, which reverts CHECK-DAG to the old overlapping behavior. This option should not be used in new tests. It is meant only for the existing tests that are broken by this change and that need time to update. See the following bugzilla issue for tracking of such tests: https://bugs.llvm.org/show_bug.cgi?id=37532 Patches to add -allow-deprecated-dag-overlap to those tests will follow immediately. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D47106 llvm-svn: 336830
* [TableGen] Add a general-purpose JSON backend.Simon Tatham2018-07-113-2/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The aim of this backend is to output everything TableGen knows about the record set, similarly to the default -print-records backend. But where -print-records produces output in TableGen's input syntax (convenient for humans to read), this backend produces it as structured JSON data, which is convenient for loading into standard scripting languages such as Python, in order to extract information from the data set in an automated way. The output data contains a JSON representation of the variable definitions in output 'def' records, and a few pieces of metadata such as which of those definitions are tagged with the 'field' prefix and which defs are derived from which classes. It doesn't dump out absolutely every piece of knowledge it _could_ produce, such as type information and complicated arithmetic operator nodes in abstract superclasses; the main aim is to allow consumers of this JSON dump to essentially act as new backends, and backends don't generally need to depend on that kind of data. The new backend is implemented as an EmitJSON() function similar to all of llvm-tblgen's other EmitFoo functions, except that it lives in lib/TableGen instead of utils/TableGen on the basis that I'm expecting to add it to clang-tblgen too in a future patch. To test it, I've written a Python script that loads the JSON output and tests properties of it based on comments in the .td source - more or less like FileCheck, except that the CHECK: lines have Python expressions after them instead of textual pattern matches. Reviewers: nhaehnle Reviewed By: nhaehnle Subscribers: arichardson, labath, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D46054 llvm-svn: 336771
* [LangRef] Clarify alloca of zero bytes.Eli Friedman2018-07-111-3/+3
| | | | | | | | | Let's be conservative here; it matches what we actually implemented, and it should be rare in practice anyway. Differential Revision: https://reviews.llvm.org/D49042 llvm-svn: 336744
* llvm: Add support for "-fno-delete-null-pointer-checks"Manoj Gupta2018-07-091-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Support for this option is needed for building Linux kernel. This is a very frequently requested feature by kernel developers. More details : https://lkml.org/lkml/2018/4/4/601 GCC option description for -fdelete-null-pointer-checks: This Assume that programs cannot safely dereference null pointers, and that no code or data element resides at address zero. -fno-delete-null-pointer-checks is the inverse of this implying that null pointer dereferencing is not undefined. This feature is implemented in LLVM IR in this CL as the function attribute "null-pointer-is-valid"="true" in IR (Under review at D47894). The CL updates several passes that assumed null pointer dereferencing is undefined to not optimize when the "null-pointer-is-valid"="true" attribute is present. Reviewers: t.p.northover, efriedma, jyknight, chandlerc, rnk, srhines, void, george.burgess.iv Reviewed By: efriedma, george.burgess.iv Subscribers: eraman, haicheng, george.burgess.iv, drinkcat, theraven, reames, sanjoy, xbolva00, llvm-commits Differential Revision: https://reviews.llvm.org/D47895 llvm-svn: 336613
* Make llvm.objectsize more conservative with nullGeorge Burgess IV2018-07-091-4/+4
| | | | | | | | | | In non-zero address spaces, we were reporting that an object at `null` always occupies zero bytes. This is incorrect in many cases, so just return `unknown` in those cases for now. Differential Revision: https://reviews.llvm.org/D48860 llvm-svn: 336611
* nm: Add -no-weak flag for hiding weak symbolsDave Lee2018-07-021-0/+4
| | | | | | | | | | | | | | | | | | Summary: This adds a new -no-weak flag to nm to hide weak symbols in its output. This also adds a -W alias for this which is analogous to -U. Patch by Keith Smiley Reviewers: kastiglione, enderby, compnerd Reviewed By: kastiglione Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D48751 llvm-svn: 336126
* Implement strip.invariant.groupPiotr Padlewski2018-07-021-5/+43
| | | | | | | | | | | | | | | | Summary: This patch introduce new intrinsic - strip.invariant.group that was described in the RFC: Devirtualization v2 Reviewers: rsmith, hfinkel, nlopes, sanjoy, amharc, kuhar Subscribers: arsenm, nhaehnle, JDevlieghere, hiraditya, xbolva00, llvm-commits Differential Revision: https://reviews.llvm.org/D47103 Co-authored-by: Krzysztof Pszeniczny <krzysztof.pszeniczny@gmail.com> llvm-svn: 336073
* Document the git config for Windows to do line-endings correctly.Paul Robinson2018-06-271-2/+10
| | | | | | Differential Revision: https://reviews.llvm.org/D48494 llvm-svn: 335775
* Fix doc title underlining.James Henderson2018-06-261-1/+1
| | | | llvm-svn: 335615
* [FileCheck] Add CHECK-EMPTY directive for checking for blank linesJames Henderson2018-06-261-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change, there was no clean way of getting FileCheck to check that a line is completely empty. The expected way of using "CHECK: {{^$}}" does not work because the '^' matches the end of the previous match (this behaviour may be desirable in certain instances). For the same reason, "CHECK-NEXT: {{^$}}" will fail when the previous match was at the end of the line, as the pattern will match there. Using the recommended [[:space:]] to match an explicit new line could also match a space, and thus is not always desired. Literal '\n' matches also do not work. A workaround was suggested in the review, but it is a little clunky. This change adds a new directive that behaves the same as CHECK-NEXT, except that it only matches against empty lines (nothing, not even whitespace, is allowed). As with CHECK-NEXT, it will fail if more than one newline occurs before the next blank line. Example usage: ; test.txt foo bar ; CHECK: foo ; CHECK-EMPTY: ; CHECK-NEXT: bar Differential Revision: https://reviews.llvm.org/D28896 Reviewed by: probinson llvm-svn: 335613
* [docs] Update doc after split of -gen-intrinsic in r335407Fangrui Song2018-06-251-2/+6
| | | | llvm-svn: 335515
* AMDHSA: Put old assembler docs backKonstantin Zhuravlyov2018-06-221-6/+101
| | | | | | | | | Until we switch to code object v3 by default. Follow up for https://reviews.llvm.org/D47736. Differential Revision: https://reviews.llvm.org/D48497 llvm-svn: 335378
* [AMDGPU] Update assembler for HSA Code Object v3Scott Linder2018-06-211-112/+272
| | | | | | | | | | | | | | Update AMDGPU assembler syntax behind the code-object-v3 feature: * Replace/rename most AMDGPU assembler directives/symbols and document them. * Provide more diagnostics (e.g. values out of range, missing values, repeated values). * Provide path for backwards compatibility, even with underlying descriptor changes. Differential Revision: https://reviews.llvm.org/D47736 llvm-svn: 335281
* AMDGPU/AMDHSA: Remove GridWorkGroupCountX/Y/ZKonstantin Zhuravlyov2018-06-211-9/+2
| | | | | | | | | | | | and everything that comes with it from implementation and v3 header files. Leave definition in v2 header files for backwards compatibility. Differential Revision: https://reviews.llvm.org/D48191 llvm-svn: 335267
* TableGen/SearchableTables: Support more generic enums and tablesNicolai Haehnle2018-06-211-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This is essentially a rewrite of the backend which introduces TableGen base classes GenericEnum, GenericTable, and SearchIndex. They allow generating custom enums and tables with lookup functions using separately defined records as the underlying database. Also added as part of this change: - Lookup functions may use indices composed of multiple fields. - Instruction fields are supported similar to Intrinsic fields. - When the lookup key has contiguous numeric values, the lookup function will directly index into the table instead of using a binary search. The existing SearchableTable functionality is internally mapped to the new primitives. Change-Id: I444f3490fa1dbfb262d7286a1660a2c4308e9932 Reviewers: arsenm, tra, t.p.northover Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D48013 llvm-svn: 335225
* [llvm] Document "%T" as deprecated in TestingGuide.rstKuba Mracek2018-06-191-1/+4
| | | | | | Differential Revision: https://reviews.llvm.org/D48189 llvm-svn: 335080
* docs: document CodeView directivesSaleem Abdulrasool2018-06-191-0/+67
| | | | | | | | | Add documentation for assembler directives added to support CodeView emission. Patch by Ellis Hoag! llvm-svn: 335058
* [docs] Fix indentation of llvm-exegesis command line argumentsSimon Pilgrim2018-06-181-3/+3
| | | | llvm-svn: 334976
* [llvm-exegesis] Optionally ignore instructions without a sched class.Clement Courbet2018-06-181-0/+4
| | | | | | | | | | | | Summary: See PR37602. Reviewers: RKSimon Subscribers: llvm-commits, tschuett Differential Revision: https://reviews.llvm.org/D48267 llvm-svn: 334932
* [NFC] fix trivial typos in documentsHiroshi Inoue2018-06-154-5/+5
| | | | llvm-svn: 334799
* Make uitofp and sitofp defined on overflow.Eli Friedman2018-06-141-9/+8
| | | | | | | | | | | IEEE 754 defines the expected result on overflow. As far as I know, hardware implementations (of f16), and compiler-rt (__floatuntisf) correctly return +-Inf on overflow. And I can't think of any useful transform that would take advantage of overflow being undefined here. Differential Revision: https://reviews.llvm.org/D47807 llvm-svn: 334777
* [AMDGPU] Document the AMDGPU LLVM attributesTony Tye2018-06-141-1/+31
| | | | | | Differential Revision: https://reviews.llvm.org/D48101 llvm-svn: 334733
* [docs] Update CompilerWriterInfo.rst for MIPSSimon Dardis2018-06-141-1/+1
| | | | | | Update the URL of where the documentation can be found. llvm-svn: 334720
* GettingStarted.rst: Fix 'If you you' typo (PR37787)Hans Wennborg2018-06-131-1/+1
| | | | llvm-svn: 334584
* AMDHSA: Code object v3 updatesKonstantin Zhuravlyov2018-06-121-32/+33
| | | | | | | | | | | | | | | - Do not emit following assembler directives: - .hsa_code_object_version - .hsa_code_object_isa - .amd_amdgpu_isa - .amd_amdgpu_hsa_metadata - .amd_amdgpu_pal_metadata - Do not emit .note entries - Cleanup and bring in sync kernel descriptor header file - Emit kernel descriptor into .rodata with appropriate relocations and alignments llvm-svn: 334519
OpenPOWER on IntegriCloud