summaryrefslogtreecommitdiffstats
path: root/llvm/utils
Commit message (Collapse)AuthorAgeFilesLines
* capture implicit uses and defs in CodeGenInstructionChris Lattner2010-03-182-0/+6
| | | | llvm-svn: 98879
* simplify this code, the # of sets in the pattern for an instructionChris Lattner2010-03-181-2/+1
| | | | | | shouldn't change this. llvm-svn: 98872
* disallow concatenation of two dags with different operators.Chris Lattner2010-03-181-12/+2
| | | | llvm-svn: 98871
* rewrite this to not artificially force concat the ins/outs list.Chris Lattner2010-03-181-13/+20
| | | | llvm-svn: 98870
* eliminate support for "ops" in the input/output list of anChris Lattner2010-03-181-4/+2
| | | | | | instruction. Instructions must use 'ins' and 'outs' now. llvm-svn: 98868
* remove some code that was working around old sparc v9 backend bugs.Chris Lattner2010-03-183-22/+24
| | | | | | Add checking that the input/output operand list in spelled right. llvm-svn: 98865
* lit: Tweak example tests config.Daniel Dunbar2010-03-181-33/+0
| | | | llvm-svn: 98859
* MC/AsmMatcher: Add support for target specific "instruction cleanup" functions,Daniel Dunbar2010-03-181-5/+11
| | | | | | to allow custom post-processing of matched instructions. llvm-svn: 98857
* Add an extra newline to separate PP directives from the contentsKovarththanan Rajaratnam2010-03-181-1/+1
| | | | llvm-svn: 98820
* Avoid a problem in libc_freeres() seen on a linux-i686 buildbot when runningJeffrey Yasskin2010-03-182-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | under valgrind: ==19577== Invalid free() / delete / delete[] ==19577== at 0x4C9C866: free (vg_replace_malloc.c:325) ==19577== by 0x5121104: ??? (in /lib/libc-2.10.2.so) ==19577== by 0x4C97412: _vgnU_freeres (vg_preloaded.c:62) ==19577== by 0x5041486: __run_exit_handlers (exit.c:93) ==19577== by 0x50414FE: exit (exit.c:100) ==19577== by 0x5028B5C: (below main) (libc-start.c:254) ==19577== Address 0xffffffff is not stack'd, malloc'd or (recently) free'd ==19577== Apparently this happens under certain versions of glibc, so valgrind provides the --run-libc-freeres=no option to avoid calling freeres(). This may increase the number of "still reachable" blocks valgrind reports, but we don't care about those, while this error breaks the buildbots. There are upstream bugs about this at http://sourceware.org/bugzilla/show_bug.cgi?id=10610 and http://bugs.kde.org/show_bug.cgi?id=167483, but they don't look likely to be fixed. llvm-svn: 98813
* Use llvm-gcc to build ARM when it's availableJim Grosbach2010-03-171-4/+3
| | | | llvm-svn: 98770
* Make lit pay attention to --vg for tcl tests too, which makes it work on LLVM'sJeffrey Yasskin2010-03-171-0/+12
| | | | | | non-unit tests. llvm-svn: 98741
* --- Reverse-merging r98637 into '.':Bob Wilson2010-03-164-1807/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | U test/CodeGen/ARM/tls2.ll U test/CodeGen/ARM/arm-negative-stride.ll U test/CodeGen/ARM/2009-10-30.ll U test/CodeGen/ARM/globals.ll U test/CodeGen/ARM/str_pre-2.ll U test/CodeGen/ARM/ldrd.ll U test/CodeGen/ARM/2009-10-27-double-align.ll U test/CodeGen/Thumb2/thumb2-strb.ll U test/CodeGen/Thumb2/ldr-str-imm12.ll U test/CodeGen/Thumb2/thumb2-strh.ll U test/CodeGen/Thumb2/thumb2-ldr.ll U test/CodeGen/Thumb2/thumb2-str_pre.ll U test/CodeGen/Thumb2/thumb2-str.ll U test/CodeGen/Thumb2/thumb2-ldrh.ll U utils/TableGen/TableGen.cpp U utils/TableGen/DisassemblerEmitter.cpp D utils/TableGen/RISCDisassemblerEmitter.h D utils/TableGen/RISCDisassemblerEmitter.cpp U Makefile.rules U lib/Target/ARM/ARMInstrNEON.td U lib/Target/ARM/Makefile U lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp U lib/Target/ARM/AsmPrinter/ARMInstPrinter.h D lib/Target/ARM/Disassembler U lib/Target/ARM/ARMInstrFormats.td U lib/Target/ARM/ARMAddressingModes.h U lib/Target/ARM/Thumb2ITBlockPass.cpp llvm-svn: 98640
* Initial ARM/Thumb disassembler check-in. It consists of a tablgen backendJohnny Chen2010-03-164-0/+1807
| | | | | | | | | | | | | | | | | | (RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb, and the disassembler core which invokes the decoder function and builds up the MCInst based on the decoded Opcode. Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm instructions to help disassembly. We also changed the output of the addressing modes to omit the '+' from the assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60. And modified test cases to not expect '+' in +reg or #+num. For example, ; CHECK: ldr.w r9, [r7, #28] llvm-svn: 98637
* NNT: Add -nouname option, so machine uniquing can occur across physical ↵Daniel Dunbar2010-03-161-6/+17
| | | | | | machines. llvm-svn: 98633
* don't form a RecordChild or CheckChildType for child #'s over 7, we don'tChris Lattner2010-03-161-3/+5
| | | | | | have enums for them. llvm-svn: 98597
* eliminate some #if 0 code I added in r96905, type inference Chris Lattner2010-03-151-18/+0
| | | | | | now enforces that input/output named values have hte same type. llvm-svn: 98535
* Completely rewrite tblgen's type inference mechanism,Chris Lattner2010-03-157-458/+733
| | | | | | | | | | | | | | | | | | | | | | | | changing the primary datastructure from being a "std::vector<unsigned char>" to being a new TypeSet class that actually has (gasp) invariants! This changes more things than I remember, but one major innovation here is that it enforces that named input values agree in type with their output values. This also eliminates code that transparently assumes (in some cases) that SDNodeXForm input/output types are the same, because this is wrong in many case. This also eliminates a bug which caused a lot of ambiguous patterns to go undetected, where a register class would sometimes pick the first possible type, causing an ambiguous pattern to get arbitrary results. With all the recent target changes, this causes no functionality change! llvm-svn: 98534
* Check in tablegen changes to fix disassembler related failures caused by r98465.Evan Cheng2010-03-142-0/+5
| | | | llvm-svn: 98468
* Make lit pay attention to --vg for unittests too.Jeffrey Yasskin2010-03-131-0/+8
| | | | llvm-svn: 98449
* update mkpatch for MC, patch by Aaron GrayChris Lattner2010-03-121-1/+1
| | | | llvm-svn: 98334
* Continue propagating the GoogleTest flags until we can update our version toChandler Carruth2010-03-092-1/+8
| | | | | | | eliminate this problem. This will hopefully let us make progress on Linux bootstrapping. llvm-svn: 98095
* Consolidate GoogleTest make options and duplicate them to its own makefile.Chandler Carruth2010-03-091-0/+9
| | | | llvm-svn: 98074
* Revert r97726 and r97728 at ddunbar's request; we want to solve thisJohn McCall2010-03-082-23/+3
| | | | | | some other way when it comes to be necessary. llvm-svn: 97972
* Node arguments to type casts can have names too. This codeChris Lattner2010-03-081-0/+8
| | | | | | | | | | | needs to be majorly refactored, but this spot bugfix allows things like: def vmrghw_shuffle : PatFrag<(ops node:$lhs, node:$rhs), (vector_shuffle (v4i32 node:$lhs), node:$rhs), [{ ... llvm-svn: 97952
* turn off debug spewChris Lattner2010-03-071-2/+2
| | | | llvm-svn: 97912
* more factoring.Chris Lattner2010-03-072-32/+34
| | | | llvm-svn: 97911
* teach tblgen to be more aggressive when factoring CheckType nodes.Chris Lattner2010-03-071-29/+95
| | | | | | | | | | | | | | | | | | | | | | Now it will factor things like this: CheckType i32 ... CheckOpcode ISD::AND CheckType i64 ... into: SwitchType: i32: ... i64: CheckOpcode ISD::AND ... This shrinks hte table by a few bytes, nothing spectacular. llvm-svn: 97908
* add some helper functions and implement isContradictory Chris Lattner2010-03-072-0/+99
| | | | | | | | for CheckValueTypeMatcher. The isContradictory implementation helps us factor better, shrinking x86 table from 79144 -> 78896 bytes. llvm-svn: 97905
* If LD_LIBRARY_PATH is set in the system environment, use it.Duncan Sands2010-03-051-0/+1
| | | | llvm-svn: 97796
* Make it not an error to specify -O* options several times.Mikhail Glushenkov2010-03-051-19/+57
| | | | | | As in 'llvmc -O2 -O2 test.c'. llvm-svn: 97787
* Simplify the condition-checking logic and hopefully clear up a build failureJohn McCall2010-03-041-14/+7
| | | | | | that somehow got through my testing. llvm-svn: 97728
* Teach lit to honor conditional directives. The syntax is:John McCall2010-03-042-3/+30
| | | | | | | | | | | | | | | | IF(condition(value)): If the value satisfies the condition, the line is processed by lit; otherwise it is skipped. A test with no unignored directives is resolved as Unsupported. The test suite is responsible for defining conditions; conditions are unary functions over strings. I've defined two conditions in the LLVM test suite, TARGET (with values like those in TARGETS_TO_BUILD) and BINDING (with values like those in llvm_bindings). So for example you can write: IF(BINDING(ocaml)): RUN: %blah %s -o - and the RUN line will only execute if LLVM was configured with the ocaml bindings. llvm-svn: 97726
* so hey, it turns out that the histogram was completely wrong, becauseChris Lattner2010-03-041-10/+32
| | | | | | | we sometimes emit nodes multiple times to string buffers to size them. Compute the histogram correctly. llvm-svn: 97708
* zap fixme.Chris Lattner2010-03-041-4/+0
| | | | llvm-svn: 97705
* now that complexpatterns are all emitted at the end of the matchChris Lattner2010-03-041-4/+3
| | | | | | | | sequence, just emit instruction predicates right before them. This exposes yet more factoring opportunitites, shrinking the X86 table to 79144 bytes. llvm-svn: 97704
* change the new isel matcher to emit ComplexPattern matchesChris Lattner2010-03-043-37/+92
| | | | | | | | | | as the very last thing before node emission. This should dramatically reduce the number of times we do 'MatchAddress' on X86, speeding up compile time. This also improves comments in the tables and shrinks the table a bit, now down to 80506 bytes for x86. llvm-svn: 97703
* enhance comment output to specify what recorded slotChris Lattner2010-03-043-5/+12
| | | | | | numbers a ComplexPat will match into. llvm-svn: 97696
* introduce a new SwitchTypeMatcher node (which is analogous toChris Lattner2010-03-034-21/+111
| | | | | | | | SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This speeds up selection, particularly for X86 which has lots of variants of instructions with only type differences. llvm-svn: 97645
* Fix comment.Bill Wendling2010-03-031-1/+1
| | | | llvm-svn: 97644
* Don't turn assertions on by default.Bill Wendling2010-03-031-1/+1
| | | | llvm-svn: 97623
* the sorting predicate should work for comparing an elementChris Lattner2010-03-021-1/+1
| | | | | | to itself, even though this isn't wildly useful. llvm-svn: 97574
* eliminate CodeGen/DAGISelHeader.h, it is empty now.Chris Lattner2010-03-021-4/+0
| | | | llvm-svn: 97556
* Rewrite chain handling validation and input TokenFactor handlingChris Lattner2010-03-024-58/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | stuff now that we don't care about emulating the old broken behavior of the old isel. This eliminates the 'CheckChainCompatible' check (along with IsChainCompatible) which did an incorrect and inefficient scan *up* the chain nodes which happened as the pattern was being formed and does the validation at the end in HandleMergeInputChains when it forms a structural pattern. This scans "down" the graph, which means that it is quickly bounded by nodes already selected. This also handles token factors that get "trapped" in the dag. Removing the CheckChainCompatible nodes also shrinks the generated tables by about 6K for X86 (down to 83K). There are two pieces remaining before I can nuke PreprocessRMW: 1. I xfailed a test because we're now producing worse code in a case that has nothing to do with the change: it turns out that our use of MorphNodeTo will leave dead nodes in the graph which (depending on how the graph is walked) end up causing bogus uses of chains and blocking matches. This is really bad for other reasons, so I'll fix this in a follow-up patch. 2. CheckFoldableChainNode needs to be improved to handle the TF. llvm-svn: 97539
* add some missing \n'sChris Lattner2010-03-021-11/+19
| | | | llvm-svn: 97527
* fixme resolved.Chris Lattner2010-03-011-3/+0
| | | | llvm-svn: 97517
* remove a little hack I did for the old isel, not neededChris Lattner2010-03-011-4/+0
| | | | | | now that it is gone. llvm-svn: 97516
* resolve some fixmesChris Lattner2010-03-011-10/+3
| | | | llvm-svn: 97515
* resolve a fixme and simplify code by moving insertion of theChris Lattner2010-03-011-18/+8
| | | | | | | | EmitMergeInputChainsMatcher node up into EmitResultCode. This doesn't have much of an effect on the generated code, the X86 table is exactly the same size. llvm-svn: 97514
* resolve a fixme by having the .td file parser reject thigns likeChris Lattner2010-03-014-12/+14
| | | | | | | | (set GPR, somecomplexpattern) if somecomplexpattern doesn't declare what it can match. llvm-svn: 97513
OpenPOWER on IntegriCloud