summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Fix the MASM asmprinter's lies. It does not want to emit code to .text/.dataChris Lattner2006-05-094-7/+17
| | | | | | it wants it emitted to _text/_data. llvm-svn: 28185
* Split SwitchSection into SwitchTo{Text|Data}Section methods.Chris Lattner2006-05-097-47/+50
| | | | llvm-svn: 28184
* Some notes and thoughts to myselfChris Lattner2006-05-091-7/+7
| | | | llvm-svn: 28182
* Another bad case I noticedChris Lattner2006-05-081-0/+37
| | | | llvm-svn: 28177
* add a noteChris Lattner2006-05-081-0/+9
| | | | llvm-svn: 28176
* Yet more readme updatingNate Begeman2006-05-081-36/+22
| | | | llvm-svn: 28172
* New note about something bad happening in target independent optimizersNate Begeman2006-05-081-2/+18
| | | | llvm-svn: 28170
* Proving once again that I am not as smart as the compilerNate Begeman2006-05-081-2/+1
| | | | llvm-svn: 28169
* Fold more shifts into inserts, and update the READMENate Begeman2006-05-082-20/+34
| | | | llvm-svn: 28168
* When tracking demanded bits, if any bits from the sext of an SRA are demanded,Chris Lattner2006-05-081-2/+8
| | | | | | then so is the input sign bit. This fixes mediabench/g721 on X86. llvm-svn: 28166
* Fixing truncate. Previously we were emitting truncate from r16 to r8 asEvan Cheng2006-05-087-25/+100
| | | | | | | | | | | | | | | | | | | | | | | | movw. That is we promote the destination operand to r16. So %CH = TRUNC_R16_R8 %BP is emitted as movw %bp, %cx. This is incorrect. If %cl is live, it would be clobbered. Ideally we want to do the opposite, that is emitted it as movb ??, %ch But this is not possible since %bp does not have a r8 sub-register. We are now defining a new register class R16_ which is a subclass of R16 containing only those 16-bit registers that have r8 sub-registers (i.e. AX - DX). We isel the truncate to two instructions, a MOV16to16_ to copy the value to the R16_ class, followed by a TRUNC_R16_R8. Due to bug 770, the register colaescer is not going to coalesce between R16 and R16_. That will be fixed later so we can eliminate the MOV16to16_. Right now, it can only be eliminated if we are lucky that source and destination registers are the same. llvm-svn: 28164
* Update some stuff now that the new rlwimi code has gone inNate Begeman2006-05-082-70/+0
| | | | llvm-svn: 28162
* Typo'sEvan Cheng2006-05-071-2/+2
| | | | llvm-svn: 28158
* New rlwimi implementation, which is superior to the old one. There areNate Begeman2006-05-071-86/+45
| | | | | | | | still a couple missed optimizations, but we now generate all the possible rlwimis for multiple inserts into the same bitfield. More regression tests to come. llvm-svn: 28156
* Use ComputeMaskedBits to determine # sign bits as a fallback. This allows usChris Lattner2006-05-061-2/+23
| | | | | | | to handle all kinds of stuff, including silly things like: sextinreg(setcc,i16) -> setcc. llvm-svn: 28155
* Add some more sign propagation casesChris Lattner2006-05-061-10/+77
| | | | llvm-svn: 28154
* Add some more simple sign bit propagation cases.Chris Lattner2006-05-061-27/+67
| | | | llvm-svn: 28149
* Fix some loose ends in MASM support.Jeff Cohen2006-05-062-60/+72
| | | | llvm-svn: 28148
* Add some really really simple code for computing sign-bit propagation.Chris Lattner2006-05-061-0/+95
| | | | | | This will certainly be enhanced in the future. llvm-svn: 28145
* Teach the X86 backend about non-i32 inline asm register classes.Chris Lattner2006-05-061-5/+25
| | | | llvm-svn: 28139
* Fold (trunc (srl x, c)) -> (srl (trunc x), c)Chris Lattner2006-05-061-0/+32
| | | | llvm-svn: 28138
* Implement ComputeMaskedBits/SimplifyDemandedBits for ISD::TRUNCATEChris Lattner2006-05-051-0/+18
| | | | llvm-svn: 28135
* Print a grouping around inline asm blocks so that we can tell when we areChris Lattner2006-05-051-1/+2
| | | | | | using them. llvm-svn: 28134
* Print *some* grouping around inline asm blocks so we know where they are.Chris Lattner2006-05-051-1/+2
| | | | llvm-svn: 28133
* Teach the code generator to use cvtss2sd as extload f32 -> f64Chris Lattner2006-05-052-5/+1
| | | | llvm-svn: 28131
* Need extload patterns after Chris' DAG combiner changesEvan Cheng2006-05-051-1/+11
| | | | llvm-svn: 28127
* Better implementation of truncate. ISel matches it to a pseudo instructionEvan Cheng2006-05-056-240/+162
| | | | | | | | that gets emitted as movl (for r32 to i16, i8) or a movw (for r16 to i8). And if the destination gets allocated a subregister of the source operand, then the instruction will not be emitted at all. llvm-svn: 28119
* New note, Nate, please check to see if I'm full of it :)Chris Lattner2006-05-051-0/+33
| | | | llvm-svn: 28118
* Remove and simplify some more machineinstr/machineoperand stuff.Chris Lattner2006-05-042-15/+15
| | | | llvm-svn: 28105
* Rename MO_VirtualRegister -> MO_Register. Clean up immediate handling.Chris Lattner2006-05-047-13/+13
| | | | llvm-svn: 28104
* Move some methods out of MachineInstr into MachineOperandChris Lattner2006-05-048-25/+23
| | | | llvm-svn: 28102
* There shalt be only one "immediate" operand type!Chris Lattner2006-05-0415-53/+45
| | | | llvm-svn: 28099
* Revert Nate's CR patch from last night, which caused many regressions (e.g. ↵Chris Lattner2006-05-042-26/+9
| | | | | | | | | fhourstones). Loading and storing off R0 isn't what we wanted. Also, taking some CR's out of CRRC seems to cause failures as well. Further investigation is required. llvm-svn: 28097
* Make external globals public; other minor cleanup.Jeff Cohen2006-05-041-15/+17
| | | | llvm-svn: 28096
* Make Intel syntax the default when LLVM is built with VC++.Jeff Cohen2006-05-041-1/+6
| | | | llvm-svn: 28095
* Remove a bunch more dead V9 specific stuffChris Lattner2006-05-041-6/+1
| | | | llvm-svn: 28094
* Remove a bunch more SparcV9 specific stuffChris Lattner2006-05-0410-42/+10
| | | | llvm-svn: 28093
* Remove some more V9-specific stuff.Chris Lattner2006-05-042-7/+1
| | | | llvm-svn: 28092
* Remove some more unused stuff from MachineInstr that was leftover from V9.Chris Lattner2006-05-046-31/+0
| | | | llvm-svn: 28091
* Simplify handling of relocationsChris Lattner2006-05-041-24/+38
| | | | llvm-svn: 28090
* Use movsd to shuffle in the lowest two elements of a v4f32 / v4i32 vector whenEvan Cheng2006-05-031-0/+8
| | | | | | movlps cannot be used (e.g. when load from m64 has multiple uses). llvm-svn: 28089
* Change from using MachineRelocation ctors to using static methodsChris Lattner2006-05-033-8/+8
| | | | | | in MachineRelocation to create Relocations. llvm-svn: 28088
* inline a simple methodChris Lattner2006-05-031-10/+7
| | | | llvm-svn: 28083
* Suck block address tracking out of targets into the JIT Emitter. ThisChris Lattner2006-05-033-47/+19
| | | | | | | simplifies the MachineCodeEmitter interface just a little bit and makes BasicBlocks work like constant pools and jump tables. llvm-svn: 28082
* Fix a bug in Owen's checkin that broke the CBE on all non sparc v9 platforms.Chris Lattner2006-05-031-1/+1
| | | | llvm-svn: 28081
* Teach the x86 jit how to handle jump tables not directly used by a jumpNate Begeman2006-05-031-0/+3
| | | | | | instruction. llvm-svn: 28080
* Refactor TargetMachine, pushing handling of TargetData into the ↵Owen Anderson2006-05-0319-49/+53
| | | | | | | | target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference. This fixes PR 759. llvm-svn: 28074
* Change the BasicBlockAddrs map to be a vector, indexed by MBB number.Chris Lattner2006-05-032-14/+17
| | | | llvm-svn: 28069
* Keep the alpha JIT similar to the PPC/X86 jitsChris Lattner2006-05-031-4/+6
| | | | llvm-svn: 28068
* Several related changes:Chris Lattner2006-05-023-5/+0
| | | | | | | | | | | | | 1. Change several methods in the MachineCodeEmitter class to be pure virtual. 2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them from the MachineCodeEmitter interface, and reducing the amount of target- specific code. 3. Change the JITEmitter so that it allocates constantpools and jump tables *right* next to the functions that they belong to, instead of in a separate pool of memory. This makes all memory for a function be contiguous, and means the JITEmitter only tracks one block of memory now. llvm-svn: 28065
OpenPOWER on IntegriCloud