summaryrefslogtreecommitdiffstats
path: root/llvm/utils
Commit message (Collapse)AuthorAgeFilesLines
...
* [ValueTypes] Add v16f16 and v32f16 to EVT::getEVTString and Tablegen's ↵Craig Topper2019-08-301-0/+2
| | | | | | | | getEnumName Missed these when I hadded the enum entries llvm-svn: 370494
* gn build: Merge r370490Nico Weber2019-08-301-0/+1
| | | | llvm-svn: 370492
* vim: add `immarg` keywordSven van Haastregt2019-08-301-0/+1
| | | | | | The `immarg` attribute was added in r355981. llvm-svn: 370443
* gn build: Merge r370441Nico Weber2019-08-301-1/+0
| | | | llvm-svn: 370442
* GlobalISel/TableGen: Handle setcc patternsMatt Arsenault2019-08-291-1/+68
| | | | | | | | | | | This is a special case because one node maps to two different G_ instructions, and the operand order is changed. This mostly enables G_FCMP for AMDPGPU. G_ICMP is still manually selected for now since it has the SALU and VALU complication to deal with. llvm-svn: 370280
* Add tie-breaker for register class sorting in getSuperRegForSubRegJessica Paquette2019-08-281-1/+8
| | | | | | | | | | | | llvm::stable_sort is apparently not sufficient. Use the same tie-breaker/sorting style as TopoOrderRC fix bot failures. E.g. http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/19401/steps/test-check-all/logs/stdio llvm-svn: 370267
* [GlobalISel] Import patterns containing SUBREG_TO_REGJessica Paquette2019-08-281-19/+85
| | | | | | | | | | | | | | | | | | | | | | | Reuse the logic for INSERT_SUBREG to also import SUBREG_TO_REG patterns. - Split `inferSuperRegisterClass` into two functions, one which tries to use an existing TreePatternNode (`inferSuperRegisterClassForNode`), and one that doesn't. SUBREG_TO_REG doesn't have a node to leverage, which is the cause for the split. - Rename GlobalISelEmitterInsertSubreg.td to GlobalISelEmitterSubreg.td and update it. - Update impacted tests in the AArch64 and X86 backends. This is kind of a hit/miss for code size improvements/regressions. E.g. in add-ext.ll, we now get some identity copies. This isn't really anything the importer can handle, since it's caused by a later pass introducing the copy for the sake of correctness. Differential Revision: https://reviews.llvm.org/D66769 llvm-svn: 370254
* gn build: Merge r370249Nico Weber2019-08-281-0/+1
| | | | llvm-svn: 370251
* gn build: Merge r370187Nico Weber2019-08-281-0/+1
| | | | llvm-svn: 370188
* Recommit "[GlobalISel] Import patterns containing INSERT_SUBREG"Jessica Paquette2019-08-273-1/+235
| | | | | | | | | | I thought `llvm::sort` was stable for some reason but it's not. Use `llvm::stable_sort` in `CodeGenTarget::getSuperRegForSubReg`. Original patch: https://reviews.llvm.org/D66498 llvm-svn: 370084
* Revert "[GlobalISel] Import patterns containing INSERT_SUBREG"Jessica Paquette2019-08-273-235/+1
| | | | | | | | | | When EXPENSIVE_CHECKS are enabled, GlobalISelEmitterSubreg.td doesn't get stable output. Reverting while I debug it. See: https://reviews.llvm.org/D66498 llvm-svn: 370080
* [IntrinsicEmitter] Support scalable vectors in intrinsicsCullen Rhodes2019-08-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds support for scalable vectors in intrinsics, enabling intrinsics such as the following to be defined: declare <vscale x 4 x i32> @llvm.something.nxv4i32(<vscale x 4 x i32>) Support for this is implemented by defining a new type descriptor for scalable vectors and adding mangling support for scalable vector types in the name mangling scheme used by 'any' types in intrinsic signatures. Tests have been added for IRBuilder to test scalable vectors work as expected when using intrinsics through this interface. This required implementing an intrinsic that is explicitly defined with scalable vectors, e.g. LLVMType<nxv4i32>, an SVE floating-point convert intrinsic was used for this. The behaviour of the overloaded type LLVMScalarOrSameVectorWidth with scalable vectors is tested using the existing masked load intrinsic. Also added an .ll test to test the Verifier catches a bad intrinsic argument when passing a fixed-width predicate (mask) to the masked.load intrinsic where a scalable is expected. Patch by Paul Walker Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D65930 llvm-svn: 370053
* [GlobalISel] Import patterns containing INSERT_SUBREGJessica Paquette2019-08-263-1/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This teaches the importer to handle INSERT_SUBREG instructions. We were missing patterns involving INSERT_SUBREG in AArch64. It appears in AArch64InstrInfo.td 107 times, and 14 times in AArch64InstrFormats.td. To meaningfully import it, the GlobalISelEmitter needs to know how to infer a super register class for a given register class. This patch introduces the following: - `getSuperRegForSubReg`, a function which finds the largest register class which supports a value type and subregister index - `inferSuperRegisterClass`, a function which finds the appropriate super register class for an INSERT_SUBREG' - `inferRegClassFromPattern`, a function which allows for some trivial lookthrough into instructions - `getRegClassFromLeaf`, a helper function which returns the register class for a leaf `TreePatternNode` - Support for subregister index operands in `importExplicitUseRenderer` It also - Updates tests in each backend which are impacted by the change - Adds GlobalISelEmitterSubreg.td to test that we import and skip the expected patterns As a result of this patch, INSERT_SUBREG patterns in X86 may use the LOW32_ADDR_ACCESS_RBP register class instead of GR32. This is correct, since the register class contains the same registers as GR32 (except with the addition of RBP). So, this also teaches X86 to handle that register class. This is in line with X86ISelLowering, which treats this as a GR class. Differential Revision: https://reviews.llvm.org/D66498 llvm-svn: 369973
* gn build: Merge r369918Nico Weber2019-08-262-0/+2
| | | | llvm-svn: 369953
* gn build: color linker errors when using lldNico Weber2019-08-261-0/+3
| | | | llvm-svn: 369951
* gn build: (manually) merge r369741Nico Weber2019-08-261-0/+2
| | | | llvm-svn: 369950
* gn build: (manually) merge r369940Nico Weber2019-08-262-0/+8
| | | | llvm-svn: 369948
* [TableGen] Correct comments for end of namespace. NFCBjorn Pettersson2019-08-2510-29/+29
| | | | | | | | | | | | | | | | | | | | | | Summary: Update end-of-namespace comments generated by tablegen emitters to fulfill the rules setup by clang-tidy's llvm-namespace-comment checker. Fixed a few end-of-namespace comments in the tablegen source code as well. Reviewers: craig.topper Reviewed By: craig.topper Subscribers: craig.topper, stoklund, dschuff, sbc100, jgravelle-google, aheejin, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66396 llvm-svn: 369865
* Use a bit of relaxed constexpr to make FeatureBitset costant intializableBenjamin Kramer2019-08-244-6/+6
| | | | | | | | | | | This requires std::intializer_list to be a literal type, which it is starting with C++14. The downside is that std::bitset is still not constexpr-friendly so this change contains a re-implementation of most of it. Shrinks clang by ~60k. llvm-svn: 369847
* hwasan: Untag unwound stack frames by wrapping personality functions.Peter Collingbourne2019-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | One problem with untagging memory in landing pads is that it only works correctly if the function that catches the exception is instrumented. If the function is uninstrumented, we have no opportunity to untag the memory. To address this, replace landing pad instrumentation with personality function wrapping. Each function with an instrumented stack has its personality function replaced with a wrapper provided by the runtime. Functions that did not have a personality function to begin with also get wrappers if they may be unwound past. As the unwinder calls personality functions during stack unwinding, the original personality function is called and the function's stack frame is untagged by the wrapper if the personality function instructs the unwinder to keep unwinding. If unwinding stops at a landing pad, the function is still responsible for untagging its stack frame if it resumes unwinding. The old landing pad mechanism is preserved for compatibility with old runtimes. Differential Revision: https://reviews.llvm.org/D66377 llvm-svn: 369721
* [utils] Update shebang to use the environment.Jonas Devlieghere2019-08-221-1/+1
| | | | | | This changes the shebang to launch bash through /usr/bin/env. llvm-svn: 369717
* gn build: Merge r369680Nico Weber2019-08-221-0/+1
| | | | llvm-svn: 369682
* gn build: Merge r369677Nico Weber2019-08-221-1/+0
| | | | llvm-svn: 369678
* Retire llvm::less_ptr. llvm::deref is much more flexible.Benjamin Kramer2019-08-221-1/+1
| | | | llvm-svn: 369675
* Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>.Benjamin Kramer2019-08-224-18/+21
| | | | llvm-svn: 369674
* [lit] Diagnose insufficient args to internal envJoel E. Denny2019-08-226-3/+31
| | | | | | | | | | | | | Without this patch, failing to provide a subcommand to lit's internal `env` results in either a python `IndexError` or an attempt to execute the final `env` argument, such as `FOO=1`, as a command. This patch diagnoses those cases with a more helpful message. Reviewed By: stella.stamenova Differential Revision: https://reviews.llvm.org/D66482 llvm-svn: 369620
* gn build: Merge r369605Nico Weber2019-08-221-1/+1
| | | | llvm-svn: 369608
* gn build: Merge r369600Nico Weber2019-08-221-0/+3
| | | | llvm-svn: 369603
* gn build: Merge r369591Nico Weber2019-08-211-0/+1
| | | | llvm-svn: 369594
* gn build: Merge r369587Nico Weber2019-08-211-0/+1
| | | | llvm-svn: 369593
* gn build: Merge r369568Nico Weber2019-08-211-0/+1
| | | | llvm-svn: 369572
* gn build: Make sync script not exit 1 if it writes changesNico Weber2019-08-211-1/+1
| | | | llvm-svn: 369571
* git-llvm: Make push --force suppress error on nothing to commit as wellNico Weber2019-08-211-5/+6
| | | | llvm-svn: 369544
* git-llvm: Give "push" a --force flag to disable confirm prompt on multiple ↵Nico Weber2019-08-211-1/+6
| | | | | | commits llvm-svn: 369538
* reland [gtest] Fix printing of StringRef and SmallString in assert messages.Sam McCall2019-08-212-2/+29
| | | | | | | | | Renames GTEST_NO_LLVM_RAW_OSTREAM -> GTEST_NO_LLVM_SUPPORT and guards the new features behind it. This reverts commit a063bcf3ef5a879adbe9639a3c187d876eee0e66. llvm-svn: 369527
* Add 9.0 release bug to merge request scriptSimon Atanasyan2019-08-211-0/+3
| | | | llvm-svn: 369526
* Revert "[gtest] Fix printing of StringRef and SmallString in assert messages."Sam McCall2019-08-211-29/+0
| | | | | | This reverts commit 4becb2ab4e9f52ce98272d1f5930d6942af5172b. llvm-svn: 369525
* [gtest] Fix printing of StringRef and SmallString in assert messages.Sam McCall2019-08-211-0/+29
| | | | | | | | | | | | | | | | | | Summary: These are detected by gtest as containers, and so previously printed as e.g. { '.' (46, 0x2E), 's' (115, 0x73), 'e' (101, 0x65), 'c' (99, 0x63), '0' (48, 0x30) }, gtest itself overloads PrintTo for std::string and friends, we use the same mechanism. Reviewers: labath Subscribers: dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66520 llvm-svn: 369518
* Remove llvm/utils/git/find-revNico Weber2019-08-201-50/+0
| | | | | | | | | It assumes git-svn, hasn't been touched in ages, and it's replaced by llvm-git in llvm/utils/git-svn. Differential Revision: https://reviews.llvm.org/D66193 llvm-svn: 369478
* gn build: Merge r369467Nico Weber2019-08-201-0/+18
| | | | llvm-svn: 369476
* Teach GlobalISelEmitter to treat used iPTRAny operands as pointer operandsJessica Paquette2019-08-203-7/+30
| | | | | | | | | | | | | | Overloaded intrinsics can use iPTRAny in used/input operands. The GlobalISelEmitter doesn't know that these are pointers, so it treats them as scalars. As a result, these intrinsics can't be imported. This teaches the GlobalISelEmitter to recognize these as pointers rather than scalars. Differential Revision: https://reviews.llvm.org/D65756 llvm-svn: 369455
* gn build: Merge r369298Nico Weber2019-08-201-0/+1
| | | | llvm-svn: 369401
* [lit] Check for accidental external command callsJoel E. Denny2019-08-198-0/+48
| | | | | | | | | | | | | | | This patch extends lit's test suite to check that lit's internal shell doesn't accidentally execute internal commands as external commands. It does so by putting fake failing versions of those commands in `PATH` while the entire lit test suite is running. Without the fixes in D65697 but with its tests, this approach catches accidental external `env` calls. Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D66293 llvm-svn: 369309
* TableGen: Revert changes from r369038Matt Arsenault2019-08-181-3/+1
| | | | | | | These aren't needed for a specific use yet, and I meant to not commit these. llvm-svn: 369201
* Add LLDB dataformatters for llvm::StringRef and lldb_private::ConstStringAdrian Prantl2019-08-161-0/+23
| | | | | | | | | | These data formatters make the string value appear in Xcode's variables view (and on the command line) without having to expand the data structure. Differential Revision: https://reviews.llvm.org/D66354 llvm-svn: 369175
* gn build: Merge r369064Nico Weber2019-08-161-0/+1
| | | | llvm-svn: 369074
* gn build: Merge r369061Nico Weber2019-08-161-0/+1
| | | | llvm-svn: 369073
* [Utils][NFC] Copy bisect usage documents from commit msg into script.Jinsong Ji2019-08-151-1/+13
| | | | | | | | | | Copy the message into script, so that new users won't need to dig into commit messages to figure out how to use. The message are copied directly from Michael's commit message in https://reviews.llvm.org/rL214610. llvm-svn: 369054
* gn build: Merge r369039Nico Weber2019-08-151-2/+1
| | | | llvm-svn: 369047
* gn build: Merge r369018Nico Weber2019-08-151-1/+0
| | | | llvm-svn: 369046
OpenPOWER on IntegriCloud