summaryrefslogtreecommitdiffstats
path: root/llvm/docs/GlobalISel.rst
Commit message (Collapse)AuthorAgeFilesLines
* [globalisel] Restructure the GlobalISel documentationDaniel Sanders2019-10-251-941/+0
| | | | | There's a couple minor deletions amongst this but 99% of it is just moving the documentation around to prepare the way for more meaningful changes.
* [globalisel] Fix typo in 'Add LLVMDev 2019 talks and links for the 2017 talks'Daniel Sanders2019-10-251-1/+1
|
* [globalisel] Add LLVMDev 2019 talks and links for the 2017 talksDaniel Sanders2019-10-251-2/+3
|
* [docs] Fix sphinx doc generation errorsJordan Rupprecht2019-08-141-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Errors fixed: - GettingStarted: Duplicate explicit target name: "cmake" - GlobalISel: Unexpected indentation - LoopTerminology: Explicit markup ends without a blank line; unexpected unindent - ORCv2: Definition list ends without a blank line; unexpected unindent - Misc: document isn't included in any toctree Verified that a clean docs build (`rm -rf docs/ && ninja docs-llvm-html`) passes with no errors. Spot checked the individual pages to make sure they look OK. Reviewers: thakis, dsanders Reviewed By: dsanders Subscribers: arphaman, llvm-commits, lhames, rovka, dsanders, reames Tags: #llvm Differential Revision: https://reviews.llvm.org/D66183 llvm-svn: 368932
* [globalisel][legalizer] Attempt to write down the minimal legalization rulesDaniel Sanders2019-08-081-0/+95
| | | | | | | | | | | | | | | | | | | Summary: There aren't very many requirements on the legalization rules but we should document them. Reviewers: aditya_nandakumar, volkan, bogner, paquette, aemerson, rovka, arsenm, Petar.Avramovic Subscribers: wdng, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62423 # Conflicts: # llvm/docs/GlobalISel.rst llvm-svn: 368321
* [globalisel] Update the legalizer documentationDaniel Sanders2019-05-011-53/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: * The getActionDefinitionsBuilder() is now documented. * Includes descriptions of the various actions (legal*, widenScalar*, lower*, etc). * Includes descriptions of the various predicates (*If, *For, *ForCartesianProduct, etc.) * Includes the rule-order details * Removed the out-of-date prohibition on non-power-of-2 types. * Removed the Vector types section since it was incorrect and vectors follow the same ruleset as scalars. They're only special in the sense that more of the actions and predicates are meaningful for them (e.g. moreElements). * Clarified the position on context sensitive legality (which is not permitted) and contrasted this with context sensitive legalization (which is permitted). Reviewers: bogner, aditya_nandakumar, volkan, aemerson, paquette, arsenm Reviewed By: paquette Subscribers: wdng, rovka, kristof.beyls, jfb, Petar.Avramovic, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61273 llvm-svn: 359705
* [NFC] Fix typos: preceeding -> precedingJordan Rupprecht2019-02-231-1/+1
| | | | llvm-svn: 354715
* [globalisel] Add very brief docs summarizing the ISel part of the LLVMDev ↵Daniel Sanders2017-10-231-5/+69
| | | | | | | | tutorial. Also added links to the talks available. llvm-svn: 316350
* [GlobalISel] Update the documentation and comment for G_[UN]MERGE_VALUESQuentin Colombet2017-09-251-0/+5
| | | | | | | | | In r296921, we added the G_[UN]MERGE_VALUES node, but did not update the documentation. Fixing that. NFC. llvm-svn: 314168
* [GlobalISel] Update the documentation for G_SEQUENCEQuentin Colombet2017-09-251-2/+0
| | | | | | | | This instruction has been removed in r306120. NFC. llvm-svn: 314167
* [GlobalISel] Update the documentation and comments for G_EXTRACTQuentin Colombet2017-09-251-1/+1
| | | | | | | | | In r297100, G_EXTRACT changed from a multiple results instruction to a single result one. Update the documentation accordingly. NFC. llvm-svn: 314166
* Reapply "[GlobalISel] Remove the GISelAccessor API."Quentin Colombet2017-08-151-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit r310425, thus reapplying r310335 with a fix for link issue of the AArch64 unittests on Linux bots when BUILD_SHARED_LIBS is ON. Original commit message: [GlobalISel] Remove the GISelAccessor API. Its sole purpose was to avoid spreading around ifdefs related to building global-isel. Since r309990, GlobalISel is not optional anymore, thus, we can get rid of this mechanism all together. NFC. ---- The fix for the link issue consists in adding the GlobalISel library in the list of dependencies for the AArch64 unittests. This dependency comes from the use of AArch64Subtarget that needs to know how to destruct the GISel related APIs when being detroyed. Thanks to Bill Seurer and Ahmed Bougacha for helping me reproducing and understand the problem. llvm-svn: 310969
* Revert "[GlobalISel] Remove the GISelAccessor API."Quentin Colombet2017-08-081-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit r310115. It causes a linker failure for the one of the unittests of AArch64 on one of the linux bot: http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/3429 : && /home/fedora/gcc/install/gcc-7.1.0/bin/g++ -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -ffunction-sections -fdata-sections -O2 -L/home/fedora/gcc/install/gcc-7.1.0/lib64 -Wl,-allow-shlib-undefined -Wl,-O3 -Wl,--gc-sections unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o -o unittests/Target/AArch64/AArch64Tests lib/libLLVMAArch64CodeGen.so.6.0.0svn lib/libLLVMAArch64Desc.so.6.0.0svn lib/libLLVMAArch64Info.so.6.0.0svn lib/libLLVMCodeGen.so.6.0.0svn lib/libLLVMCore.so.6.0.0svn lib/libLLVMMC.so.6.0.0svn lib/libLLVMMIRParser.so.6.0.0svn lib/libLLVMSelectionDAG.so.6.0.0svn lib/libLLVMTarget.so.6.0.0svn lib/libLLVMSupport.so.6.0.0svn -lpthread lib/libgtest_main.so.6.0.0svn lib/libgtest.so.6.0.0svn -lpthread -Wl,-rpath,/home/buildbots/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/lib && : unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x0): undefined reference to `vtable for llvm::LegalizerInfo' unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x8): undefined reference to `vtable for llvm::RegisterBankInfo' The particularity of this bot is that it is built with BUILD_SHARED_LIBS=ON However, I was not able to reproduce the problem so far. Reverting to unblock the bot. llvm-svn: 310425
* [GlobalISel] Remove the GISelAccessor API.Quentin Colombet2017-08-041-2/+0
| | | | | | | | | | Its sole purpose was to avoid spreading around ifdefs related to building global-isel. Since r309990, GlobalISel is not optional anymore, thus, we can get rid of this mechanism all together. NFC. llvm-svn: 310115
* [AArch64][GlobalISel] Legalize narrow scalar ops again.Ahmed Bougacha2017-01-231-35/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since r279760, we've been marking as legal operations on narrow integer types that have wider legal equivalents (for instance, G_ADD s8). Compared to legalizing these operations, this reduced the amount of extends/truncates required, but was always a weird legalization decision made at selection time. So far, we haven't been able to formalize it in a way that permits the selector generated from SelectionDAG patterns to be sufficient. Using a wide instruction (say, s64), when a narrower instruction exists (s32) would introduce register class incompatibilities (when one narrow generic instruction is selected to the wider variant, but another is selected to the narrower variant). It's also impractical to limit which narrow operations are matched for which instruction, as restricting "narrow selection" to ranges of types clashes with potentially incompatible instruction predicates. Concerns were also raised regarding MIPS64's sign-extended register assumptions, as well as wrapping behavior. See discussions in https://reviews.llvm.org/D26878. Instead, legalize the operations. Should we ever revert to selecting these narrow operations, we should try to represent this more accurately: for instance, by separating a "concrete" type on operations, and an "underlying" type on vregs, we could move the "this narrow-looking op is really legal" decision to the legalizer, and let the selector use the "underlying" vreg type only, which would be guaranteed to map to a register class. In any case, we eventually should mitigate: - the performance impact by selecting no-op extract/truncates to COPYs (which we currently do), and the COPYs to register reuses (which we don't do yet). - the compile-time impact by optimizing away extract/truncate sequences in the legalizer. llvm-svn: 292827
* [docs] Add initial Global ISel documentation.Ahmed Bougacha2016-11-041-0/+672
This reflects the current state of Global ISel. As progress is made, we'll document our design decisions in it. Comments very welcome! llvm-svn: 286002
OpenPOWER on IntegriCloud