summaryrefslogtreecommitdiffstats
path: root/llvm/utils
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Don't fold away the memory operand of an xchg.Benjamin Kramer2017-05-291-1/+8
| | | | | | | | | | xchg with a mem operand has different locking semantics. If we unfold it into a xchg r,r we will loose the implicit lock. Likewise we never want to fold a register xchg into a memory one as it would be a lot slower. This triggers during LLVM selfhost. llvm-svn: 304163
* Don't capture a temporary std::string in a StringRef.Zachary Turner2017-05-291-1/+1
| | | | | | This fixes the breakages in llvm-tblgen. llvm-svn: 304123
* Resubmit "[X86] Adding new LLVM TableGen backend that generates the X86 ↵Zachary Turner2017-05-294-0/+728
| | | | | | | | | | | | | backend memory folding tables." This was reverted due to buildbot breakages and I was not familiar with this code to investigate it. But while trying to get a useful backtrace for the author, it turns out the fix was very obvious. Resubmitting this patch as is, and will submit the fix in a followup so that the fix is not hidden in the larger CL. llvm-svn: 304122
* Revert "[X86] Adding new LLVM TableGen backend that generates the X86 ↵Zachary Turner2017-05-294-728/+0
| | | | | | | | | | | | | backend memory folding tables." This reverts commit 28cb1003507f287726f43c771024a1dc102c45fe as well as all subsequent followups. llvm-tblgen currently segfaults with this change, and it seems it has been broken on the bots all day with no fixes in preparation. See, for example: http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/ llvm-svn: 304121
* [TableGen][X86] Fix formatting I accidentally messed up in r304099. NFCCraig Topper2017-05-281-1/+1
| | | | llvm-svn: 304115
* [TableGen][X86] Use CHAR_BIT with sizeof instead of hardcoded 8. NFCCraig Topper2017-05-281-1/+2
| | | | llvm-svn: 304100
* [TableGen][X86] Mark a couple global tables as const. NFCCraig Topper2017-05-281-2/+2
| | | | llvm-svn: 304099
* [TableGen][X86] Improve formatting of the fold table output by indenting the ↵Craig Topper2017-05-281-2/+2
| | | | | | body of the table and adding blank lines between tables. NFC llvm-svn: 304098
* [TableGen][X86] Add an llvm_unreachable to a switch so we get an error if we ↵Craig Topper2017-05-281-0/+1
| | | | | | need expansion in the future. llvm-svn: 304097
* [TableGen][X86] Remove unnecessary std::string creations. NFCCraig Topper2017-05-281-4/+4
| | | | llvm-svn: 304096
* [TableGen][X86] Replace a global std::vector with a regular array. ↵Craig Topper2017-05-281-2/+2
| | | | | | llvm::find works on arrays, just need to use std::end to check the result. llvm-svn: 304095
* [TableGen][X86] getValueAsString returns a std::string not a StringRef. ↵Craig Topper2017-05-281-1/+1
| | | | | | Capture it that way to avoid a StringRef to a temporary. llvm-svn: 304093
* [X86] Adding new LLVM TableGen backend that generates the X86 backend memory ↵Ayman Musa2017-05-284-0/+726
| | | | | | | | | | | folding tables. X86 backend holds huge tables in order to map between the register and memory forms of each instruction. This TableGen Backend automatically generated all these tables with the appropriate flags for each entry. Differential Revision: https://reviews.llvm.org/D32684 llvm-svn: 304088
* Return a lit.Test.Result object from TestRunner's executeShTest()Dimitry Andric2017-05-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: For various clang analyzer tests, which were unsupported, I got lit exceptions, similar to the following: Exception during script execution: Traceback (most recent call last): File "utils/lit/lit/run.py", line 190, in execute_test result = test.config.test_format.execute(test, lit_config) File "tools/clang/test/Analysis/analyzer_test.py", line 11, in execute if result.code == lit.Test.FAIL: AttributeError: 'tuple' object has no attribute 'code' This is because executeShTest() in utils/lit/lit/TestRunner.py is supposed to return a lit.Test.Result object, but in case of unsupported tests, it returns a plain tuple. Fix this by returning a properly initialized lit.Test.Result object instead. Reviewers: rnk, rafael, modocache Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33579 llvm-svn: 303943
* Fixed nondeterminism in RuleMatcher::emit.Galina Kistanova2017-05-251-1/+8
| | | | llvm-svn: 303829
* git-llvm script should add .exe on Windows.Zachary Turner2017-05-241-0/+2
| | | | llvm-svn: 303708
* [git-llvm] Check if svn is installed.Rui Ueyama2017-05-231-0/+8
| | | | | | | | | | | | | The error message that git-llvm script prints out when svn is missing is very cryptic. I spent a fair amount of time to find what was wrong with my environment. It looks like many newcomers also exprienced a hard time to submit their first patches due to this error. This patch adds a more user-friendly error message. Differential Revision: https://reviews.llvm.org/D33458 llvm-svn: 303696
* abtest: remove duplicate scriptFrancis Visoiu Mistrih2017-05-231-234/+0
| | | | | | | | This is fixing a mistake from r303690. Differential Revision: https://reviews.llvm.org/D33303 llvm-svn: 303692
* AsmPrinter: mark the beginning and the end of a function in verbose modeFrancis Visoiu Mistrih2017-05-233-119/+232
| | | | llvm-svn: 303690
* merge-request.sh: Use https url for bugzillaTom Stellard2017-05-231-1/+1
| | | | | | | | With the http url, the script fails with: Connection lost/failed: 411 Client Error: Length Required llvm-svn: 303685
* Fix unused variable warnings after r303678Daniel Sanders2017-05-231-2/+2
| | | | | | This should fix lld-x86_64-darwin13 llvm-svn: 303683
* [globalisel][tablegen] Add support for (set $dst, 1) and test X86's ↵Daniel Sanders2017-05-231-18/+65
| | | | | | | | | | | | | | | | | | | | | | | | | OptForSize predicate. Summary: It's rare but a small number of patterns use IntInit's at the root of the match. On X86, one such rule is enabled by the OptForSize predicate and causes the compiler to use the smaller: %0 = MOV32r1 instead of the usual: %0 = MOV32ri 1 This patch adds support for matching IntInit's at the root and uses this as a test case for the optsize attribute that was implemented in r301750 Reviewers: qcolombet, ab, t.p.northover, rovka, kristof.beyls, aditya_nandakumar Reviewed By: qcolombet Subscribers: igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D32791 llvm-svn: 303678
* Revert r303259 - [globalisel][tablegen] Import rules containing ↵Daniel Sanders2017-05-221-22/+3
| | | | | | | | | | | intrinsic_wo_chain. It's causing some buildbots to timeout whenever tablegen needs re-compilation, particularly those with -fsanitize=memory but not only them. A compile time regression was expected since it triples the amount of SelectionDAG rules we are able to import but it's currently too high. llvm-svn: 303542
* [lit] Take the last error when executing pipelines.Zachary Turner2017-05-191-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This seems to have been present since the beginning of time, which is quite surprising. The symptom was this: Suppose you have a test with a run line that looks like this: RUN: foo | FileCheck %s foo prints some output and then due to a bug in the program it asserts. On Windows this results in the program returning a negative exit code. But if enough output had been printed already by the tool so that the FileCheck match would succeed then FileCheck would return 0, and because of bad logic in lit this 0 return value would overwrite the failed return value from previous items in the pipeline. This only happened with negative exit codes. The most sensible behavior is to just take whatever the first exit code is. There is no logical ordering defined on exit codes, so comparing with < and > does not make a lot of sense. Instead, as soon as we find the first non-successful return value, that should be the result of the entire expression. This fixes the issue, as now tests which fail on non-Windows platforms also fail for me on Windows as well. llvm-svn: 303440
* [git-llvm] Don't attempt to propget files that don't exist yet in SVNReid Kleckner2017-05-181-0/+2
| | | | | | svn propget will fail halfway through, and the patch will fail to apply. llvm-svn: 303359
* [MVT] add v1i1 MVTGuy Blank2017-05-181-0/+2
| | | | | | | | Adds the v1i1 MVT as a preparation for another commit (https://reviews.llvm.org/D32273) Differential Revision: https://reviews.llvm.org/D32540 llvm-svn: 303346
* Re-commit: [globalisel][tablegen] Import rules containing intrinsic_wo_chain.Daniel Sanders2017-05-181-3/+22
| | | | | | | | | | | | | | | | | | | | | Summary: As of this patch, 1018 out of 3938 rules are currently imported. Depends on D32275 Reviewers: qcolombet, kristof.beyls, rovka, t.p.northover, ab, aditya_nandakumar Reviewed By: qcolombet Subscribers: dberris, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D32278 The previous commit failed on test-suite/Bitcode/simd_ops/AArch64_halide_runtime.bc because isImmOperandEqual() assumed MO was a register operand and that's not always true. llvm-svn: 303341
* Revert "[globalisel][tablegen] Import rules containing intrinsic_wo_chain."Quentin Colombet2017-05-171-22/+3
| | | | | | | | | This reverts commit r303259. This breaks the GISel bot: http://lab.llvm.org:8080/green/job/Compiler_Verifiers_GlobalISEL/5163/consoleFull#-134276167849ba4694-19c4-4d7e-bec5-911270d8a58c llvm-svn: 303313
* Add back a dummy --use-processes.Rafael Espindola2017-05-171-0/+3
| | | | | | Some bots are using it. llvm-svn: 303282
* Always use the multiprocess module.Rafael Espindola2017-05-172-115/+3
| | | | | | This seems to work on freebsd and openbsd these days. llvm-svn: 303280
* [globalisel][tablegen] Import rules containing intrinsic_wo_chain.Daniel Sanders2017-05-171-3/+22
| | | | | | | | | | | | | | | | | Summary: As of this patch, 1018 out of 3938 rules are currently imported. Depends on D32275 Reviewers: qcolombet, kristof.beyls, rovka, t.p.northover, ab, aditya_nandakumar Reviewed By: qcolombet Subscribers: dberris, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D32278 llvm-svn: 303259
* [globalisel][tablegen] Require that all registers between instructions of a ↵Daniel Sanders2017-05-171-0/+2
| | | | | | | | | | | | | | | | | | | match are virtual. Summary: Without this, it's possible to encounter multiple defs for a register. This is triggered by the current version of D32868 when applied to trunk. Reviewers: qcolombet, ab, t.p.northover, rovka, kristof.beyls Reviewed By: qcolombet Subscribers: llvm-commits, igorb Differential Revision: https://reviews.llvm.org/D32869 llvm-svn: 303253
* Fixup r303240: Use llvm::to_string instead of std::to_stringDiana Picus2017-05-171-3/+3
| | | | | | | It turns out some of the buildbots don't have std::to_string around, even in this day and age... llvm-svn: 303243
* [GlobalISel][TableGen] Fix handling of default operandsDiana Picus2017-05-171-48/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | When looping through a destination pattern's operands to decide how many default operands we need to introduce, we used to count the "expanded" number of operands. So if one default operand would be rendered as 2 values, we'd count it as 2 operands, when in fact it needs to count as only 1 operand regardless of how many values it expands to. This turns out to be a problem only in some very specific cases, e.g. when we have one operand with multiple default values followed by more operands with default values (see the new test). In such a situation we'd stop looping before looking at all the operands, and then error out assuming that we don't have enough default operands to make up the shortfall. At the moment this only affects ARM. The patch removes the loop counting default operands entirely and assumes that we'll have to introduce values for any default operand that we find (i.e. we're assuming it cannot be given as a child at all). It also extracts the code for adding renderers for default operands into a helper method. Differential Revision: https://reviews.llvm.org/D33031 llvm-svn: 303240
* Added LLVM_DUMP_METHOD attributes for MatchableInfo::dump(). Defined it only ↵Galina Kistanova2017-05-171-1/+3
| | | | | | if dump is enabled. llvm-svn: 303229
* build_llvm_package.bat: Minor updatesHans Wennborg2017-05-151-4/+4
| | | | llvm-svn: 303080
* [TableGen] Add EncoderMethod to RegisterOperandSam Kolton2017-05-151-0/+1
| | | | | | | | Reviewers: stoklund, grosbach, vpykhtin Differential Revision: https://reviews.llvm.org/D32493 llvm-svn: 303044
* [git-llvm] Fix svn:eol-style issue for one-file patchesReid Kleckner2017-05-121-14/+19
| | | | llvm-svn: 302853
* [X86] Moving X86Local namespace from .cpp to .h file to use it in memory ↵Ayman Musa2017-05-112-124/+123
| | | | | | | | folding TableGen backend. Differential Revision: https://reviews.llvm.org/D32797 llvm-svn: 302791
* Adding VSCode syntax colorizer to utils (generated from textmate colorizer).Puyan Lotfi2017-05-098-0/+263
| | | | | | | | | | | | | | | | | | | --This line, and those below, will be igored-- A utils/vscode A utils/vscode/README A utils/vscode/tablegen A utils/vscode/tablegen/.vscode A utils/vscode/tablegen/.vscode/launch.json A utils/vscode/tablegen/CHANGELOG.md A utils/vscode/tablegen/README.md A utils/vscode/tablegen/language-configuration.json A utils/vscode/tablegen/package.json A utils/vscode/tablegen/syntaxes A utils/vscode/tablegen/syntaxes/TableGen.tmLanguage A utils/vscode/tablegen/vsc-extension-quickstart.md llvm-svn: 302553
* Fix comment typos.Geoff Berry2017-05-081-1/+1
| | | | llvm-svn: 302432
* Note addition of NetBSD support in googletestKamil Rytarowski2017-05-061-1/+1
| | | | | | Recreated patch for __NetBSD__ has been pushed upstream to Google. llvm-svn: 302329
* Add NetBSD to the list of platforms supporting death tests. Two unitJoerg Sonnenberger2017-05-052-1/+3
| | | | | | tests require this for compilation. llvm-svn: 302264
* [test-release] Status update *before* long gzipRenato Golin2017-05-041-5/+5
| | | | llvm-svn: 302165
* [IR] Abstract away ArgNo+1 attribute indexing as much as possibleReid Kleckner2017-05-031-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Do three things to help with that: - Add AttributeList::FirstArgIndex, which is an enumerator currently set to 1. It allows us to change the indexing scheme with fewer changes. - Add addParamAttr/removeParamAttr. This just shortens addAttribute call sites that would otherwise need to spell out FirstArgIndex. - Remove some attribute-specific getters and setters from Function that take attribute list indices. Most of these were only used from BuildLibCalls, and doesNotAlias was only used to test or set if the return value is malloc-like. I'm happy to split the patch, but I think they are probably easier to review when taken together. This patch should be NFC, but it sets the stage to change the indexing scheme to this, which is more convenient when indexing into an array: 0: func attrs 1: retattrs 2...: arg attrs Reviewers: chandlerc, pete, javed.absar Subscribers: david2050, llvm-commits Differential Revision: https://reviews.llvm.org/D32811 llvm-svn: 302060
* Support arbitrary address space pointers in masked gather/scatter intrinsics.Elad Cohen2017-05-031-5/+11
| | | | | | | | | | | | Fixes PR31789 - When loop-vectorize tries to use these intrinsics for a non-default address space pointer we fail with a "Calling a function with a bad singature!" assertion. This patch solves this by adding the 'vector of pointers' argument as an overloaded type which will determine the address space. Differential revision: https://reviews.llvm.org/D31490 llvm-svn: 302018
* [lit] Try to exit more cleanlyReid Kleckner2017-05-022-11/+25
| | | | | | | | | | | | | | | If all jobs complete successfully, use pool.close() instead of pool.terminate() before waiting for the workers. Zach Turner reported that he was getting "access denied" exceptions from pool.terminate(). Make the workers abort immediately without printing to stderr when they are interrupted. Finally, catch exceptions when attempting to remove our temporary testing directory. On abnormal exit, there can often be open handles that haven't been cleaned up yet. llvm-svn: 301941
* [ARM] GlobalISel: Use TableGen instruction selectorDiana Picus2017-05-021-3/+9
| | | | | | | | | | | Emit and use the TableGen instruction selector for ARM. At the moment, this allows us to remove the hand-written code for selecting G_SDIV and G_UDIV. Future commits will focus on increasing the code coverage for it and removing more dead code from the current instruction selector. llvm-svn: 301905
* [globalisel][tablegen] Silence unused variable warning.Daniel Sanders2017-04-291-1/+0
| | | | llvm-svn: 301755
* [globalisel][tablegen] Compute available feature bits correctly.Daniel Sanders2017-04-293-47/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Predicate<> now has a field to indicate how often it must be recomputed. Currently, there are two frequencies, per-module (RecomputePerFunction==0) and per-function (RecomputePerFunction==1). Per-function predicates are currently recomputed more frequently than necessary since the only predicate in this category is cheap to test. Per-module predicates are now computed in getSubtargetImpl() while per-function predicates are computed in selectImpl(). Tablegen now manages the PredicateBitset internally. It should only be necessary to add the required includes. Also fixed a problem revealed by the test case where constrainSelectedInstRegOperands() would attempt to tie operands that BuildMI had already tied. Reviewers: ab, qcolombet, t.p.northover, rovka, aditya_nandakumar Reviewed By: rovka Subscribers: kristof.beyls, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D32491 llvm-svn: 301750
OpenPOWER on IntegriCloud