summaryrefslogtreecommitdiffstats
path: root/llvm/utils
Commit message (Collapse)AuthorAgeFilesLines
* redisable this to save people a small amount of build time.Chris Lattner2010-02-171-1/+1
| | | | llvm-svn: 96497
* move isOnlyReachableByFallthrough out of MachineBasicBlock into AsmPrinter,Chris Lattner2010-02-171-1/+1
| | | | | | | and add a sparc implementation that knows about delay slots. Patch by Nathan Keynes! llvm-svn: 96492
* reduce nesting.Chris Lattner2010-02-171-3/+7
| | | | llvm-svn: 96466
* improve comments, the matcher is now feature complete, on to codegen.Chris Lattner2010-02-171-1/+5
| | | | llvm-svn: 96464
* sink special case "cannotyetselect" for intrinsics out of the Chris Lattner2010-02-171-14/+2
| | | | | | tblgen splatted code into the implementation. llvm-svn: 96460
* Emulate the current isel's "IsChainCompatible" logic for now.Chris Lattner2010-02-174-5/+48
| | | | | | | I'd like to eventually rip it out, but for now producing the same selections as the old matcher is more important. llvm-svn: 96458
* properly record chain inputs to complex patterns,Chris Lattner2010-02-171-6/+13
| | | | | | resolving a fixme. llvm-svn: 96457
* simplify IsChainCompatible codegen, add comments. no Chris Lattner2010-02-171-4/+2
| | | | | | functionality change. llvm-svn: 96453
* Prep work to handle input chains of matched patterns and checking forChris Lattner2010-02-171-4/+28
| | | | | | | 'ischaincompatible' when a pattern has more than one input chain. Need to do some commenting and cleanup now that I understand how this works. llvm-svn: 96443
* record input chains.Chris Lattner2010-02-171-0/+9
| | | | llvm-svn: 96437
* prefix captured value names with $ so they look likeChris Lattner2010-02-172-5/+4
| | | | | | | variables. Use the fancy OpNo variable instead of i, which has the right index including chains. llvm-svn: 96436
* improve comments on OPC_Record to say what we're recording a node.Chris Lattner2010-02-173-3/+11
| | | | llvm-svn: 96433
* improve comments in generated matcher a bit.Chris Lattner2010-02-171-12/+12
| | | | llvm-svn: 96422
* make the new isel generator plop out a CheckComplexPattern functionChris Lattner2010-02-174-6/+52
| | | | | | | for evaluating complex patterns. Some cleanup has to happen before this can be used though. llvm-svn: 96419
* fix inverted condition.Chris Lattner2010-02-171-1/+3
| | | | llvm-svn: 96416
* complex patterns don't get 'record' nodes, they implicitlyChris Lattner2010-02-161-1/+20
| | | | | | record all their results. llvm-svn: 96412
* clean up some code, eliminate NodeIsComplexPattern, whichChris Lattner2010-02-161-18/+5
| | | | | | does the same thing as getComplexPatternInfo. llvm-svn: 96411
* fix indentationChris Lattner2010-02-161-62/+66
| | | | llvm-svn: 96409
* fix rdar://7653908, a crash on a case where we would fold a loadChris Lattner2010-02-162-40/+27
| | | | | | | | | | into a roundss intrinsic, producing a cyclic dag. The root cause of this is badness handling ComplexPattern nodes in the old dagisel that I noticed through inspection. Eliminate a copy of the of the code that handled ComplexPatterns by making EmitChildMatchCode call into EmitMatchCode. llvm-svn: 96408
* simplify this code. In the new world order there is noChris Lattner2010-02-161-27/+24
| | | | | | need to scan the entire subtree of the pattern anymore. llvm-svn: 96369
* convert the new matcher to check intermediate nodes for a singleChris Lattner2010-02-164-38/+14
| | | | | | | | | use and only call IsProfitableToFold/IsLegalToFold on the load being folded, like the old dagiselemitter does. This substantially simplifies the code and improves opportunities for sharing. llvm-svn: 96368
* change dag isel emitter to only call 'IsProfitableToFold' on nodesChris Lattner2010-02-161-3/+13
| | | | | | | | with chains. On interior nodes that lead up to them, we just directly check that there is a single use. This generates slightly more efficient code. llvm-svn: 96366
* mark all the generated node predicates 'const'.Chris Lattner2010-02-161-2/+2
| | | | llvm-svn: 96337
* generate code for node and pattern predicates. Note that this won'tChris Lattner2010-02-162-12/+60
| | | | | | | build if enabled, it will fail with constness issues. I'll resolve these next. llvm-svn: 96336
* refactor some code into a local class.Chris Lattner2010-02-161-14/+22
| | | | llvm-svn: 96334
* remove now dead code and fixme.Chris Lattner2010-02-162-4/+0
| | | | llvm-svn: 96333
* remove dead code. This is never generated for any targets in mainline.Chris Lattner2010-02-161-15/+0
| | | | llvm-svn: 96332
* add support for the new isel matcher to generate Chris Lattner2010-02-166-11/+107
| | | | | | (isprofitable|islegal)tofold checks. llvm-svn: 96331
* Split SelectionDAGISel::IsLegalAndProfitableToFold toEvan Cheng2010-02-151-4/+6
| | | | | | | | IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use. This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses. llvm-svn: 96255
* Check in the first big step of rewriting DAGISelEmitter to Chris Lattner2010-02-156-2/+1001
| | | | | | | | | | | | | | | | | | | produce a table based matcher instead of gobs of C++ Code. Though it's not done yet, the shrinkage seems promising, the table for the X86 ISel is 75K and still has a lot of optimization to come (compare to the ~1.5M of .o generated the old way, much of which will go away). The code is currently disabled by default (the #if 0 in DAGISelEmitter.cpp). When enabled it generates a dead SelectCode2 function in the DAGISel Header which will eventually replace SelectCode. There is still a lot of stuff left to do, which are documented with a trail of FIXMEs. llvm-svn: 96215
* Revert r96130 ("Forward parameter options as '-option=param'").Mikhail Glushenkov2010-02-151-2/+2
| | | | | | This behaviour must be configurable. llvm-svn: 96210
* constizeChris Lattner2010-02-142-4/+4
| | | | llvm-svn: 96199
* clean up a bunch of code, move some random predicatesChris Lattner2010-02-143-101/+110
| | | | | | on TreePatternNode to be methods on TreePatternNode. llvm-svn: 96197
* remove the DisablePatternForFastISel predicate, which is a checkChris Lattner2010-02-141-24/+3
| | | | | | | | that predated -fast-isel which attempted to speed up the dag pattern matchers at -O0. Since fast-isel is around, this is basically obsolete and removing it shrinks the generated dag isels. llvm-svn: 96188
* add an insertion operator.Chris Lattner2010-02-141-0/+5
| | | | llvm-svn: 96187
* tidy upChris Lattner2010-02-141-2/+4
| | | | llvm-svn: 96186
* Forward parameter options as '-option=parameter'.Mikhail Glushenkov2010-02-131-2/+2
| | | | | | | Some tools do not like the '-option parameter' form. Should this be configurable? llvm-svn: 96130
* pull a bunch of huge inline methods in the PatternCodeEmitter Chris Lattner2010-02-131-866/+890
| | | | | | class out of line. llvm-svn: 96113
* Added the rdtscp instruction to the x86 instructionSean Callanan2010-02-131-1/+2
| | | | | | tables. llvm-svn: 96073
* Fixed encodings for invlpg, invept, and invvpid.Sean Callanan2010-02-131-32/+7
| | | | llvm-svn: 96065
* remove special cases for vmlaunch, vmresume, vmxoff, and swapgsChris Lattner2010-02-131-8/+8
| | | | | | fix swapgs to be spelled right. llvm-svn: 96058
* Remove special cases for [LM]FENCE, MONITOR and MWAIT fromChris Lattner2010-02-121-3/+0
| | | | | | encoder and decoder by using new MRM_ forms. llvm-svn: 96048
* Reworked the Intel disassembler to support instructionsSean Callanan2010-02-121-17/+51
| | | | | | | | | | | | whose opcodes extend into the ModR/M field using the Form field of the instruction rather than by special casing each instruction. Commented out the special casing of VMCALL, which is the first instruction to use this special form. While I was in the neighborhood, added a few comments for people modifying the Intel disassembler. llvm-svn: 96043
* add a bunch of mod/rm encoding types for fixed mod/rm bytes.Chris Lattner2010-02-121-2/+3
| | | | | | | This will work better for the disassembler for modeling things like lfence/monitor/vmcall etc. llvm-svn: 95960
* MC: Fix bug where trailing tied operands were forgotten; the X86 assemblerDaniel Dunbar2010-02-121-19/+43
| | | | | | | | | matcher is now free of implicit operands! - Still need to clean up the code now that we don't to worry about implicit operands, and to make it a hard error if an instruction fails to specify all of its operands for some reason. llvm-svn: 95956
* enhance llvm-mc -show-inst to print the enum of an instruction, like so:Chris Lattner2010-02-112-0/+45
| | | | | | | | | | testb %al, %al ## <MCInst #2412 TEST8rr ## <MCOperand Reg:2> ## <MCOperand Reg:2>> jne LBB1_7 ## <MCInst #938 JNE_1 ## <MCOperand Expr:(LBB1_7)>> llvm-svn: 95935
* work around a gcc bug with -Wuninitialized.Chris Lattner2010-02-101-0/+1
| | | | llvm-svn: 95808
* lit: Ignore dot files when scanning for tests (e.g., editor temprary files,Daniel Dunbar2010-02-101-1/+6
| | | | | | etc.) llvm-svn: 95803
* MC/AsmMatcher: Tweak conversion function name.Daniel Dunbar2010-02-101-1/+1
| | | | llvm-svn: 95802
* MC/AsmMatcher: Add support for creating tied operands when constructing MCInsts.Daniel Dunbar2010-02-101-9/+67
| | | | | | | - Pretty messy, but we need to rework how we handle tied operands in MCInst anyway. llvm-svn: 95774
OpenPOWER on IntegriCloud