summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Move M_* flags down in the file. Move SchedClass up in the Chris Lattner2008-01-072-60/+61
| | | | | | | TargetInstrDescriptor class and shrink to 16-bits, saving a word in TargetInstrDescriptor. Add some comments. llvm-svn: 45686
* remove a dead field.Chris Lattner2008-01-071-1/+0
| | | | llvm-svn: 45685
* the name field of instructions is never set to a non-empty string, Chris Lattner2008-01-073-17/+3
| | | | | | just unconditionally use the def name of the instruction. llvm-svn: 45684
* no need to explicitly clear these fields.Chris Lattner2008-01-072-2/+0
| | | | llvm-svn: 45683
* Fix typoNate Begeman2008-01-071-1/+1
| | | | llvm-svn: 45682
* Removing a leaked file.Gordon Henriksen2008-01-071-6/+1
| | | | llvm-svn: 45681
* Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptorChris Lattner2008-01-0718-123/+115
| | | | llvm-svn: 45680
* remove MachineOpCode typedef.Chris Lattner2008-01-078-14/+8
| | | | llvm-svn: 45679
* remove some uses of MachineOpCode, move getSchedClass Chris Lattner2008-01-072-22/+22
| | | | | | into TargetInstrDescriptor from TargetInstrInfo. llvm-svn: 45678
* Add predicates methods to TargetOperandInfo, and switch all clients Chris Lattner2008-01-076-29/+42
| | | | | | | over to using them, instead of diddling Flags directly. Change the various flags from const variables to enums. llvm-svn: 45677
* Setting GlobalDirective in TargetAsmInfo by default rather thanGordon Henriksen2008-01-075-1/+240
| | | | | | | providing a misleading facility. It's used once in the MIPS backend and hardcoded as "\t.globl\t" everywhere else. llvm-svn: 45676
* Deleting an empty file. Thanks, /usr/bin/patch!Gordon Henriksen2008-01-071-0/+0
| | | | llvm-svn: 45675
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-0731-226/+154
| | | | | | | | | | | | | | | that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
* Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.Owen Anderson2008-01-075-12/+14
| | | | llvm-svn: 45673
* Move even more functionality from MRegisterInfo into TargetInstrInfo.Owen Anderson2008-01-0730-1630/+1599
| | | | | | Some day I'll get it all moved over... llvm-svn: 45672
* Ammending r45669 with a missing file.Gordon Henriksen2008-01-071-4/+23
| | | | llvm-svn: 45671
* With this patch, the LowerGC transformation becomes theGordon Henriksen2008-01-077-373/+478
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ShadowStackCollector, which additionally has reduced overhead with no sacrifice in portability. Considering a function @fun with 8 loop-local roots, ShadowStackCollector introduces the following overhead (x86): ; shadowstack prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl $___gc_fun, 20(%esp) movl $0, 24(%esp) movl $0, 28(%esp) movl $0, 32(%esp) movl $0, 36(%esp) movl $0, 40(%esp) movl $0, 44(%esp) movl $0, 48(%esp) movl $0, 52(%esp) movl %ecx, 16(%esp) leal 16(%esp), %ecx movl %ecx, (%eax) ; shadowstack loop overhead (none) ; shadowstack epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; shadowstack metadata .align 3 ___gc_fun: # __gc_fun .long 8 .space 4 In comparison to LowerGC: ; lowergc prologue movl L_llvm_gc_root_chain$non_lazy_ptr, %eax movl (%eax), %ecx movl %ecx, 48(%esp) movl $8, 52(%esp) movl $0, 60(%esp) movl $0, 56(%esp) movl $0, 68(%esp) movl $0, 64(%esp) movl $0, 76(%esp) movl $0, 72(%esp) movl $0, 84(%esp) movl $0, 80(%esp) movl $0, 92(%esp) movl $0, 88(%esp) movl $0, 100(%esp) movl $0, 96(%esp) movl $0, 108(%esp) movl $0, 104(%esp) movl $0, 116(%esp) movl $0, 112(%esp) ; lowergc loop overhead leal 44(%esp), %eax movl %eax, 56(%esp) leal 40(%esp), %eax movl %eax, 64(%esp) leal 36(%esp), %eax movl %eax, 72(%esp) leal 32(%esp), %eax movl %eax, 80(%esp) leal 28(%esp), %eax movl %eax, 88(%esp) leal 24(%esp), %eax movl %eax, 96(%esp) leal 20(%esp), %eax movl %eax, 104(%esp) leal 16(%esp), %eax movl %eax, 112(%esp) ; lowergc epilogue movl 48(%esp), %edx movl %edx, (%ecx) ; lowergc metadata (none) llvm-svn: 45670
* Enabling the target-independent garbage collection infrastructure by hooking itGordon Henriksen2008-01-077-11/+71
| | | | | | | | | up to the various compiler pipelines. This doesn't actually add support for any GC algorithms, which means it temporarily breaks a few tests. To be fixed shortly. llvm-svn: 45669
* The pic base can't be duplicated.Chris Lattner2008-01-061-1/+1
| | | | llvm-svn: 45668
* rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.Chris Lattner2008-01-0626-61/+72
| | | | llvm-svn: 45667
* rearrange some code.Chris Lattner2008-01-061-11/+16
| | | | llvm-svn: 45666
* some simplifications/cleanups to ?: sema.Chris Lattner2008-01-061-14/+21
| | | | llvm-svn: 45665
* Emit warnings like "dereferencing void pointer" instead of trying to Chris Lattner2008-01-062-4/+3
| | | | | | pretty print the type name for void. llvm-svn: 45664
* Modify Makefile.rules to allow makefiles to prepend to C.Flags andGordon Henriksen2008-01-062-10/+11
| | | | | | fiends. Change Makefile.ocaml to not touch CFLAGS. llvm-svn: 45663
* improve description of alignment, patch by Alain Frisch.Chris Lattner2008-01-061-0/+20
| | | | llvm-svn: 45662
* Fix typo noticed by 'Danny' in PR1901Chris Lattner2008-01-061-1/+1
| | | | llvm-svn: 45661
* back out accidental commit.Chris Lattner2008-01-061-6/+0
| | | | llvm-svn: 45660
* fix an accidental commit that broke all the testers :(Chris Lattner2008-01-061-1/+0
| | | | llvm-svn: 45659
* The transform that tries to turn calls to bitcast functions intoDuncan Sands2008-01-066-90/+97
| | | | | | | | | direct calls bails out unless caller and callee have essentially equivalent parameter attributes. This is illogical - the callee's attributes should be of no relevance here. Rework the logic, which incidentally fixes a crash when removed arguments have attributes. llvm-svn: 45658
* When transforming a call to a bitcast function intoDuncan Sands2008-01-065-47/+105
| | | | | | | | | | | a direct call with cast parameters and cast return value (if any), instcombine was prepared to cast any non-void return value into any other, whether castable or not. Add a new predicate for testing whether casting is valid, and check it both for the return value and (as a cleanup) for the parameters. llvm-svn: 45657
* rename isStore -> mayStore to more accurately reflect what it captures.Chris Lattner2008-01-0617-37/+45
| | | | llvm-svn: 45656
* Remove an unused variable.Duncan Sands2008-01-061-1/+0
| | | | llvm-svn: 45655
* Change the 'isStore' inferrer to look for 'SDNPMayStore' Chris Lattner2008-01-0610-228/+248
| | | | | | | | | | | instead of "ISD::STORE". This allows us to mark target-specific dag nodes as storing (such as ppc byteswap stores). This allows us to remove more explicit isStore flags from the .td files. Finally, add a warning for when a .td file contains an explicit isStore and tblgen is able to infer it. llvm-svn: 45654
* remove explicit isStore flags that are now inferrable.Chris Lattner2008-01-063-6/+3
| | | | llvm-svn: 45653
* remove some isStore flags that are now inferred automatically.Chris Lattner2008-01-063-6/+9
| | | | llvm-svn: 45652
* describe isStore and simplify the implementation of hasUnmodelledSideEffects.Chris Lattner2008-01-061-2/+12
| | | | | | No functionality change. llvm-svn: 45651
* set the 'isstore' flag for instructions whose pattern is an Chris Lattner2008-01-063-14/+35
| | | | | | intrinsic that writes to memory. llvm-svn: 45650
* Accept both %y, %x and %x, %y as valid answers.Nick Lewycky2008-01-061-1/+1
| | | | llvm-svn: 45649
* remove some old hacky code that tried to infer whether a store Chris Lattner2008-01-062-20/+50
| | | | | | | | | | | occured in a pattern, but failed miserably. The new code works for any instruction that has a store in its pattern, including all the x86 mem op mem instructions. The only target-independent code that uses this is branch folding, so this won't change anything in practice. llvm-svn: 45648
* rearrange some code to allow inferring instr info from the pattern of the ↵Chris Lattner2008-01-062-34/+56
| | | | | | instr, but don't do so yet. llvm-svn: 45647
* improve const correctness.Chris Lattner2008-01-063-3/+3
| | | | llvm-svn: 45646
* Split the impl of CodeGenInstruction out to its own .cpp file, add a ↵Chris Lattner2008-01-063-265/+287
| | | | | | getName() accessor. llvm-svn: 45645
* final cleanups.Chris Lattner2008-01-062-9/+8
| | | | llvm-svn: 45644
* further simplifications and cleanupChris Lattner2008-01-062-39/+65
| | | | llvm-svn: 45643
* simplify some codeChris Lattner2008-01-062-19/+12
| | | | llvm-svn: 45642
* rename CodegenDAGPatterns -> CodeGenDAGPatternsChris Lattner2008-01-064-53/+53
| | | | llvm-svn: 45641
* split enum emission out from InstrInfoEmitter into it's own tblgen backend.Chris Lattner2008-01-065-39/+89
| | | | llvm-svn: 45640
* fix build on case sensitive file systems.Chris Lattner2008-01-051-3/+1
| | | | llvm-svn: 45639
* Fix comment.Bill Wendling2008-01-051-2/+1
| | | | llvm-svn: 45638
* make this build with newer gcc'sChris Lattner2008-01-051-2/+1
| | | | llvm-svn: 45637
OpenPOWER on IntegriCloud